From 1213a435dd429f9a592ef6a08524249921050800 Mon Sep 17 00:00:00 2001 From: karkkieila Date: Tue, 5 Sep 2023 09:44:28 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20rage/ohj?= =?UTF-8?q?elmointi-23@7465c0df0d6c6cd771b7751dc72388648f1adc83=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 2 +- 404/index.html | 2 +- arvostelu-ja-kokeet/index.html | 2 +- credits/index.html | 2 +- index.html | 2 +- kaikki-tehtavat/index.html | 2 +- osa-1/1-ohjelmoinnin-aloittaminen/index.html | 2 +- osa-1/2-tietoa-kayttajalta/index.html | 2 +- osa-1/3-lisaa-muuttujista/index.html | 4 ++-- osa-1/4-laskentaa-luvuilla/index.html | 2 +- osa-1/5-ehtorakenne/index.html | 2 +- osa-1/index.html | 2 +- osa-10/1-luokkahierarkiat/index.html | 2 +- osa-10/2-nakyvyysmaareet/index.html | 2 +- osa-10/3-olio-ohjelmoinnin-tekniikoita/index.html | 2 +- osa-10/4-lisaa-esimerkkeja/index.html | 2 +- osa-10/index.html | 2 +- osa-11/1-koosteet/index.html | 2 +- osa-11/2-lisaa-koosteesta/index.html | 2 +- osa-11/3-rekursio/index.html | 2 +- osa-11/4-lisaa-esimerkkeja/index.html | 2 +- osa-11/index.html | 2 +- osa-12/1-funktio-parametrina/index.html | 2 +- osa-12/2-generaattorit/index.html | 2 +- osa-12/3-funktionaalista-ohjelmointia/index.html | 2 +- osa-12/4-saannolliset-lausekkeet/index.html | 2 +- osa-12/index.html | 2 +- osa-13/1-pygame-kayttoon/index.html | 2 +- osa-13/2-animaatio/index.html | 2 +- osa-13/3-tapahtumat/index.html | 2 +- osa-13/4-lisaa-tekniikoita/index.html | 2 +- osa-13/index.html | 2 +- osa-14/1-peliprojekti/index.html | 2 +- osa-14/2-robo-ja-laatikot/index.html | 2 +- osa-14/3-pelin-viimeistely/index.html | 2 +- osa-14/4-oma-peli/index.html | 6 +++--- osa-14/index.html | 2 +- osa-2/1-ohjelmoinnin-termeja/index.html | 2 +- osa-2/2-else-elif/index.html | 2 +- "osa-2/3-ehtojen-yhdist\303\244minen/index.html" | 2 +- osa-2/4-yksinkertainen-silmukka/index.html | 2 +- osa-2/index.html | 2 +- osa-3/1-ehdot-silmukoissa/index.html | 2 +- osa-3/2-merkkijonojen-kasittely/index.html | 2 +- osa-3/3-lisaa-silmukoista/index.html | 2 +- osa-3/4-omat-funktiot/index.html | 2 +- osa-3/index.html | 2 +- osa-4/1-vscode/index.html | 2 +- osa-4/2-lisaa-funktioista/index.html | 2 +- osa-4/3-listat/index.html | 2 +- osa-4/4-silmukat-ja-iterointi/index.html | 2 +- osa-4/5-tulostuksen-muotoilu/index.html | 2 +- osa-4/6-lisaa-rakenteista/index.html | 2 +- osa-4/index.html | 2 +- osa-5/1-lisaa-listoja/index.html | 2 +- osa-5/2-viittaukset/index.html | 2 +- osa-5/3-dictionary/index.html | 2 +- osa-5/4-tuple/index.html | 2 +- osa-5/index.html | 2 +- osa-6/1-tiedostojen-lukeminen/index.html | 2 +- osa-6/2-tiedostojen-kirjoittaminen/index.html | 2 +- osa-6/3-virheet/index.html | 2 +- osa-6/4-paikalliset-muuttujat/index.html | 2 +- osa-6/index.html | 2 +- osa-7/1-moduulit/index.html | 2 +- osa-7/2-satunnaisuus/index.html | 2 +- osa-7/3-aikojen-kasittely/index.html | 2 +- osa-7/4-datan-kasittely/index.html | 2 +- osa-7/5-omat-moduulit/index.html | 2 +- osa-7/6-lisaa-pythonista/index.html | 2 +- osa-7/index.html | 2 +- osa-8/1-oliot-ja-metodit/index.html | 2 +- osa-8/2-luokat-ja-oliot/index.html | 2 +- osa-8/3-omat-luokat/index.html | 2 +- osa-8/4-metodit-omissa-luokissa/index.html | 2 +- osa-8/5-lisaa-esimerkkeja/index.html | 2 +- osa-8/index.html | 2 +- osa-9/1-oliot-ja-viittaukset/index.html | 2 +- osa-9/2-oliot-attribuuttina/index.html | 2 +- osa-9/3-kapselointi/index.html | 2 +- osa-9/4-metodien-nakyvyys/index.html | 2 +- osa-9/5-staattiset-piirteet/index.html | 2 +- osa-9/6-lisaa-esimerkkeja/index.html | 2 +- osa-9/index.html | 2 +- page-data/index/page-data.json | 2 +- page-data/kaikki-tehtavat/page-data.json | 2 +- page-data/osa-1/1-ohjelmoinnin-aloittaminen/page-data.json | 2 +- page-data/osa-1/2-tietoa-kayttajalta/page-data.json | 2 +- page-data/osa-1/3-lisaa-muuttujista/page-data.json | 2 +- page-data/osa-1/4-laskentaa-luvuilla/page-data.json | 2 +- page-data/osa-1/5-ehtorakenne/page-data.json | 2 +- page-data/osa-1/page-data.json | 2 +- page-data/osa-10/1-luokkahierarkiat/page-data.json | 2 +- page-data/osa-10/2-nakyvyysmaareet/page-data.json | 2 +- .../osa-10/3-olio-ohjelmoinnin-tekniikoita/page-data.json | 2 +- page-data/osa-10/4-lisaa-esimerkkeja/page-data.json | 2 +- page-data/osa-10/page-data.json | 2 +- page-data/osa-11/1-koosteet/page-data.json | 2 +- page-data/osa-11/2-lisaa-koosteesta/page-data.json | 2 +- page-data/osa-11/3-rekursio/page-data.json | 2 +- page-data/osa-11/4-lisaa-esimerkkeja/page-data.json | 2 +- page-data/osa-11/page-data.json | 2 +- page-data/osa-12/1-funktio-parametrina/page-data.json | 2 +- page-data/osa-12/2-generaattorit/page-data.json | 2 +- .../osa-12/3-funktionaalista-ohjelmointia/page-data.json | 2 +- page-data/osa-12/4-saannolliset-lausekkeet/page-data.json | 2 +- page-data/osa-12/page-data.json | 2 +- page-data/osa-13/1-pygame-kayttoon/page-data.json | 2 +- page-data/osa-13/2-animaatio/page-data.json | 2 +- page-data/osa-13/3-tapahtumat/page-data.json | 2 +- page-data/osa-13/4-lisaa-tekniikoita/page-data.json | 2 +- page-data/osa-13/page-data.json | 2 +- page-data/osa-14/1-peliprojekti/page-data.json | 2 +- page-data/osa-14/2-robo-ja-laatikot/page-data.json | 2 +- page-data/osa-14/3-pelin-viimeistely/page-data.json | 2 +- page-data/osa-14/4-oma-peli/page-data.json | 2 +- page-data/osa-14/page-data.json | 2 +- page-data/osa-2/1-ohjelmoinnin-termeja/page-data.json | 2 +- page-data/osa-2/2-else-elif/page-data.json | 2 +- .../osa-2/3-ehtojen-yhdist\303\244minen/page-data.json" | 2 +- page-data/osa-2/4-yksinkertainen-silmukka/page-data.json | 2 +- page-data/osa-2/page-data.json | 2 +- page-data/osa-3/1-ehdot-silmukoissa/page-data.json | 2 +- page-data/osa-3/2-merkkijonojen-kasittely/page-data.json | 2 +- page-data/osa-3/3-lisaa-silmukoista/page-data.json | 2 +- page-data/osa-3/4-omat-funktiot/page-data.json | 2 +- page-data/osa-3/page-data.json | 2 +- page-data/osa-4/1-vscode/page-data.json | 2 +- page-data/osa-4/2-lisaa-funktioista/page-data.json | 2 +- page-data/osa-4/3-listat/page-data.json | 2 +- page-data/osa-4/4-silmukat-ja-iterointi/page-data.json | 2 +- page-data/osa-4/5-tulostuksen-muotoilu/page-data.json | 2 +- page-data/osa-4/6-lisaa-rakenteista/page-data.json | 2 +- page-data/osa-4/page-data.json | 2 +- page-data/osa-5/1-lisaa-listoja/page-data.json | 2 +- page-data/osa-5/2-viittaukset/page-data.json | 2 +- page-data/osa-5/3-dictionary/page-data.json | 2 +- page-data/osa-5/4-tuple/page-data.json | 2 +- page-data/osa-5/page-data.json | 2 +- page-data/osa-6/1-tiedostojen-lukeminen/page-data.json | 2 +- page-data/osa-6/2-tiedostojen-kirjoittaminen/page-data.json | 2 +- page-data/osa-6/3-virheet/page-data.json | 2 +- page-data/osa-6/4-paikalliset-muuttujat/page-data.json | 2 +- page-data/osa-6/page-data.json | 2 +- page-data/osa-7/1-moduulit/page-data.json | 2 +- page-data/osa-7/2-satunnaisuus/page-data.json | 2 +- page-data/osa-7/3-aikojen-kasittely/page-data.json | 2 +- page-data/osa-7/4-datan-kasittely/page-data.json | 2 +- page-data/osa-7/5-omat-moduulit/page-data.json | 2 +- page-data/osa-7/6-lisaa-pythonista/page-data.json | 2 +- page-data/osa-7/page-data.json | 2 +- page-data/osa-8/1-oliot-ja-metodit/page-data.json | 2 +- page-data/osa-8/2-luokat-ja-oliot/page-data.json | 2 +- page-data/osa-8/3-omat-luokat/page-data.json | 2 +- page-data/osa-8/4-metodit-omissa-luokissa/page-data.json | 2 +- page-data/osa-8/5-lisaa-esimerkkeja/page-data.json | 2 +- page-data/osa-8/page-data.json | 2 +- page-data/osa-9/1-oliot-ja-viittaukset/page-data.json | 2 +- page-data/osa-9/2-oliot-attribuuttina/page-data.json | 2 +- page-data/osa-9/3-kapselointi/page-data.json | 2 +- page-data/osa-9/4-metodien-nakyvyys/page-data.json | 2 +- page-data/osa-9/5-staattiset-piirteet/page-data.json | 2 +- page-data/osa-9/6-lisaa-esimerkkeja/page-data.json | 2 +- page-data/osa-9/page-data.json | 2 +- report-issue/index.html | 2 +- sanasto/index.html | 2 +- sign-in/index.html | 2 +- sign-up/index.html | 2 +- tuki/index.html | 2 +- usein-kysytyt-kysymykset/index.html | 2 +- verkkotentti-ohja/index.html | 2 +- verkkotentti-ohpe/index.html | 2 +- verkkotentti/index.html | 2 +- virheilmoitukset/index.html | 2 +- 174 files changed, 177 insertions(+), 177 deletions(-) diff --git a/404.html b/404.html index ae7b26bb0..80e9f3212 100644 --- a/404.html +++ b/404.html @@ -134,4 +134,4 @@ } } }) -
\ No newline at end of file +
\ No newline at end of file diff --git a/404/index.html b/404/index.html index d57694339..848e4d20a 100644 --- a/404/index.html +++ b/404/index.html @@ -134,4 +134,4 @@ } } }) -
\ No newline at end of file +
\ No newline at end of file diff --git a/arvostelu-ja-kokeet/index.html b/arvostelu-ja-kokeet/index.html index 1bdbe934c..ca9964f93 100644 --- a/arvostelu-ja-kokeet/index.html +++ b/arvostelu-ja-kokeet/index.html @@ -183,4 +183,4 @@ hylätty -

Arvostelu perustuu sekä tehtyihin tehtäviin (50 % kokonaispisteistä) että kokeeseen (50 % kokonaispisteistä). Tämä tarkoittaa, että arvosteluasteikon kokonaispisteet saadaan laskemalla tämän sivun pistevisualisaation (sininen pallo oikeassa alakulmassa) kurssipisteet ja saamasi koepisteet yhteen.

Kurssin läpipääsyyn vaaditaan vähintään 25% jokaisen osan ohjelmointitehtävien pisteistä.

Koeleikkuri

Kokeesta tulee saada vähintään puolet pisteistä kurssin läpäisemiseksi.

\ No newline at end of file +

Arvostelu perustuu sekä tehtyihin tehtäviin (50 % kokonaispisteistä) että kokeeseen (50 % kokonaispisteistä). Tämä tarkoittaa, että arvosteluasteikon kokonaispisteet saadaan laskemalla tämän sivun pistevisualisaation (sininen pallo oikeassa alakulmassa) kurssipisteet ja saamasi koepisteet yhteen.

Kurssin läpipääsyyn vaaditaan vähintään 25% jokaisen osan ohjelmointitehtävien pisteistä.

Koeleikkuri

Kokeesta tulee saada vähintään puolet pisteistä kurssin läpäisemiseksi.

\ No newline at end of file diff --git a/credits/index.html b/credits/index.html index bcb24ed9a..4adf9a079 100644 --- a/credits/index.html +++ b/credits/index.html @@ -134,4 +134,4 @@ } } }) -

Kiitokset ja materiaalista

Kurssin on tehnyt Helsingin yliopiston Agile Education Research -tutkimusryhmä.

Kurssimateriaali

Kurssimateriaalin ja tehtävien tekijät ovat Erkki Kaila, Antti Laaksonen ja Matti Luukkainen. Muutama kurssin tehtävistä on Arto Hellaksen (né Vihavainen) käsialaa.

Kurssin materiaali on lisensoitu Creative Commons BY-NC-SA 4.0 -lisenssillä, joten voit käyttää ja levittää sitä vapaasti, kunhan alkuperäisten tekijöiden nimiä ei poisteta. Jos teet muutoksia materiaaliin ja haluat levittää muunneltua versiota, se täytyy lisensoida samalla lisenssillä. Materiaalien käyttö kaupalliseen tarkoitukseen on ilman erillistä lupaa kielletty.

Kurssilla käytössä oleva teknologia

Kurssisivuston ovat tehneet Henrik Nygren ja Antti Leinonen. Helsingin yliopiston Agile Education Research -tutkimusryhmä on luonut kurssilla käytetyn ohjelmointitehtävien palautusympäristön (Test My Code) ja sen liitännäiset ohjelmointiympäristöihin, kurssimateriaalissa olevan kyselyjärjestelmän ja muut toiminnot.

\ No newline at end of file +

Kiitokset ja materiaalista

Kurssin on tehnyt Helsingin yliopiston Agile Education Research -tutkimusryhmä.

Kurssimateriaali

Kurssimateriaalin ja tehtävien tekijät ovat Erkki Kaila, Antti Laaksonen ja Matti Luukkainen. Muutama kurssin tehtävistä on Arto Hellaksen (né Vihavainen) käsialaa.

Kurssin materiaali on lisensoitu Creative Commons BY-NC-SA 4.0 -lisenssillä, joten voit käyttää ja levittää sitä vapaasti, kunhan alkuperäisten tekijöiden nimiä ei poisteta. Jos teet muutoksia materiaaliin ja haluat levittää muunneltua versiota, se täytyy lisensoida samalla lisenssillä. Materiaalien käyttö kaupalliseen tarkoitukseen on ilman erillistä lupaa kielletty.

Kurssilla käytössä oleva teknologia

Kurssisivuston ovat tehneet Henrik Nygren ja Antti Leinonen. Helsingin yliopiston Agile Education Research -tutkimusryhmä on luonut kurssilla käytetyn ohjelmointitehtävien palautusympäristön (Test My Code) ja sen liitännäiset ohjelmointiympäristöihin, kurssimateriaalissa olevan kyselyjärjestelmän ja muut toiminnot.

\ No newline at end of file diff --git a/index.html b/index.html index 1af83b0ce..a5bfd6cac 100644 --- a/index.html +++ b/index.html @@ -232,4 +232,4 @@

Luentotallenteet
OsaLuentotallenne
Osa 1Luentotallenne (2022)
Osa 2Lentotallenne, osa 1 (2021)
Lentotallenne, osa 2 (2021)
Osa 3Luentotallenne (2022)
Osa 4Luentotallenne (2022)
Osa 5Luentotallenne (2022)
Osa 6Luentotallenne (2021)
Osa 7Luentotallenne (2021)
Osa 8Luentotallenne (2022)
Osa 9Luentotallenne (2022)
Osa 10Luentotallenne (2022)
Osa 11Luentotallenne (2021)
Osa 12Luentotallenne (2021)
Osa 13Ei tallennetta
Osa 14Ei tallennetta
\ No newline at end of file +
\ No newline at end of file diff --git a/kaikki-tehtavat/index.html b/kaikki-tehtavat/index.html index 1d8f1d38d..3fb4d6739 100644 --- a/kaikki-tehtavat/index.html +++ b/kaikki-tehtavat/index.html @@ -136,4 +136,4 @@ } } }) -
\ No newline at end of file +
\ No newline at end of file diff --git a/osa-1/1-ohjelmoinnin-aloittaminen/index.html b/osa-1/1-ohjelmoinnin-aloittaminen/index.html index 5216eea52..0db48a61e 100644 --- a/osa-1/1-ohjelmoinnin-aloittaminen/index.html +++ b/osa-1/1-ohjelmoinnin-aloittaminen/index.html @@ -231,4 +231,4 @@ # vuodessa on 365 päivää ja jokaisessa 24 tuntia print(365*24)

Kun ohjelma suoritetaan, kommenteissa oleva teksti ei näy mitenkään ohjelman käyttäjälle:

Esimerkkitulostus

Tuntien määrä vuodessa: 8760

Lyhyempi kommentti voi olla myös rivin lopussa:

print("Tuntien määrä vuodessa:")
-print(365*24) # 365 päivää, 24 tuntia päivässä

Kertauskysely tämän osan asioihin liittyen:

Loading...
:
Loading...

Log in to view the quiz

Seuraava osa:

\ No newline at end of file +print(365*24) # 365 päivää, 24 tuntia päivässä

Kertauskysely tämän osan asioihin liittyen:

Loading...
:
Loading...

Log in to view the quiz

Seuraava osa:

\ No newline at end of file diff --git a/osa-1/2-tietoa-kayttajalta/index.html b/osa-1/2-tietoa-kayttajalta/index.html index 063a6f692..87d830c8d 100644 --- a/osa-1/2-tietoa-kayttajalta/index.html +++ b/osa-1/2-tietoa-kayttajalta/index.html @@ -249,4 +249,4 @@ print("Osoite on nyt " + osoite)

Esimerkkisuoritus:

Esimerkkitulostus

Mikä on osoitteesi? Pythonpolku 10 Anna uusi osoite: Ohjelmoijanraitti 230 -Osoite on nyt Ohjelmoijanraitti 230

Kertauskysely tämän osan asioihin liittyen:

Loading...
:
Loading...

Log in to view the quiz

Seuraava osa:

\ No newline at end of file +Osoite on nyt Ohjelmoijanraitti 230

Kertauskysely tämän osan asioihin liittyen:

Loading...
:
Loading...

Log in to view the quiz

Seuraava osa:

\ No newline at end of file diff --git a/osa-1/3-lisaa-muuttujista/index.html b/osa-1/3-lisaa-muuttujista/index.html index d4c5ab69f..18da5cbf6 100644 --- a/osa-1/3-lisaa-muuttujista/index.html +++ b/osa-1/3-lisaa-muuttujista/index.html @@ -210,7 +210,7 @@
  • Osaat käyttää muuttujia eri yhteyksissä
  • Tiedät, millaista tietoa muuttujiin voidaan tallentaa
  • Ymmärrät merkkijonojen sekä kokonais- ja liukulukujen eron
  • -

    Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin.

    Muuttuja luodaan Pythonissa seuraavasti:

    muuttujan_nimi = ...

    Tässä ... tarkoittaa arvoa, joka tallennetaan muuttujaan.

    Esimerkiksi kun luemme input-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:

    nimi = input("Anna nimesi: ")
    +

    Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin.

    Muuttuja luodaan Pythonissa seuraavasti:

    muuttujan_nimi = ...

    Tässä ... tarkoittaa arvoa, joka tallennetaan muuttujaan.

    Esimerkiksi kun luemme input-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:

    nimi = input("Anna nimesi: ")
     print("Moi, " + nimi)
    Esimerkkitulostus

    Anna nimesi: Kummitus Moi, Kummitus

    Muuttujille voidaan antaa arvoja myös esimerkiksi näin:

    etunimi = "Pekka"
     sukunimi = "Pythonen"
    @@ -276,4 +276,4 @@
     luku3 = 3.62
     
     keskiarvo = (luku1 + luku2 + luku3) / 3
    -print(f"Keskiarvo: {keskiarvo}")
    Esimerkkitulostus

    Keskiarvo: 1.6233333333333333

    Kertauskysely tämän osan asioihin liittyen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +print(f"Keskiarvo: {keskiarvo}")
    Esimerkkitulostus

    Keskiarvo: 1.6233333333333333

    Kertauskysely tämän osan asioihin liittyen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-1/4-laskentaa-luvuilla/index.html b/osa-1/4-laskentaa-luvuilla/index.html index 637a09793..5bb174bb0 100644 --- a/osa-1/4-laskentaa-luvuilla/index.html +++ b/osa-1/4-laskentaa-luvuilla/index.html @@ -349,4 +349,4 @@ print("Hei " + nimi + "!") ika = int(input("Mikä on ikäsi? ")) -# ohjelma jatkuu...

    Kertauskysely tämän osan asioihin liittyen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +# ohjelma jatkuu...

    Kertauskysely tämän osan asioihin liittyen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-1/5-ehtorakenne/index.html b/osa-1/5-ehtorakenne/index.html index 08eea9818..0fdefa2ea 100644 --- a/osa-1/5-ehtorakenne/index.html +++ b/osa-1/5-ehtorakenne/index.html @@ -317,4 +317,4 @@ print("a on pienempi kuin 5")
    Esimerkkitulostus

    True a on pienempi kuin 5

    Voimme käyttää koodissa myös sanoja True ja False. Esimerkiksi seuraava koodi suorittaa print-komennon aina, koska ehdon arvona on True:

    ehto = True
     if ehto:
    -    print("Tänne tullaan aina")
    Esimerkkitulostus

    Tänne tullaan aina

    Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa.

    Kertauskysely tämän osan asioihin liittyen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file + print("Tänne tullaan aina")
    Esimerkkitulostus

    Tänne tullaan aina

    Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa.

    Kertauskysely tämän osan asioihin liittyen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-1/index.html b/osa-1/index.html index fe8f6307b..920b4ac29 100644 --- a/osa-1/index.html +++ b/osa-1/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-10/1-luokkahierarkiat/index.html b/osa-10/1-luokkahierarkiat/index.html index cb00abab6..6b7b5549d 100644 --- a/osa-10/1-luokkahierarkiat/index.html +++ b/osa-10/1-luokkahierarkiat/index.html @@ -393,4 +393,4 @@ print(bonus) print(bonus2)
    Esimerkkitulostus

    0.7225 -0.7586250000000001

    Loading
    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +0.7586250000000001

    Loading
    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-10/2-nakyvyysmaareet/index.html b/osa-10/2-nakyvyysmaareet/index.html index b315f441f..3d3f86a8e 100644 --- a/osa-10/2-nakyvyysmaareet/index.html +++ b/osa-10/2-nakyvyysmaareet/index.html @@ -321,4 +321,4 @@ if __name__ == "__main__": jp = Jalkapalloilija("petri pythonen", "pyttis", "hyökkääjä") print(jp) -
    Esimerkkitulostus

    Jalkapalloilija - nimi:Petri Pythonen, lempinimi: Pyttis, pelipaikka: hyökkääjä

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +
    Esimerkkitulostus

    Jalkapalloilija - nimi:Petri Pythonen, lempinimi: Pyttis, pelipaikka: hyökkääjä

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-10/3-olio-ohjelmoinnin-tekniikoita/index.html b/osa-10/3-olio-ohjelmoinnin-tekniikoita/index.html index 0ef01ee77..dd60f1816 100644 --- a/osa-10/3-olio-ohjelmoinnin-tekniikoita/index.html +++ b/osa-10/3-olio-ohjelmoinnin-tekniikoita/index.html @@ -446,4 +446,4 @@ print(kirja.nimi)
    Esimerkkitulostus

    Elämäni Pythoniassa Vanhus ja Java -C-itsemän veljestä

    Loading
    Seuraava osa:

    \ No newline at end of file +C-itsemän veljestä

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-10/4-lisaa-esimerkkeja/index.html b/osa-10/4-lisaa-esimerkkeja/index.html index b39572eab..6034ca8c2 100644 --- a/osa-10/4-lisaa-esimerkkeja/index.html +++ b/osa-10/4-lisaa-esimerkkeja/index.html @@ -501,4 +501,4 @@ tallennuspalvelu = InternetTallennin("amazon-cloud", "mluukkai", "passwrd") sovellus = PuhelinluetteloSovellus(tallennuspalvelu) -sovellus.suorita()

    Kuten aiemmin todettiin, on tämän kaltaisten tekniikoiden käytöllä oma hintansa: koodia tulee enemmän, ja ohjelmoijan tulee harkita milloin se hinta kannattaa maksaa.

    Tässä esitelty tekniikka (joka kulkee ammattijargonissa nimellä dependency injection), missä oliolle annetaan ulkopuolelta käsin sen tarvitsema riippuvuus (eli käytännössä jokin muu olio) on erittäin tyypillinen kikka ammattimaisessa koodauksessa, muun muassa siksi, että se helpottaa ohjelmistojen laajentamista sekä niiden automatisoitua testaamista. Jatkamme teeman käsittelyä kursseilla Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +sovellus.suorita()

    Kuten aiemmin todettiin, on tämän kaltaisten tekniikoiden käytöllä oma hintansa: koodia tulee enemmän, ja ohjelmoijan tulee harkita milloin se hinta kannattaa maksaa.

    Tässä esitelty tekniikka (joka kulkee ammattijargonissa nimellä dependency injection), missä oliolle annetaan ulkopuolelta käsin sen tarvitsema riippuvuus (eli käytännössä jokin muu olio) on erittäin tyypillinen kikka ammattimaisessa koodauksessa, muun muassa siksi, että se helpottaa ohjelmistojen laajentamista sekä niiden automatisoitua testaamista. Jatkamme teeman käsittelyä kursseilla Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-10/index.html b/osa-10/index.html index c7d7e8a3b..bf3b437ea 100644 --- a/osa-10/index.html +++ b/osa-10/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-11/1-koosteet/index.html b/osa-11/1-koosteet/index.html index 98ee350dc..d40bcedf1 100644 --- a/osa-11/1-koosteet/index.html +++ b/osa-11/1-koosteet/index.html @@ -277,4 +277,4 @@ testilista = ["moi", 3, True, "kaikki", -123.344, "heipparallaa", 2, False] pituudet = merkkijonojen_pituudet(testilista) print(pituudet) -
    Esimerkkitulostus

    [3, -1, -1, 6, -1, 12, -1, -1]

    Loading
    Seuraava osa:

    \ No newline at end of file +
    Esimerkkitulostus

    [3, -1, -1, 6, -1, 12, -1, -1]

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-11/2-lisaa-koosteesta/index.html b/osa-11/2-lisaa-koosteesta/index.html index b2032367d..73962a59c 100644 --- a/osa-11/2-lisaa-koosteesta/index.html +++ b/osa-11/2-lisaa-koosteesta/index.html @@ -362,4 +362,4 @@ lista = [-2, 3, 2, 1, 4, -10, 5, 1, 6] kertomat = {luku : kertoma(luku) for luku in lista if luku > 0} print(kertomat) -
    Esimerkkitulostus

    {3: 6, 2: 2, 1: 1, 4: 24, 5: 120, 6: 720}

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +
    Esimerkkitulostus

    {3: 6, 2: 2, 1: 1, 4: 24, 5: 120, 6: 720}

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-11/3-rekursio/index.html b/osa-11/3-rekursio/index.html index a01930c58..ff7ed7f81 100644 --- a/osa-11/3-rekursio/index.html +++ b/osa-11/3-rekursio/index.html @@ -315,4 +315,4 @@ print(binaarihaku(lista, 15, 0, len(lista)-1))
    Esimerkkitulostus

    True True False -False

    Tässä funktiolle binaarihaku annetaan neljä parametria: viite listaan, etsittävä alkio sekä hakualueen vasen ja oikea kohta. Alussa hakualue on koko lista, jolloin vasen kohta on 0 ja oikea kohta on len(lista)-1. Funktio tarkastaa hakualueen keskellä olevan alkion ja joko ilmoittaa, että haluttu alkio löytyi, tai jatkaa hakua vasemmasta tai oikeasta puoliskosta.

    Jos verrataan binäärihakua peräkkäishakuun, algoritmien tehokkuus erottuu selvästi. Peräkkäishaussa alkiota lähdetään etsimään listan alusta ja listaa käydään läpi yksi alkio kerrallaan, kunnes alkio on löytynyt tai on päästy listan loppuun. Jos listan pituus on miljoona alkiota, tarvitaan perättäishaussa koko listan läpikäyntiin miljoona askelta, mutta binäärihaussa askelia tarvitaan vain 20.

    Seuraava osa:

    \ No newline at end of file +False

    Tässä funktiolle binaarihaku annetaan neljä parametria: viite listaan, etsittävä alkio sekä hakualueen vasen ja oikea kohta. Alussa hakualue on koko lista, jolloin vasen kohta on 0 ja oikea kohta on len(lista)-1. Funktio tarkastaa hakualueen keskellä olevan alkion ja joko ilmoittaa, että haluttu alkio löytyi, tai jatkaa hakua vasemmasta tai oikeasta puoliskosta.

    Jos verrataan binäärihakua peräkkäishakuun, algoritmien tehokkuus erottuu selvästi. Peräkkäishaussa alkiota lähdetään etsimään listan alusta ja listaa käydään läpi yksi alkio kerrallaan, kunnes alkio on löytynyt tai on päästy listan loppuun. Jos listan pituus on miljoona alkiota, tarvitaan perättäishaussa koko listan läpikäyntiin miljoona askelta, mutta binäärihaussa askelia tarvitaan vain 20.

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-11/4-lisaa-esimerkkeja/index.html b/osa-11/4-lisaa-esimerkkeja/index.html index 0baed5918..8c217e5da 100644 --- a/osa-11/4-lisaa-esimerkkeja/index.html +++ b/osa-11/4-lisaa-esimerkkeja/index.html @@ -291,4 +291,4 @@ return etsi_alkio(juuri.oikea_lapsi, arvo) return etsi_alkio(juuri.vasen_lapsi, arvo) -
    Loading

    Paluu aikaan ennen rekursiota

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tässä tehtäväsarjassa ei rekursiota tarvitse eikä edes kannata käyttää. Listakoosteita sen sijaan pääsee hyödyntämään!

    Loading
    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +
    Loading

    Paluu aikaan ennen rekursiota

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tässä tehtäväsarjassa ei rekursiota tarvitse eikä edes kannata käyttää. Listakoosteita sen sijaan pääsee hyödyntämään!

    Loading
    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-11/index.html b/osa-11/index.html index 7ddc80da2..0599328eb 100644 --- a/osa-11/index.html +++ b/osa-11/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-12/1-funktio-parametrina/index.html b/osa-12/1-funktio-parametrina/index.html index 585260676..3b67ce65c 100644 --- a/osa-12/1-funktio-parametrina/index.html +++ b/osa-12/1-funktio-parametrina/index.html @@ -378,4 +378,4 @@ kopioi_rivit("eka.txt", "toka.txt", lambda rivi: "Python" in rivi) # Kopioidaan kaikki rivit, jotka eivät pääty pisteeseen - kopioi_rivit("eka.txt", "toka.txt", lambda rivi: rivi[-1] != ".")

    Funktiossa parametrille kriteeri on määritelty oletusarvoksi lambda-lauseke lambda x: True, jonka tuottama anonyymi funktio palauttaa arvon True kaikille syötteille. Niinpä oletuksena kopioidaan kaikki rivit tiedostosta toiseen. Jos käyttäjä antaa kolmannelle parametrille arvon, tämä korvaa oletusarvon.

    Loading
    Seuraava osa:

    \ No newline at end of file + kopioi_rivit("eka.txt", "toka.txt", lambda rivi: rivi[-1] != ".")

    Funktiossa parametrille kriteeri on määritelty oletusarvoksi lambda-lauseke lambda x: True, jonka tuottama anonyymi funktio palauttaa arvon True kaikille syötteille. Niinpä oletuksena kopioidaan kaikki rivit tiedostosta toiseen. Jos käyttäjä antaa kolmannelle parametrille arvon, tämä korvaa oletusarvon.

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-12/2-generaattorit/index.html b/osa-12/2-generaattorit/index.html index 9076472ff..649b3115d 100644 --- a/osa-12/2-generaattorit/index.html +++ b/osa-12/2-generaattorit/index.html @@ -251,4 +251,4 @@ ghi hij ijk -jkl

    Loading
    Seuraava osa:

    \ No newline at end of file +jkl

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-12/3-funktionaalista-ohjelmointia/index.html b/osa-12/3-funktionaalista-ohjelmointia/index.html index 10138b406..fef0a0fce 100644 --- a/osa-12/3-funktionaalista-ohjelmointia/index.html +++ b/osa-12/3-funktionaalista-ohjelmointia/index.html @@ -414,4 +414,4 @@ lukujen_summa = reduce(lambda summa, alkio: summa + alkio, lista) -print(lukujen_summa)

    Jos alkuarvoa ei anneta, toimii listan ensimmäinen luku alkuarvona ja "redusointi" aloitetaan vasta listan toisesta alkiosta.

    Huomaa, että jos käsiteltävän listan alkiot ovat eri tyyppisiä kuin laskettava arvo, on reduce-funktion kolmas parametri välttämätön. Jos yrittäisimme olla tili-esimerkissä käyttämättä alkuarvoa:

    saldot_yhteensa = reduce(saldojen_summaaja, tilit)

    olisi seurauksena virhe

    TypeError: unsupported operand type(s) for +: 'Pankkitili' and 'int'

    sillä reduce-funktion parametri yht_saldo saisi ensimmäisellä kerralla arvokseen listan ensimmäisen pankkitilin ja sen summaaminen pankkitilin saldoon ei olisi mahdollista.

    Loading
    Seuraava osa:

    \ No newline at end of file +print(lukujen_summa)

    Jos alkuarvoa ei anneta, toimii listan ensimmäinen luku alkuarvona ja "redusointi" aloitetaan vasta listan toisesta alkiosta.

    Huomaa, että jos käsiteltävän listan alkiot ovat eri tyyppisiä kuin laskettava arvo, on reduce-funktion kolmas parametri välttämätön. Jos yrittäisimme olla tili-esimerkissä käyttämättä alkuarvoa:

    saldot_yhteensa = reduce(saldojen_summaaja, tilit)

    olisi seurauksena virhe

    TypeError: unsupported operand type(s) for +: 'Pankkitili' and 'int'

    sillä reduce-funktion parametri yht_saldo saisi ensimmäisellä kerralla arvokseen listan ensimmäisen pankkitilin ja sen summaaminen pankkitilin saldoon ei olisi mahdollista.

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-12/4-saannolliset-lausekkeet/index.html b/osa-12/4-saannolliset-lausekkeet/index.html index aa3587f99..7a5af33cb 100644 --- a/osa-12/4-saannolliset-lausekkeet/index.html +++ b/osa-12/4-saannolliset-lausekkeet/index.html @@ -289,4 +289,4 @@ Anna testijono: jarmo the hut Ei osumaa. Anna testijono: jabba the smut -Ei osumaa.

    Loading

    Loppuhuipennus

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tämä tehtävä ei sijainnistaan huolimatta liity mitenkään säännöllisiin lausekkeisiin, mutta luvun Funktio parametrina asia tulee olemaan tarpeen ja myös listakoosteet voivat olla käyttökelpoisia.

    Sovelluksen rakenteelle voi ottaa inspiraatiota osan 10 viimeisestä luvusta.

    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +Ei osumaa.

    Loading

    Loppuhuipennus

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tämä tehtävä ei sijainnistaan huolimatta liity mitenkään säännöllisiin lausekkeisiin, mutta luvun Funktio parametrina asia tulee olemaan tarpeen ja myös listakoosteet voivat olla käyttökelpoisia.

    Sovelluksen rakenteelle voi ottaa inspiraatiota osan 10 viimeisestä luvusta.

    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-12/index.html b/osa-12/index.html index 04f98e3f7..34715a35e 100644 --- a/osa-12/index.html +++ b/osa-12/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-13/1-pygame-kayttoon/index.html b/osa-13/1-pygame-kayttoon/index.html index d24519833..6b0abc349 100644 --- a/osa-13/1-pygame-kayttoon/index.html +++ b/osa-13/1-pygame-kayttoon/index.html @@ -267,4 +267,4 @@ naytto.blit(robo, (300, 0)) naytto.blit(robo, (100, 200))

    Tällöin ikkuna näyttää seuraavalta:

    Seuraava koodi puolestaan piirtää kuvan ikkunan keskelle:

    leveys = robo.get_width()
     korkeus = robo.get_height()
    -naytto.blit(robo, (320-leveys/2, 240-korkeus/2))

    Nyt ikkuna näyttää tältä:

    Tässä metodi get_width antaa kuvan leveyden ja vastaavasti metodi get_height antaa kuvan korkeuden. Ikkunan keskikohta on (320, 240), joten tämän avulla saadaan laskettua sopiva kohta kuvan vasemmalle yläkulmalle niin, että kuva sijoittuu ikkunan keskelle.

    Loading
    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +naytto.blit(robo, (320-leveys/2, 240-korkeus/2))

    Nyt ikkuna näyttää tältä:

    Tässä metodi get_width antaa kuvan leveyden ja vastaavasti metodi get_height antaa kuvan korkeuden. Ikkunan keskikohta on (320, 240), joten tämän avulla saadaan laskettua sopiva kohta kuvan vasemmalle yläkulmalle niin, että kuva sijoittuu ikkunan keskelle.

    Loading
    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-13/2-animaatio/index.html b/osa-13/2-animaatio/index.html index ff77702c2..d2f1850da 100644 --- a/osa-13/2-animaatio/index.html +++ b/osa-13/2-animaatio/index.html @@ -258,4 +258,4 @@ kulma += 0.01 kello.tick(60)

    Ohjelman suoritus näyttää tältä:

    Pyörimisanimaatio saadaan toteutettua trigonometrian avulla: muuttujassa kulma on radiaaneina robotin sijainnin kulma suhteessa ikkunan keskipisteeseen. Tästä saadaan laskettua sini- ja kosinifunktioilla robotin sijainti:

            x = 320+math.cos(kulma)*100-robo.get_width()/2
    -        y = 240+math.sin(kulma)*100-robo.get_height()/2

    Tämä tarkoittaa, että robotin sijainti on ympyrällä, jonka säde on 100. Kosini antaa x-suuntaisen sijainnin ja sini puolestaan y-suuntaisen sijainnin. Jotta animaatio näyttää hyvältä, robotti lisäksi keskitetään niin, että sen keskipiste on ympyrällä.

    Joka kierroksella muuttujan kulma arvo kasvaa 0.01:llä. Koska radiaaneissa täysi ympyrä on 2π eli noin 6.28, robotti pyörii suunnilleen kierroksen verran 10 sekunnissa.

    Loading
    Loading
    Loading
    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file + y = 240+math.sin(kulma)*100-robo.get_height()/2

    Tämä tarkoittaa, että robotin sijainti on ympyrällä, jonka säde on 100. Kosini antaa x-suuntaisen sijainnin ja sini puolestaan y-suuntaisen sijainnin. Jotta animaatio näyttää hyvältä, robotti lisäksi keskitetään niin, että sen keskipiste on ympyrällä.

    Joka kierroksella muuttujan kulma arvo kasvaa 0.01:llä. Koska radiaaneissa täysi ympyrä on 2π eli noin 6.28, robotti pyörii suunnilleen kierroksen verran 10 sekunnissa.

    Loading
    Loading
    Loading
    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-13/3-tapahtumat/index.html b/osa-13/3-tapahtumat/index.html index 1fbc3cde2..7961367e5 100644 --- a/osa-13/3-tapahtumat/index.html +++ b/osa-13/3-tapahtumat/index.html @@ -347,4 +347,4 @@ naytto.blit(robo, (robo_x, robo_y)) pygame.display.flip() - kello.tick(60)

    Ohjelman suoritus voi näyttää tältä:

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file + kello.tick(60)

    Ohjelman suoritus voi näyttää tältä:

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-13/4-lisaa-tekniikoita/index.html b/osa-13/4-lisaa-tekniikoita/index.html index a56d8a079..9ee35af5f 100644 --- a/osa-13/4-lisaa-tekniikoita/index.html +++ b/osa-13/4-lisaa-tekniikoita/index.html @@ -222,4 +222,4 @@ while True: for tapahtuma in pygame.event.get(): if tapahtuma.type == pygame.QUIT: - exit()

    Ohjelman suoritus näyttää seuraavalta:

    Tässä metodi pygame.font.SysFont luo fonttiolion, joka käyttää järjestelmän fonttia Arial kokona 24. Tämän jälkeen olion metodi render luo kuvan, jossa lukee teksti "Moikka!" punaisella värillä, ja tämä kuva piirretään ikkunaan.

    Huomaa, että eri järjestelmissä on saatavilla eri fontit. Jos järjestelmässä ei ole fonttia Arial (mikä tosin on yleinen fontti), yllä oleva koodi käyttää sen sijasta järjestelmän oletusfonttia. Toinen mahdollisuus on käyttää metodia pygame.font.Font, jolle annetaan hakemistossa olevan fonttitiedoston nimi.

    Tehtävät

    Tässä on pari vaikeampaa tehtävää, joiden avulla voit harjoitella lisää tämän luvun asioita.

    Loading
    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file + exit()

    Ohjelman suoritus näyttää seuraavalta:

    Tässä metodi pygame.font.SysFont luo fonttiolion, joka käyttää järjestelmän fonttia Arial kokona 24. Tämän jälkeen olion metodi render luo kuvan, jossa lukee teksti "Moikka!" punaisella värillä, ja tämä kuva piirretään ikkunaan.

    Huomaa, että eri järjestelmissä on saatavilla eri fontit. Jos järjestelmässä ei ole fonttia Arial (mikä tosin on yleinen fontti), yllä oleva koodi käyttää sen sijasta järjestelmän oletusfonttia. Toinen mahdollisuus on käyttää metodia pygame.font.Font, jolle annetaan hakemistossa olevan fonttitiedoston nimi.

    Tehtävät

    Tässä on pari vaikeampaa tehtävää, joiden avulla voit harjoitella lisää tämän luvun asioita.

    Loading
    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-13/index.html b/osa-13/index.html index 37b61c9b3..0f04a8fec 100644 --- a/osa-13/index.html +++ b/osa-13/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-14/1-peliprojekti/index.html b/osa-14/1-peliprojekti/index.html index bbcdfeab2..2b85c0676 100644 --- a/osa-14/1-peliprojekti/index.html +++ b/osa-14/1-peliprojekti/index.html @@ -408,4 +408,4 @@

    Pelisilmukka.display.flip()

    Tällä hetkellä ainoa pelin tunnistama tapahtuma on pelin sulkeminen (esimerkiksi pelaaja painaa ikkunassa olevaa raksia). Tässä tilanteessa peli sulkee itsensä kutsumalla exit-funktiota.

    Näytön piirtäminen toteutetaan käymällä ruudukon sisältö ja piirtämällä jokaista ruutua vastaava kuva oikeaan paikkaan.

    -

    Huomaa, että koordinaatteja x ja y käytetään eri päin eri tilanteissa. Kaksiulotteisen listan indeksoinnissa on luontevaa antaa ensin y ja sitten x, koska ensimmäinen indeksi tarkoittaa riviä ja toinen indeksi tarkoittaa saraketta. Kuitenkin Pygamen metodeissa annetaan ensin x ja y, kuten grafiikassa on yleensä tapana.

    Seuraava osa:

    \ No newline at end of file +

    Huomaa, että koordinaatteja x ja y käytetään eri päin eri tilanteissa. Kaksiulotteisen listan indeksoinnissa on luontevaa antaa ensin y ja sitten x, koska ensimmäinen indeksi tarkoittaa riviä ja toinen indeksi tarkoittaa saraketta. Kuitenkin Pygamen metodeissa annetaan ensin x ja y, kuten grafiikassa on yleensä tapana.

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-14/2-robo-ja-laatikot/index.html b/osa-14/2-robo-ja-laatikot/index.html index 6bda531ab..09c3238ad 100644 --- a/osa-14/2-robo-ja-laatikot/index.html +++ b/osa-14/2-robo-ja-laatikot/index.html @@ -254,4 +254,4 @@

    Refaktorointia?3. Pelin viimeistely

    \ No newline at end of file +

    Refaktorointiin ja koodin laatuun liittyviin asioihin tutustutaan lisää tulevilla kursseilla, kuten Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-14/3-pelin-viimeistely/index.html b/osa-14/3-pelin-viimeistely/index.html index dceb1caba..7f9cadaeb 100644 --- a/osa-14/3-pelin-viimeistely/index.html +++ b/osa-14/3-pelin-viimeistely/index.html @@ -248,4 +248,4 @@

    Peli GitHubiinMontako siirtoa tarvitaan?

    Vaikka pelin ruudukko on melko pieni, peli ei ole helppo. Ensimmäinen haaste on onnistua läpäisemään peli, ja sen jälkeen haasteena on keksiä ratkaisu, jossa siirtojen määrä on mahdollisimman pieni. Kuinka lyhyen ratkaisun onnistut muodostamaan?

    -

    Lyhimmän mahdollisen ratkaisun etsiminen käsin on hyvin vaikeaa, mutta tässäkin voi käyttää apuna ohjelmointia. Kurssilla Tietorakenteet ja algoritmit tutustutaan tekniikoihin, joiden avulla voidaan löytää automaattisesti lyhin mahdollinen ratkaisu peliin.

    Seuraava osa:

    \ No newline at end of file +

    Lyhimmän mahdollisen ratkaisun etsiminen käsin on hyvin vaikeaa, mutta tässäkin voi käyttää apuna ohjelmointia. Kurssilla Tietorakenteet ja algoritmit tutustutaan tekniikoihin, joiden avulla voidaan löytää automaattisesti lyhin mahdollinen ratkaisu peliin.

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-14/4-oma-peli/index.html b/osa-14/4-oma-peli/index.html index 0d5541d55..94961807e 100644 --- a/osa-14/4-oma-peli/index.html +++ b/osa-14/4-oma-peli/index.html @@ -255,9 +255,9 @@

    Vertaisarviointi
    Loading...
    :
    Loading...

    Log in to view the quiz

    +
    Loading...
    :
    Loading...

    Log in to view the quiz

    Loppukysely

    Vastaa ensin osion loppukyselyyn...

    -
    Loading...
    :
    Loading...

    Log in to view the quiz

    +
    Loading...
    :
    Loading...

    Log in to view the quiz

    ...ja sitten vielä koko kurssin loppukyselyyn:

    -
    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +
    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-14/index.html b/osa-14/index.html index 274cf61d7..b02a236a2 100644 --- a/osa-14/index.html +++ b/osa-14/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-2/1-ohjelmoinnin-termeja/index.html b/osa-2/1-ohjelmoinnin-termeja/index.html index c54f2df9a..1bb4ec064 100644 --- a/osa-2/1-ohjelmoinnin-termeja/index.html +++ b/osa-2/1-ohjelmoinnin-termeja/index.html @@ -332,4 +332,4 @@ Palkka 276.0 euroa

    Koska tuntipalkka = 23.0 ja tunnit = 12, vaikuttaa muuttujassa palkka olevan oikea arvo aluksi, mutta kasvatuskomento ei kuitenkaan kasvata muuttujan arvoa. Komento on siis mitä ilmeisemmin virheellinen. Ja toden totta, komento

    palkka * 2

    ainoastaan laskee tuplapalkan mutta ei tee tulokselle mitään. Korjataan komento muotoon, joka tallentaa korotetun palkan muuttujaan palkka:

    palkka *= 2

    Kun ohjelma suoritetaan nyt, huomataan että lopputuloskin on oikea:

    Esimerkkitulostus

    ehto: True palkka alussa: 276.0 palkka kasvatuksen jälkeen: 552.0 -Palkka 552.0 euroa

    Kun ohjelma on kunnossa, tulee debuggaustulosteet ja muu debuggauksen takia kirjoitettu ylimääräinen koodi poistaa.

    Esimerkki oli yksinkertainen ja näin lyhyessä ohjelmassa oleva bugi selviäisi varmasti myös koodia lukemalla. Monesti kuitenkin debug-tulostuksilla pääsee huomattavasti nopeammin jyvälle siitä, missä vika piilee. Tulostamalla voidaan usein varmistua siitä, mitkä osat ohjelmasta toimivat "varmuudella" oikein, ja bugien jäljitys voidaan nopeasti saada kohdistettua niihin koodiriveihin, joissa ongelma todennäköisesti piileskelee.

    Debuggaukseen on olemassa muitakin keinoja kuin debug-tulostusten tekeminen. Palaamme asiaan myöhemmin kurssilla. Sinun kannattaa tästä lähtien kurssilla käyttää debug-tulostamista virheiden etsimiseen. Ohjelmoinnin ammattilaiset eivät selviä työstään ilman debug-tulostuksia, joten on vaikea kuvitella, että aloittelijoidenkin ei kannattaisi laajentaa työkalupakkiaan tältä osin.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +Palkka 552.0 euroa

    Kun ohjelma on kunnossa, tulee debuggaustulosteet ja muu debuggauksen takia kirjoitettu ylimääräinen koodi poistaa.

    Esimerkki oli yksinkertainen ja näin lyhyessä ohjelmassa oleva bugi selviäisi varmasti myös koodia lukemalla. Monesti kuitenkin debug-tulostuksilla pääsee huomattavasti nopeammin jyvälle siitä, missä vika piilee. Tulostamalla voidaan usein varmistua siitä, mitkä osat ohjelmasta toimivat "varmuudella" oikein, ja bugien jäljitys voidaan nopeasti saada kohdistettua niihin koodiriveihin, joissa ongelma todennäköisesti piileskelee.

    Debuggaukseen on olemassa muitakin keinoja kuin debug-tulostusten tekeminen. Palaamme asiaan myöhemmin kurssilla. Sinun kannattaa tästä lähtien kurssilla käyttää debug-tulostamista virheiden etsimiseen. Ohjelmoinnin ammattilaiset eivät selviä työstään ilman debug-tulostuksia, joten on vaikea kuvitella, että aloittelijoidenkin ei kannattaisi laajentaa työkalupakkiaan tältä osin.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-2/2-else-elif/index.html b/osa-2/2-else-elif/index.html index 1ffac6935..b26e5ce33 100644 --- a/osa-2/2-else-elif/index.html +++ b/osa-2/2-else-elif/index.html @@ -282,4 +282,4 @@ Nyt on joulupäivä Kiitos ja hei.

    Huomaa, että ehtolauseessa ei edellisessä esimerkissä ole ollenkaan else-haaraa. Jos käyttäjä syöttää jonkin sellaisen päivämäärän, jota ei täytä ehtoa jossain if- tai elif-lauseessa, ohjelmassa ei suoriteta mitään ehtolauseen kolmesta lohkosta.

    Esimerkkitulostus

    Joulukalenteri Mikä päivä nyt on? 1.1. -Kiitos ja hei.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +Kiitos ja hei.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git "a/osa-2/3-ehtojen-yhdist\303\244minen/index.html" "b/osa-2/3-ehtojen-yhdist\303\244minen/index.html" index 2517de062..6e8e5d00a 100644 --- "a/osa-2/3-ehtojen-yhdist\303\244minen/index.html" +++ "b/osa-2/3-ehtojen-yhdist\303\244minen/index.html" @@ -318,4 +318,4 @@ elif luku > 0 and luku % 2 != 0: print("Luku on pariton") else: - print("Luku on negatiivinen.")

    Tilanteesta riippuu, kumpaa tapaa kannattaa käyttää. Tässä esimerkissä ensimmäinen vaihtoehto tuntuu useimpien mielestä paremmalta.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file + print("Luku on negatiivinen.")

    Tilanteesta riippuu, kumpaa tapaa kannattaa käyttää. Tässä esimerkissä ensimmäinen vaihtoehto tuntuu useimpien mielestä paremmalta.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-2/4-yksinkertainen-silmukka/index.html b/osa-2/4-yksinkertainen-silmukka/index.html index 7d79b2041..d7ff12c12 100644 --- a/osa-2/4-yksinkertainen-silmukka/index.html +++ b/osa-2/4-yksinkertainen-silmukka/index.html @@ -356,4 +356,4 @@ yritykset += 1 tunnukset += tunnus + ", " # ...

    Apumuuttuja saa aluksi arvokseen tyhjän merkkijonon eli merkkijonon, jossa ei ole yhtään merkkiä:

    tunnukset = ""

    Silmukan sisällä merkkijonoa kasvatetaan lisäämällä siihen aina silmukassa syötetty tunnus ja pilkku:

        tunnus = input("Anna PIN-koodi: ")
    -    tunnukset += tunnus + ", "

    Jos käyttäjä syöttäisi tunnukset 1111 2222 1234 olisi muuttujan tunnukset arvo lopulta

    Esimerkkitulostus

    1111, 2222, 1234,

    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi koko toista osaa koskevaan loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file + tunnukset += tunnus + ", "

    Jos käyttäjä syöttäisi tunnukset 1111 2222 1234 olisi muuttujan tunnukset arvo lopulta

    Esimerkkitulostus

    1111, 2222, 1234,

    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi koko toista osaa koskevaan loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-2/index.html b/osa-2/index.html index 42bad50a1..5379e0f0a 100644 --- a/osa-2/index.html +++ b/osa-2/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-3/1-ehdot-silmukoissa/index.html b/osa-3/1-ehdot-silmukoissa/index.html index 7e7ebddc2..0b300917d 100644 --- a/osa-3/1-ehdot-silmukoissa/index.html +++ b/osa-3/1-ehdot-silmukoissa/index.html @@ -314,4 +314,4 @@ lausunto += f"kurssilta {kurssi} " lausunto += f"arvosanan {arvosana}" -print(lausunto)
    Esimerkkitulostus

    Olet saanut kurssilta Ohjelmoinnin perusteet arvosanan 4

    Edellisessä tehtävässä laskettiin lukujen summaa kasvattamalla sen arvoa silmukan sisällä.

    Täsmälleen samalla idealla on mahdollista rakentaa myös merkkijonoa siten, että siihen lisätään yksi osa kerrallaan silmukassa...

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +print(lausunto)
    Esimerkkitulostus

    Olet saanut kurssilta Ohjelmoinnin perusteet arvosanan 4

    Edellisessä tehtävässä laskettiin lukujen summaa kasvattamalla sen arvoa silmukan sisällä.

    Täsmälleen samalla idealla on mahdollista rakentaa myös merkkijonoa siten, että siihen lisätään yksi osa kerrallaan silmukassa...

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-3/2-merkkijonojen-kasittely/index.html b/osa-3/2-merkkijonojen-kasittely/index.html index bf010e25f..d3fa0f509 100644 --- a/osa-3/2-merkkijonojen-kasittely/index.html +++ b/osa-3/2-merkkijonojen-kasittely/index.html @@ -364,4 +364,4 @@ Ei löytynyt Mitä etsit? ippu Löytyi kohdasta 2 -...

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +...

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-3/3-lisaa-silmukoista/index.html b/osa-3/3-lisaa-silmukoista/index.html index 2cf1f1195..bcce4e46f 100644 --- a/osa-3/3-lisaa-silmukoista/index.html +++ b/osa-3/3-lisaa-silmukoista/index.html @@ -336,4 +336,4 @@ 0 1 2 3 0 1 2 0 1 -0

    Nyt sisemmässä silmukassa on käytössä apumuuttuja i, jonka arvo on aina sisempään silmukkaan mentäessä 0. Muuttujan i arvo kasvaa yhden välein, kunnes se on yhtä suuri kuin muuttujan luku nykyinen arvo, joka taas vähenee ulomman silmukan vuoksi kohti nollaa.

    Sisempi silmukka tulostaa apumuuttujan i arvot välilyönnillä eroteltuna samalle riville. Kun sisempi silmukka päättyy, tulostetaan aina rivinvaihto komennolla print.

    Jos et ole täysin varma, että ymmärrät esimerkkikoodin toiminnan, kokeile kopioida koodi Python Tutorin visualisaattoriin ja tarkastele, mitä ohjelma tulostaa ja miten muuttujien arvot vaihtuvat koodin edetessä.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +0

    Nyt sisemmässä silmukassa on käytössä apumuuttuja i, jonka arvo on aina sisempään silmukkaan mentäessä 0. Muuttujan i arvo kasvaa yhden välein, kunnes se on yhtä suuri kuin muuttujan luku nykyinen arvo, joka taas vähenee ulomman silmukan vuoksi kohti nollaa.

    Sisempi silmukka tulostaa apumuuttujan i arvot välilyönnillä eroteltuna samalle riville. Kun sisempi silmukka päättyy, tulostetaan aina rivinvaihto komennolla print.

    Jos et ole täysin varma, että ymmärrät esimerkkikoodin toiminnan, kokeile kopioida koodi Python Tutorin visualisaattoriin ja tarkastele, mitä ohjelma tulostaa ja miten muuttujien arvot vaihtuvat koodin edetessä.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-3/4-omat-funktiot/index.html b/osa-3/4-omat-funktiot/index.html index fbec20191..668a58fed 100644 --- a/osa-3/4-omat-funktiot/index.html +++ b/osa-3/4-omat-funktiot/index.html @@ -274,4 +274,4 @@ tervehdi("Antti") tervehdi("Emilia")
    Esimerkkitulostus

    Hei Emilia -Hei Emilia

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa olevan nimen Emilia.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +Hei Emilia

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa olevan nimen Emilia.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-3/index.html b/osa-3/index.html index ebd8f067b..4287f840a 100644 --- a/osa-3/index.html +++ b/osa-3/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-4/1-vscode/index.html b/osa-4/1-vscode/index.html index e82c6112e..edda3635e 100644 --- a/osa-4/1-vscode/index.html +++ b/osa-4/1-vscode/index.html @@ -313,4 +313,4 @@ 4 1 9 -

    Ohjelmassa voi olla myös useita breakpointeja. Pysähtymisen jälkeen koodi voidaan taas käynnistää sinisellä kolmiolla (Continue) ja suoritus jatkuu, kunnes ohjelma törmää seuraavaan breakpointiin.

    Visuaalinen debuggeri on vaihtoehto debug-tulostuksille, mutta on mieltymyksistä kiinni, mitä debuggaustekniikoita kukin ohjelmoija käyttää. On hyvä kokeilla erilaisia tapoja ja valita itselle sopiva tapa.

    Seuraava osa:

    \ No newline at end of file +

    Ohjelmassa voi olla myös useita breakpointeja. Pysähtymisen jälkeen koodi voidaan taas käynnistää sinisellä kolmiolla (Continue) ja suoritus jatkuu, kunnes ohjelma törmää seuraavaan breakpointiin.

    Visuaalinen debuggeri on vaihtoehto debug-tulostuksille, mutta on mieltymyksistä kiinni, mitä debuggaustekniikoita kukin ohjelmoija käyttää. On hyvä kokeilla erilaisia tapoja ja valita itselle sopiva tapa.

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-4/2-lisaa-funktioista/index.html b/osa-4/2-lisaa-funktioista/index.html index 08229003e..839d47003 100644 --- a/osa-4/2-lisaa-funktioista/index.html +++ b/osa-4/2-lisaa-funktioista/index.html @@ -352,4 +352,4 @@ print(viesti) kerrat -= 1

    Tämä kertoo funktion käyttäjälle, että parametrin viesti on tarkoitus olla merkkijono, kun taas parametrin kerrat on tarkoitus olla kokonaisluku.

    Vastaavasti funktion paluuarvon tyypin voi vihjata funktion määrittelyssä:

    def kysy_nimi() -> str:
         nimi = input("Mikä on nimesi? ")
    -    return nimi

    Tämä kertoo funktion käyttäjälle, että funktion on tarkoitus palauttaa merkkijono.

    Huomaa kuitenkin, että tyyppivihje ainoastaan neuvoo, mikä tyypin tulisi olla, mutta ei valvo sitä. Jos funktiolle annetaan väärän tyyppinen parametri tai se palauttaa väärän tyyppisen arvon, funktio suoritetaan kuitenkin, mutta se toimii mahdollisesti väärin.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file + return nimi

    Tämä kertoo funktion käyttäjälle, että funktion on tarkoitus palauttaa merkkijono.

    Huomaa kuitenkin, että tyyppivihje ainoastaan neuvoo, mikä tyypin tulisi olla, mutta ei valvo sitä. Jos funktiolle annetaan väärän tyyppinen parametri tai se palauttaa väärän tyyppisen arvon, funktio suoritetaan kuitenkin, mutta se toimii mahdollisesti väärin.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-4/3-listat/index.html b/osa-4/3-listat/index.html index 842d9e986..2f80d1926 100644 --- a/osa-4/3-listat/index.html +++ b/osa-4/3-listat/index.html @@ -389,4 +389,4 @@ painot = lue_luvut() print("Pituudet:") -pituudet = lue_luvut()
    Loading
    Loading
    Loading

    Lisää listan käsittelystä

    Pythonissa on paljon muitakin mahdollisuuksia listan käsittelyyn. Voit tutustua niihin Pythonin dokumentaation kautta.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +pituudet = lue_luvut()
    Loading
    Loading
    Loading

    Lisää listan käsittelystä

    Pythonissa on paljon muitakin mahdollisuuksia listan käsittelyyn. Voit tutustua niihin Pythonin dokumentaation kautta.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-4/4-silmukat-ja-iterointi/index.html b/osa-4/4-silmukat-ja-iterointi/index.html index ebdd45593..e66f0d345 100644 --- a/osa-4/4-silmukat-ja-iterointi/index.html +++ b/osa-4/4-silmukat-ja-iterointi/index.html @@ -272,4 +272,4 @@ if alkio parempi kuin paras: paras = alkio -# paras on nyt tiedossa!

    Koodin yksityiskohdat riippuvat siitä minkä tyyppisiä alkioita listalla on ja mikä parhauden/huonouden vertailukriteeri on käytössä. Joissain tilanteissa myös apumuuttujia saatetaan tarvita useampia.

    Harjoitellaan hieman tämän ratkaisumenetelmän käyttöä.

    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +# paras on nyt tiedossa!

    Koodin yksityiskohdat riippuvat siitä minkä tyyppisiä alkioita listalla on ja mikä parhauden/huonouden vertailukriteeri on käytössä. Joissain tilanteissa myös apumuuttujia saatetaan tarvita useampia.

    Harjoitellaan hieman tämän ratkaisumenetelmän käyttöä.

    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-4/5-tulostuksen-muotoilu/index.html b/osa-4/5-tulostuksen-muotoilu/index.html index 5b2e997cb..22cfbd05d 100644 --- a/osa-4/5-tulostuksen-muotoilu/index.html +++ b/osa-4/5-tulostuksen-muotoilu/index.html @@ -227,4 +227,4 @@ ika = 59 kaupunki = "Lappeenranta" tervehdys = f"Hei {nimi}, olet {ika}-vuotias" -print(tervehdys + f", asuinpaikkasi on {kaupunki}")
    Esimerkkitulostus

    Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta

    F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien "parametrien" perusteella.

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +print(tervehdys + f", asuinpaikkasi on {kaupunki}")
    Esimerkkitulostus

    Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta

    F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien "parametrien" perusteella.

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-4/6-lisaa-rakenteista/index.html b/osa-4/6-lisaa-rakenteista/index.html index 36ae0cc36..b6d8d82ea 100644 --- a/osa-4/6-lisaa-rakenteista/index.html +++ b/osa-4/6-lisaa-rakenteista/index.html @@ -338,4 +338,4 @@ print(analyysin_tulos) # ohjelman käynnistys -main()
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +main()
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-4/index.html b/osa-4/index.html index 159dc9152..c5b4ea16b 100644 --- a/osa-4/index.html +++ b/osa-4/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-5/1-lisaa-listoja/index.html b/osa-5/1-lisaa-listoja/index.html index 6679461e9..7c422a63e 100644 --- a/osa-5/1-lisaa-listoja/index.html +++ b/osa-5/1-lisaa-listoja/index.html @@ -443,4 +443,4 @@ _ _ 7 8 _ 3 9 _ _ _ _ 1 _ _ _ _ _ 3 3 _ _ _ _ _ _ _ 2 -

    Vastaavalla tavalla on mahdollista kuvata moni tuttu peli (esim. shakki, miinaharava, laivan upotus, mastermind, ...) matriisina. Pelistä riippuu, mikä on sopiva tapa "koodata" pelin tilanne matriisiin.

    Loading
    Loading
    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +

    Vastaavalla tavalla on mahdollista kuvata moni tuttu peli (esim. shakki, miinaharava, laivan upotus, mastermind, ...) matriisina. Pelistä riippuu, mikä on sopiva tapa "koodata" pelin tilanne matriisiin.

    Loading
    Loading
    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-5/2-viittaukset/index.html b/osa-5/2-viittaukset/index.html index f2c5077c1..ebb2beab0 100644 --- a/osa-5/2-viittaukset/index.html +++ b/osa-5/2-viittaukset/index.html @@ -409,4 +409,4 @@ luvut = [1, 4, 2, 5, 3, 6, 4, 7] print(toiseksi_pienin(luvut)) print(luvut)
    Esimerkkitulostus

    2 -[1, 4, 2, 5, 3, 6, 4, 7]

    Koska funktio sorted palauttaa uuden järjestetyn listan, toiseksi pienimmän alkion etsiminen ei enää sotke listan alkuperäistä järjestystä.

    Usein pidetään hyvänä asiana, että funktiot eivät aiheuta sivuvaikutuksia, sillä sivuvaikutukset voivat hankaloittaa ohjelmien toimivuuden varmistamista.

    Sivuvaikutuksettomia funktioita kutsutaan myös puhtaiksi funktioiksi ja erityisesti funktionaalista ohjelmointityyliä käytettäessä funktiot pyritään rakentamaan näin. Palaamme aiheeseen tarkemmin Ohjelmoinnin jatkokurssilla.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +[1, 4, 2, 5, 3, 6, 4, 7]

    Koska funktio sorted palauttaa uuden järjestetyn listan, toiseksi pienimmän alkion etsiminen ei enää sotke listan alkuperäistä järjestystä.

    Usein pidetään hyvänä asiana, että funktiot eivät aiheuta sivuvaikutuksia, sillä sivuvaikutukset voivat hankaloittaa ohjelmien toimivuuden varmistamista.

    Sivuvaikutuksettomia funktioita kutsutaan myös puhtaiksi funktioiksi ja erityisesti funktionaalista ohjelmointityyliä käytettäessä funktiot pyritään rakentamaan näin. Palaamme aiheeseen tarkemmin Ohjelmoinnin jatkokurssilla.

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-5/3-dictionary/index.html b/osa-5/3-dictionary/index.html index e6405f3b2..7473f04ae 100644 --- a/osa-5/3-dictionary/index.html +++ b/osa-5/3-dictionary/index.html @@ -350,4 +350,4 @@ print("Keskipituus on", yhteispituus / len(henkilot))
    Esimerkkitulostus

    Pirjo Python Pekka Pythonen Pedro Python -Keskipituus on 173.0

    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +Keskipituus on 173.0

    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-5/4-tuple/index.html b/osa-5/4-tuple/index.html index 33f2be571..a651881f5 100644 --- a/osa-5/4-tuple/index.html +++ b/osa-5/4-tuple/index.html @@ -236,4 +236,4 @@ print("avain:", avain) print("arvo:", arvo)

    Tässäkin Python käyttää taustalla tupleja: sanakirja.items() palauttaa yksi kerrallaan avain-arvo-parit tuplena, jonka ensimmäinen alkio on avain ja toinen arvo.

    Vielä yksi tuplen käyttötarkoitus on kahden muuttujan arvon vaihtaminen keskenään:

    luku1, luku2 = luku2, luku1

    Yllä oleva koodi vaihtaa keskenään muuttujien luku1 ja luku2 arvot, eli koodi toimii samoin kuin seuraava, apumuuttujaa käyttävä koodi:

    apu = luku1
     luku1 = luku2
    -luku2 = apu
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +luku2 = apu
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-5/index.html b/osa-5/index.html index 185d2ab83..50cf90592 100644 --- a/osa-5/index.html +++ b/osa-5/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-6/1-tiedostojen-lukeminen/index.html b/osa-6/1-tiedostojen-lukeminen/index.html index 31b7a76f9..2e1ab8a0a 100644 --- a/osa-6/1-tiedostojen-lukeminen/index.html +++ b/osa-6/1-tiedostojen-lukeminen/index.html @@ -444,4 +444,4 @@ '080488-123X': 3300, '290274-044S': 4350, '010479-007Z': 2500 -}

    Lopun for-silmukka yhdistää henkilöiden nimet ja niitä vastaavat palkat sanakirjojen avulla.

    Ohjelma huomioi myös tilanteen, jossa henkilön palkkatietoja ei ole olemassa.

    Huomaa, että koska ohjelma käyttää aputietorakenteena sanakirjaa, ei henkilöitä vastaavien rivien järjestyksellä ole merkitystä.

    Loading
    Loading
    Loading
    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +}

    Lopun for-silmukka yhdistää henkilöiden nimet ja niitä vastaavat palkat sanakirjojen avulla.

    Ohjelma huomioi myös tilanteen, jossa henkilön palkkatietoja ei ole olemassa.

    Huomaa, että koska ohjelma käyttää aputietorakenteena sanakirjaa, ei henkilöitä vastaavien rivien järjestyksellä ole merkitystä.

    Loading
    Loading
    Loading
    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-6/2-tiedostojen-kirjoittaminen/index.html b/osa-6/2-tiedostojen-kirjoittaminen/index.html index 5c67104f2..3d1a5bcca 100644 --- a/osa-6/2-tiedostojen-kirjoittaminen/index.html +++ b/osa-6/2-tiedostojen-kirjoittaminen/index.html @@ -299,4 +299,4 @@ viikkopisteet = lue_viikkopisteet("viikkopisteet.csv") print(hae_arvosana("Paula", viikkopisteet)) -
    Esimerkkidata

    3

    Jos ohjelmasta halutaan muuttaa tai korjata "yhtä asiaa", esimerkiksi arvosanojen pisterajoja, kohdistuu muokkaus hyvin rakennetussa ohjelmassa ainoastaan yhteen tai muutamaan funktioon. Jos sama logiikka, esimerkiksi arvosanan laskeminen, olisi kopioitu useaan paikkaan, kasvaisi riski, että muutoksia ei muistettaisi tehdä kaikkiin oikeisiin paikkoihin.

    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +
    Esimerkkidata

    3

    Jos ohjelmasta halutaan muuttaa tai korjata "yhtä asiaa", esimerkiksi arvosanojen pisterajoja, kohdistuu muokkaus hyvin rakennetussa ohjelmassa ainoastaan yhteen tai muutamaan funktioon. Jos sama logiikka, esimerkiksi arvosanan laskeminen, olisi kopioitu useaan paikkaan, kasvaisi riski, että muutoksia ei muistettaisi tehdä kaikkiin oikeisiin paikkoihin.

    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-6/3-virheet/index.html b/osa-6/3-virheet/index.html index 80b42db2e..b397ba767 100644 --- a/osa-6/3-virheet/index.html +++ b/osa-6/3-virheet/index.html @@ -314,4 +314,4 @@ print(kertoma(-1)) File "testi.py", line 3, in kertoma raise ValueError("Negatiivinen syöte: " + str(n)) -ValueError: Negatiivinen syöte: -1
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +ValueError: Negatiivinen syöte: -1
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-6/4-paikalliset-muuttujat/index.html b/osa-6/4-paikalliset-muuttujat/index.html index d97eaadb8..47422ff6e 100644 --- a/osa-6/4-paikalliset-muuttujat/index.html +++ b/osa-6/4-paikalliset-muuttujat/index.html @@ -331,4 +331,4 @@ print(analyysin_tulos) # ohjelman käynnistys -main()
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +main()
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-6/index.html b/osa-6/index.html index 5e92aad97..f90ce0418 100644 --- a/osa-6/index.html +++ b/osa-6/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-7/1-moduulit/index.html b/osa-7/1-moduulit/index.html index f4ff3f987..0e2359aa1 100644 --- a/osa-7/1-moduulit/index.html +++ b/osa-7/1-moduulit/index.html @@ -251,4 +251,4 @@
  • https://docs.python.org/3/library/math.html
  • Voimme myös tutkia funktion dir avulla moduulin sisältöä:

    import math
     
    -print(dir(math))

    Funktio antaa listan nimistä, jotka moduuli määrittelee:

    Esimerkkitulostus

    ['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +print(dir(math))

    Funktio antaa listan nimistä, jotka moduuli määrittelee:

    Esimerkkitulostus

    ['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-7/2-satunnaisuus/index.html b/osa-7/2-satunnaisuus/index.html index e57412045..06c62ea73 100644 --- a/osa-7/2-satunnaisuus/index.html +++ b/osa-7/2-satunnaisuus/index.html @@ -252,4 +252,4 @@ seed(1337) # tästä tulee aina sama satunnaisluku -print(randint(1, 100))

    Kun annamme siemenarvon itse, satunnaisuutta käyttävät funktiot antavat samat tulokset ohjelman jokaisella suorituskerralla. Tulokset voivat kuitenkin riippua käytetystä Pythonin versiosta.

    Loading
    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +print(randint(1, 100))

    Kun annamme siemenarvon itse, satunnaisuutta käyttävät funktiot antavat samat tulokset ohjelman jokaisella suorituskerralla. Tulokset voivat kuitenkin riippua käytetystä Pythonin versiosta.

    Loading
    Loading
    Loading
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-7/3-aikojen-kasittely/index.html b/osa-7/3-aikojen-kasittely/index.html index eab305444..63a4f4bcc 100644 --- a/osa-7/3-aikojen-kasittely/index.html +++ b/osa-7/3-aikojen-kasittely/index.html @@ -301,4 +301,4 @@ print("Synnyit viime vuosituhannella") else: print("Synnyit tällä vuosituhannella")
    Esimerkkitulostus

    Anna syntymäpäiväsi muodossa pv.kk.vvvv: 5.11.1986 -Synnyit viime vuosituhannella

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +Synnyit viime vuosituhannella

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-7/4-datan-kasittely/index.html b/osa-7/4-datan-kasittely/index.html index 88dcdbb94..c869514b8 100644 --- a/osa-7/4-datan-kasittely/index.html +++ b/osa-7/4-datan-kasittely/index.html @@ -247,4 +247,4 @@
  • https://docs.python.org/3/library/
  • Standardikirjaston lisäksi verkosta löytyy lukuisia vapaasti käytettäviä kirjastoja eri tarpeisiin. Joitakin yleisesti käytettyjä moduuleja on täällä:

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +
    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-7/5-omat-moduulit/index.html b/osa-7/5-omat-moduulit/index.html index c4a30ebdb..e3df4e869 100644 --- a/osa-7/5-omat-moduulit/index.html +++ b/osa-7/5-omat-moduulit/index.html @@ -292,4 +292,4 @@ print(sanat.vika_sana(mjono)) print(sanat.sanojen_maara(mjono))
    Esimerkkitulostus

    Vesihiisi hississä -3

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file +3

    Loading
    Loading...
    :
    Loading...

    Log in to view the quiz

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    Seuraava osa:

    \ No newline at end of file diff --git a/osa-7/6-lisaa-pythonista/index.html b/osa-7/6-lisaa-pythonista/index.html index 6225e4ee4..600de8874 100644 --- a/osa-7/6-lisaa-pythonista/index.html +++ b/osa-7/6-lisaa-pythonista/index.html @@ -232,4 +232,4 @@ print("Niiden summa on", sum(lista)) testi(1, 2, 3, 4, 5)
    Esimerkkitulostus

    Annoit 5 parametria -Niiden summa on 15

    Loading

    Vastaa kurssin lopuksi loppukyselyyn. Kyselyn tuloksia käytetään kurssimateriaalin kehittämiseen.

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +Niiden summa on 15

    Loading

    Vastaa kurssin lopuksi loppukyselyyn. Kyselyn tuloksia käytetään kurssimateriaalin kehittämiseen.

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-7/index.html b/osa-7/index.html index bec813184..a8fb5d6a1 100644 --- a/osa-7/index.html +++ b/osa-7/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-8/1-oliot-ja-metodit/index.html b/osa-8/1-oliot-ja-metodit/index.html index 905cc7b26..326103b6c 100644 --- a/osa-8/1-oliot-ja-metodit/index.html +++ b/osa-8/1-oliot-ja-metodit/index.html @@ -260,4 +260,4 @@ lista.pop(0) print(lista)
    Esimerkkitulostus

    [1, 2, 3, 5, 1] -[2, 3, 5, 1]

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +[2, 3, 5, 1]

    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-8/2-luokat-ja-oliot/index.html b/osa-8/2-luokat-ja-oliot/index.html index 6b77fbb91..75b492c93 100644 --- a/osa-8/2-luokat-ja-oliot/index.html +++ b/osa-8/2-luokat-ja-oliot/index.html @@ -256,4 +256,4 @@ Kuukausi: 12

    Päiväolion viikonpäivä saadaan siis selville kutsumalla metodia isoweekday:

    viikonpaiva = paiva.isoweekday()

    Koska on kyse metodikutsusta, niin metodin nimen perään laitetaan sulut. Jos sulut unohtuvat, on lopputulos outo:

    viikonpaiva =  paiva.isoweekday
     print("Viikonpäivä:", viikonpaiva)
    Esimerkkitulostus

    Viikonpäivä: <built-in method isoweekday of datetime.date object at 0x10ed66450>

    Päiväolioon liittyvä kuukausi taas on olion muuttuja, ja sen arvo selviää viittaamalla muuttujaan

    kuukausi = paiva.month

    Nyt siis käytössä ei ole sulkuja. Jos tässä tilanteessa yritettäisiin käyttää sulkuja, ohjelma aiheuttaisi virheen:

    kuukausi = paiva.month()
    Esimerkkitulostus
    Traceback (most recent call last): File "", line 1, in -TypeError: 'int' object is not callable
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +TypeError: 'int' object is not callable
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-8/3-omat-luokat/index.html b/osa-8/3-omat-luokat/index.html index 5b3539751..1aadbcedc 100644 --- a/osa-8/3-omat-luokat/index.html +++ b/osa-8/3-omat-luokat/index.html @@ -305,4 +305,4 @@ laita_rahaa_tilille(pekan_tili, 500) print(pekan_tili.saldo)
    Esimerkkitulostus

    0 -500

    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file +500

    Loading
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-8/4-metodit-omissa-luokissa/index.html b/osa-8/4-metodit-omissa-luokissa/index.html index d18eb9852..257d45e28 100644 --- a/osa-8/4-metodit-omissa-luokissa/index.html +++ b/osa-8/4-metodit-omissa-luokissa/index.html @@ -341,4 +341,4 @@ self.saldo += superbonus def __str__(self): - return f"Bonuskortti(nimi={self.nimi}, saldo={self.saldo})"
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file + return f"Bonuskortti(nimi={self.nimi}, saldo={self.saldo})"
    Loading
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-8/5-lisaa-esimerkkeja/index.html b/osa-8/5-lisaa-esimerkkeja/index.html index 13d62d9b2..5cb474158 100644 --- a/osa-8/5-lisaa-esimerkkeja/index.html +++ b/osa-8/5-lisaa-esimerkkeja/index.html @@ -282,4 +282,4 @@ treffit opiskelu 1 -0

    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +0

    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-8/index.html b/osa-8/index.html index b9cd15c1d..afc38a5f2 100644 --- a/osa-8/index.html +++ b/osa-8/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/osa-9/1-oliot-ja-viittaukset/index.html b/osa-9/1-oliot-ja-viittaukset/index.html index 39a88fe54..07935d60e 100644 --- a/osa-9/1-oliot-ja-viittaukset/index.html +++ b/osa-9/1-oliot-ja-viittaukset/index.html @@ -538,4 +538,4 @@ # tämä ei toimi, Henkilo pitaa olla hipsuissa def vanhempi_kuin(self, toinen: Henkilo): - return self.syntynyt < toinen.syntynyt:
    Loading
    Seuraava osa:

    \ No newline at end of file + return self.syntynyt < toinen.syntynyt:
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-9/2-oliot-attribuuttina/index.html b/osa-9/2-oliot-attribuuttina/index.html index e278a0e6d..6b25c08c2 100644 --- a/osa-9/2-oliot-attribuuttina/index.html +++ b/osa-9/2-oliot-attribuuttina/index.html @@ -310,4 +310,4 @@ if pelaaja is not None: print(f"Jukkiksen maalimäärä {p.maalit}") else: - print(f"Jukkis ei pelaa Kumpulan pallossa :(")
    Esimerkkitulostus

    Jukkis ei pelaa Kumpulan pallossa :(

    Loading
    Seuraava osa:

    \ No newline at end of file + print(f"Jukkis ei pelaa Kumpulan pallossa :(")
    Esimerkkitulostus

    Jukkis ei pelaa Kumpulan pallossa :(

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-9/3-kapselointi/index.html b/osa-9/3-kapselointi/index.html index 5ba3f9bef..b8d610f25 100644 --- a/osa-9/3-kapselointi/index.html +++ b/osa-9/3-kapselointi/index.html @@ -344,4 +344,4 @@
  • Tänään söin puuroa
  • Tänään opettelin olio-ohjelmointia
  • Tänään menin ajoissa nukkumaan
  • -
    Loading
    Seuraava osa:

    \ No newline at end of file +
    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-9/4-metodien-nakyvyys/index.html b/osa-9/4-metodien-nakyvyys/index.html index 9b5f9e96f..65dc1b228 100644 --- a/osa-9/4-metodien-nakyvyys/index.html +++ b/osa-9/4-metodien-nakyvyys/index.html @@ -244,4 +244,4 @@ print(kasi1) kasi2 = korttipakka.jaa(5) print(kasi2)

    Ohjelma tulostaa esimerkiksi

    Esimerkkitulostus

    [('pata', 7), ('pata', 11), ('hertta', 7), ('ruutu', 3), ('pata', 4)] -[('risti', 8), ('pata', 12), ('ruutu', 13), ('risti', 11), ('pata', 10)]

    Piilotettuja metodeja tarvitaan yleensä harvemmin kuin piilotettuja attribuutteja. Metodi kannattaa piilottaa, jos asiakas ei tarvitse siihen suoraa pääsyä, ja varsinkin silloin, jos on todennäköistä, että asiakas voisi sotkea olion sisäisen eheyden metodia kutsumalla.

    Loading
    Seuraava osa:

    \ No newline at end of file +[('risti', 8), ('pata', 12), ('ruutu', 13), ('risti', 11), ('pata', 10)]

    Piilotettuja metodeja tarvitaan yleensä harvemmin kuin piilotettuja attribuutteja. Metodi kannattaa piilottaa, jos asiakas ei tarvitse siihen suoraa pääsyä, ja varsinkin silloin, jos on todennäköistä, että asiakas voisi sotkea olion sisäisen eheyden metodia kutsumalla.

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-9/5-staattiset-piirteet/index.html b/osa-9/5-staattiset-piirteet/index.html index fa544dd8b..e81c46d9d 100644 --- a/osa-9/5-staattiset-piirteet/index.html +++ b/osa-9/5-staattiset-piirteet/index.html @@ -354,4 +354,4 @@ return True
    ote = Rekisteriote("Arto Autoilija", "Volvo", "1992", "abc-123")
     
     if Rekisteriote.rekisteritunnus_kelpaa("xyz-789"):
    -    print("Tämä on validi tunnus!")
    Esimerkkitulostus

    Tämä on validi tunnus!

    Rekisteriotteen oikeellisuuden voi tarkistaa kutsumalla metodia (esimerkiksi Rekisteriote.rekisteritunnus_kelpaa("xyz-789"))) ilman, että muodostaa luokasta oliota. Samaa metodia kutsutaan myös uutta oliota muodostaessa luokan konstruktorista. Huomaa kuitenkin, että myös tässä kutsussa viitataan metodiin luokan nimen avulla eikä self-tunnisteella!

    Loading
    Seuraava osa:

    \ No newline at end of file + print("Tämä on validi tunnus!")
    Esimerkkitulostus

    Tämä on validi tunnus!

    Rekisteriotteen oikeellisuuden voi tarkistaa kutsumalla metodia (esimerkiksi Rekisteriote.rekisteritunnus_kelpaa("xyz-789"))) ilman, että muodostaa luokasta oliota. Samaa metodia kutsutaan myös uutta oliota muodostaessa luokan konstruktorista. Huomaa kuitenkin, että myös tässä kutsussa viitataan metodiin luokan nimen avulla eikä self-tunnisteella!

    Loading
    Seuraava osa:

    \ No newline at end of file diff --git a/osa-9/6-lisaa-esimerkkeja/index.html b/osa-9/6-lisaa-esimerkkeja/index.html index ceec29d59..2abac228c 100644 --- a/osa-9/6-lisaa-esimerkkeja/index.html +++ b/osa-9/6-lisaa-esimerkkeja/index.html @@ -384,4 +384,4 @@ print(opiskelija1.tehdyt_kurssit) print(opiskelija2.tehdyt_kurssit)
    Esimerkkitulostus

    ['Ohpe', 'Tira'] -[]

    Loppuhuipennus

    Vaikka seuraava tehtävä on tässä luvussa, et tarvitse tehtävän ratkaisemiseen mitään muuta kun luvussa Oliot attribuuttina esiteltyjä tekniikoita. Tehtävä on käytännössä hyvin samanlainen kuin tuon luvun tehtävät lahjapakkaus ja huoneen lyhin.

    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file +[]

    Loppuhuipennus

    Vaikka seuraava tehtävä on tässä luvussa, et tarvitse tehtävän ratkaisemiseen mitään muuta kun luvussa Oliot attribuuttina esiteltyjä tekniikoita. Tehtävä on käytännössä hyvin samanlainen kuin tuon luvun tehtävät lahjapakkaus ja huoneen lyhin.

    Loading

    Vastaa lopuksi osion loppukyselyyn:

    Loading...
    :
    Loading...

    Log in to view the quiz

    \ No newline at end of file diff --git a/osa-9/index.html b/osa-9/index.html index 833f758ea..371e39143 100644 --- a/osa-9/index.html +++ b/osa-9/index.html @@ -152,4 +152,4 @@ } })
    \ No newline at end of file +
    Loading...
    \ No newline at end of file diff --git a/page-data/index/page-data.json b/page-data/index/page-data.json index 59f9b3315..6f95452e2 100644 --- a/page-data/index/page-data.json +++ b/page-data/index/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-info-page-template-js", "path": "/", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssi alkaa 16.1.2023"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nämä ovat Ohjelmoinnin perusteiden (TKT10002, 5 op) ja Ohjelmoinnin jatkokurssin (TKT10003, 5 op) kurssisivut."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssit suoritetaan tekemällä tehtäviä ja molempien kurssien päätteeksi on pakollinen tentti.\nTarkemmat arvosteluperusteet löytyvät "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"täältä"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osat 1-7 muodostavat Ohjelmoinnin perusteet ja osat 8-14 muodostavan Ohjelmoinnin jatkokurssin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Kurssin suorittamalla "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" voi enää hakea suoraan sisäänpääsyä laitokselle (ns. MOOC-väylä) niin kuin aikaisempina vuosina. Lisätietoa laitoksen hakuväylistä löydät "},{"type":"element","tagName":"a","properties":{"href":"https://opintopolku.fi/app/#!/haku/tietojenk%C3%A4sittelytiede?page=1&facetFilters=teachingLangCode_ffm:FI&tab=los","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"opintopolku.fi-sivustolta"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"1--1-pisteen-lisasuoritukset","style":"position:relative;"},"children":[{"type":"text","value":"1 + 1 pisteen lisäsuoritukset"},{"type":"element","tagName":"a","properties":{"href":"#1--1-pisteen-lisasuoritukset","ariaLabel":"1 1 pisteen lisasuoritukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos olet aiemmin suorittanut 5 pisteen Java-versiot kursseista, voit suorittaa 1 + 1 opintopisteen lisäversiot. Lisää tietoa "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvostelu ja kokeet -osiosta"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"tukivaylat","style":"position:relative;"},"children":[{"type":"text","value":"Tukiväylät"},{"type":"element","tagName":"a","properties":{"href":"#tukivaylat","ariaLabel":"tukivaylat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssilla järjestetään ohjausta kampuksella lähiohjauksena ja etänä Discordin välityksellä.\nKurssin kanaville discordiin pääset "},{"type":"element","tagName":"a","properties":{"href":"https://study.cs.helsinki.fi/discord/join/ohjelmoinnin_mooc","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tästä"}]},{"type":"text","value":".\nKanavilla voit keskustella muiden kurssin opiskelijoiden ja ohjaajien kanssa.\nTarkan ohjausaikataulun löydät "},{"type":"element","tagName":"a","properties":{"href":"/tuki"},"children":[{"type":"text","value":"täältä"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytä ensisijaisesti viestintävälineenä Discordia. Kurssin opettajiin voit olla suoraan yhteydessä sähköpostitse osoitteella "},{"type":"element","tagName":"a","properties":{"href":"mailto:ohjelmoinnin-mooc@helsinki.fi","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ohjelmoinnin-mooc@helsinki.fi"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"aikataulu","style":"position:relative;"},"children":[{"type":"text","value":"Aikataulu"},{"type":"element","tagName":"a","properties":{"href":"#aikataulu","ariaLabel":"aikataulu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssi on auki vuoden 2023 loppuun asti. Tehtäviä voi tehdä omaan tahtiin siihen asti."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"luennot","style":"position:relative;"},"children":[{"type":"text","value":"Luennot"},{"type":"element","tagName":"a","properties":{"href":"#luennot","ariaLabel":"luennot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Liveluentoja voi seurata maanantaisin 4.9.2023 alkaen "},{"type":"element","tagName":"a","properties":{"href":"https://helsinki.zoom.us/j/68982308202?pwd=dFBGak1rUTlUUmZXKzJwOUkzcTUzUT09","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Zoomin kautta"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syksyn 2022 luentotallenteet löytyvät alta."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"luentotallenteet","style":"position:relative;"},"children":[{"type":"text","value":"Luentotallenteet"},{"type":"element","tagName":"a","properties":{"href":"#luentotallenteet","ariaLabel":"luentotallenteet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallenteiden asiasisältö on tätä kurssia vastaava, mutta vuoden 2022 tallenteilta mahdollisesti löytyvät huomautukset esimerkiksi tenttipäivämääriin tms. liittyen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"eivät välttämättä pidä paikkaansa"}]},{"type":"text","value":"!\nTallenteet päivitetään uusiin sitä mukaa, kun liveluentoja pidetään."}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Osa"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Luentotallenne"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 1"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/BMMHrUt69Sw","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 2"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/udsxAy_EwGk","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Lentotallenne, osa 1 (2021)"}]},{"type":"text","value":" "},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":" "},{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/e_6WKe5Sezs","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Lentotallenne, osa 2 (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 3"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/vxYbK85EBBY","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 4"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/SDpPlH8GUWw","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 5"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/Ehk01BPa5JM","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 6"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/h0Ekh_iszHE","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 7"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/35UE8I657pE","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 8"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/A5F1pohaBDo","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 9"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/vU4AA-9pWAM","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 10"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/Hod7Tvfv1w4","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 11"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/Rn7RNTnsIvo","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 12"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/sfhFTHy-ANU","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 13"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Ei tallennetta"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 14"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Ei tallennetta"}]}]}]}]}],"data":{"quirksMode":false}},"html":"

    Kurssi alkaa 16.1.2023

    \n

    Nämä ovat Ohjelmoinnin perusteiden (TKT10002, 5 op) ja Ohjelmoinnin jatkokurssin (TKT10003, 5 op) kurssisivut.

    \n

    Kurssit suoritetaan tekemällä tehtäviä ja molempien kurssien päätteeksi on pakollinen tentti.\nTarkemmat arvosteluperusteet löytyvät täältä

    \n

    Osat 1-7 muodostavat Ohjelmoinnin perusteet ja osat 8-14 muodostavan Ohjelmoinnin jatkokurssin.

    \n

    Huom! Kurssin suorittamalla ei voi enää hakea suoraan sisäänpääsyä laitokselle (ns. MOOC-väylä) niin kuin aikaisempina vuosina. Lisätietoa laitoksen hakuväylistä löydät opintopolku.fi-sivustolta.

    \n

    1 + 1 pisteen lisäsuoritukset

    \n

    Jos olet aiemmin suorittanut 5 pisteen Java-versiot kursseista, voit suorittaa 1 + 1 opintopisteen lisäversiot. Lisää tietoa arvostelu ja kokeet -osiosta.

    \n

    Tukiväylät

    \n

    Kurssilla järjestetään ohjausta kampuksella lähiohjauksena ja etänä Discordin välityksellä.\nKurssin kanaville discordiin pääset tästä.\nKanavilla voit keskustella muiden kurssin opiskelijoiden ja ohjaajien kanssa.\nTarkan ohjausaikataulun löydät täältä.

    \n

    Käytä ensisijaisesti viestintävälineenä Discordia. Kurssin opettajiin voit olla suoraan yhteydessä sähköpostitse osoitteella ohjelmoinnin-mooc@helsinki.fi.

    \n

    Aikataulu

    \n

    Kurssi on auki vuoden 2023 loppuun asti. Tehtäviä voi tehdä omaan tahtiin siihen asti.

    \n

    Luennot

    \n

    Liveluentoja voi seurata maanantaisin 4.9.2023 alkaen Zoomin kautta

    \n

    Syksyn 2022 luentotallenteet löytyvät alta.

    \n

    Luentotallenteet

    \n

    Tallenteiden asiasisältö on tätä kurssia vastaava, mutta vuoden 2022 tallenteilta mahdollisesti löytyvät huomautukset esimerkiksi tenttipäivämääriin tms. liittyen eivät välttämättä pidä paikkaansa!\nTallenteet päivitetään uusiin sitä mukaa, kun liveluentoja pidetään.

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OsaLuentotallenne
    Osa 1Luentotallenne (2022)
    Osa 2Lentotallenne, osa 1 (2021)
    Lentotallenne, osa 2 (2021)
    Osa 3Luentotallenne (2022)
    Osa 4Luentotallenne (2022)
    Osa 5Luentotallenne (2022)
    Osa 6Luentotallenne (2021)
    Osa 7Luentotallenne (2021)
    Osa 8Luentotallenne (2022)
    Osa 9Luentotallenne (2022)
    Osa 10Luentotallenne (2022)
    Osa 11Luentotallenne (2021)
    Osa 12Luentotallenne (2021)
    Osa 13Ei tallennetta
    Osa 14Ei tallennetta
    ","frontmatter":{"path":"/","title":"Tietoa kurssista","banner":true},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/index.md"}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssi alkaa 16.1.2023"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nämä ovat Ohjelmoinnin perusteiden (TKT10002, 5 op) ja Ohjelmoinnin jatkokurssin (TKT10003, 5 op) kurssisivut."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssit suoritetaan tekemällä tehtäviä ja molempien kurssien päätteeksi on pakollinen tentti.\nTarkemmat arvosteluperusteet löytyvät "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"täältä"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osat 1-7 muodostavat Ohjelmoinnin perusteet ja osat 8-14 muodostavan Ohjelmoinnin jatkokurssin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Kurssin suorittamalla "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" voi enää hakea suoraan sisäänpääsyä laitokselle (ns. MOOC-väylä) niin kuin aikaisempina vuosina. Lisätietoa laitoksen hakuväylistä löydät "},{"type":"element","tagName":"a","properties":{"href":"https://opintopolku.fi/app/#!/haku/tietojenk%C3%A4sittelytiede?page=1&facetFilters=teachingLangCode_ffm:FI&tab=los","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"opintopolku.fi-sivustolta"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"1--1-pisteen-lisasuoritukset","style":"position:relative;"},"children":[{"type":"text","value":"1 + 1 pisteen lisäsuoritukset"},{"type":"element","tagName":"a","properties":{"href":"#1--1-pisteen-lisasuoritukset","ariaLabel":"1 1 pisteen lisasuoritukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos olet aiemmin suorittanut 5 pisteen Java-versiot kursseista, voit suorittaa 1 + 1 opintopisteen lisäversiot. Lisää tietoa "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvostelu ja kokeet -osiosta"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"tukivaylat","style":"position:relative;"},"children":[{"type":"text","value":"Tukiväylät"},{"type":"element","tagName":"a","properties":{"href":"#tukivaylat","ariaLabel":"tukivaylat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssilla järjestetään ohjausta kampuksella lähiohjauksena ja etänä Discordin välityksellä.\nKurssin kanaville discordiin pääset "},{"type":"element","tagName":"a","properties":{"href":"https://study.cs.helsinki.fi/discord/join/ohjelmoinnin_mooc","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tästä"}]},{"type":"text","value":".\nKanavilla voit keskustella muiden kurssin opiskelijoiden ja ohjaajien kanssa.\nTarkan ohjausaikataulun löydät "},{"type":"element","tagName":"a","properties":{"href":"/tuki"},"children":[{"type":"text","value":"täältä"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytä ensisijaisesti viestintävälineenä Discordia. Kurssin opettajiin voit olla suoraan yhteydessä sähköpostitse osoitteella "},{"type":"element","tagName":"a","properties":{"href":"mailto:ohjelmoinnin-mooc@helsinki.fi","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ohjelmoinnin-mooc@helsinki.fi"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"aikataulu","style":"position:relative;"},"children":[{"type":"text","value":"Aikataulu"},{"type":"element","tagName":"a","properties":{"href":"#aikataulu","ariaLabel":"aikataulu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssi on auki vuoden 2023 loppuun asti. Tehtäviä voi tehdä omaan tahtiin siihen asti."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"luennot","style":"position:relative;"},"children":[{"type":"text","value":"Luennot"},{"type":"element","tagName":"a","properties":{"href":"#luennot","ariaLabel":"luennot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Liveluentoja voi seurata maanantaisin 4.9.2023 alkaen "},{"type":"element","tagName":"a","properties":{"href":"https://helsinki.zoom.us/j/68982308202?pwd=dFBGak1rUTlUUmZXKzJwOUkzcTUzUT09","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Zoomin kautta"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syksyn 2022 luentotallenteet löytyvät alta."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"luentotallenteet","style":"position:relative;"},"children":[{"type":"text","value":"Luentotallenteet"},{"type":"element","tagName":"a","properties":{"href":"#luentotallenteet","ariaLabel":"luentotallenteet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallenteiden asiasisältö on tätä kurssia vastaava, mutta vuoden 2022 tallenteilta mahdollisesti löytyvät huomautukset esimerkiksi tenttipäivämääriin tms. liittyen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"eivät välttämättä pidä paikkaansa"}]},{"type":"text","value":"!\nTallenteet päivitetään uusiin sitä mukaa, kun liveluentoja pidetään."}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Osa"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Luentotallenne"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 1"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/D747XGyM3Ys","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Avausluento 2023, 4.9.2023"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 2"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/udsxAy_EwGk","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Lentotallenne, osa 1 (2021)"}]},{"type":"text","value":" "},{"type":"element","tagName":"br","properties":{},"children":[]},{"type":"text","value":" "},{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/e_6WKe5Sezs","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Lentotallenne, osa 2 (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 3"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/vxYbK85EBBY","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 4"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/SDpPlH8GUWw","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 5"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/Ehk01BPa5JM","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 6"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/h0Ekh_iszHE","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 7"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/35UE8I657pE","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 8"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/A5F1pohaBDo","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 9"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/vU4AA-9pWAM","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 10"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/Hod7Tvfv1w4","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2022)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 11"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/Rn7RNTnsIvo","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 12"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://youtu.be/sfhFTHy-ANU","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Luentotallenne (2021)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 13"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Ei tallennetta"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Osa 14"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Ei tallennetta"}]}]}]}]}],"data":{"quirksMode":false}},"html":"

    Kurssi alkaa 16.1.2023

    \n

    Nämä ovat Ohjelmoinnin perusteiden (TKT10002, 5 op) ja Ohjelmoinnin jatkokurssin (TKT10003, 5 op) kurssisivut.

    \n

    Kurssit suoritetaan tekemällä tehtäviä ja molempien kurssien päätteeksi on pakollinen tentti.\nTarkemmat arvosteluperusteet löytyvät täältä

    \n

    Osat 1-7 muodostavat Ohjelmoinnin perusteet ja osat 8-14 muodostavan Ohjelmoinnin jatkokurssin.

    \n

    Huom! Kurssin suorittamalla ei voi enää hakea suoraan sisäänpääsyä laitokselle (ns. MOOC-väylä) niin kuin aikaisempina vuosina. Lisätietoa laitoksen hakuväylistä löydät opintopolku.fi-sivustolta.

    \n

    1 + 1 pisteen lisäsuoritukset

    \n

    Jos olet aiemmin suorittanut 5 pisteen Java-versiot kursseista, voit suorittaa 1 + 1 opintopisteen lisäversiot. Lisää tietoa arvostelu ja kokeet -osiosta.

    \n

    Tukiväylät

    \n

    Kurssilla järjestetään ohjausta kampuksella lähiohjauksena ja etänä Discordin välityksellä.\nKurssin kanaville discordiin pääset tästä.\nKanavilla voit keskustella muiden kurssin opiskelijoiden ja ohjaajien kanssa.\nTarkan ohjausaikataulun löydät täältä.

    \n

    Käytä ensisijaisesti viestintävälineenä Discordia. Kurssin opettajiin voit olla suoraan yhteydessä sähköpostitse osoitteella ohjelmoinnin-mooc@helsinki.fi.

    \n

    Aikataulu

    \n

    Kurssi on auki vuoden 2023 loppuun asti. Tehtäviä voi tehdä omaan tahtiin siihen asti.

    \n

    Luennot

    \n

    Liveluentoja voi seurata maanantaisin 4.9.2023 alkaen Zoomin kautta

    \n

    Syksyn 2022 luentotallenteet löytyvät alta.

    \n

    Luentotallenteet

    \n

    Tallenteiden asiasisältö on tätä kurssia vastaava, mutta vuoden 2022 tallenteilta mahdollisesti löytyvät huomautukset esimerkiksi tenttipäivämääriin tms. liittyen eivät välttämättä pidä paikkaansa!\nTallenteet päivitetään uusiin sitä mukaa, kun liveluentoja pidetään.

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OsaLuentotallenne
    Osa 1Avausluento 2023, 4.9.2023
    Osa 2Lentotallenne, osa 1 (2021)
    Lentotallenne, osa 2 (2021)
    Osa 3Luentotallenne (2022)
    Osa 4Luentotallenne (2022)
    Osa 5Luentotallenne (2022)
    Osa 6Luentotallenne (2021)
    Osa 7Luentotallenne (2021)
    Osa 8Luentotallenne (2022)
    Osa 9Luentotallenne (2022)
    Osa 10Luentotallenne (2022)
    Osa 11Luentotallenne (2021)
    Osa 12Luentotallenne (2021)
    Osa 13Ei tallennetta
    Osa 14Ei tallennetta
    ","frontmatter":{"path":"/","title":"Tietoa kurssista","banner":true},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/index.md"}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/kaikki-tehtavat/page-data.json b/page-data/kaikki-tehtavat/page-data.json index 6ab6fef3f..57a6d7934 100644 --- a/page-data/kaikki-tehtavat/page-data.json +++ b/page-data/kaikki-tehtavat/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-info-template-js", "path": "/kaikki-tehtavat", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-all-sections","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    ","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/kaikki-tehtavat.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide","overview":true,"hidden":true},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6.","overview":null,"hidden":null},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08.","overview":null,"hidden":null},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08.","overview":null,"hidden":null},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista","overview":null,"hidden":false},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla","overview":null,"hidden":false},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne","overview":null,"hidden":false},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita","overview":null,"hidden":false},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina","overview":null,"hidden":false},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit","overview":null,"hidden":false},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön","overview":null,"hidden":false},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio","overview":null,"hidden":false},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli","overview":null,"hidden":false},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä","overview":null,"hidden":null},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita","overview":null,"hidden":false},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka","overview":null,"hidden":false},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa","overview":null,"hidden":false},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely","overview":null,"hidden":false},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot","overview":null,"hidden":false},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri","overview":null,"hidden":false},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi","overview":null,"hidden":false},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu","overview":null,"hidden":false},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset","overview":null,"hidden":false},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple","overview":null,"hidden":false},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat","overview":null,"hidden":false},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit","overview":null,"hidden":false},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus","overview":null,"hidden":false},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely","overview":null,"hidden":false},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit","overview":null,"hidden":false},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot","overview":null,"hidden":false},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa","overview":null,"hidden":false},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset","overview":null,"hidden":false},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina","overview":null,"hidden":false},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi","overview":null,"hidden":false},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys","overview":null,"hidden":false},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9","overview":true,"hidden":false},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-all-sections","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    ","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/kaikki-tehtavat.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide","overview":true,"hidden":true},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6.","overview":null,"hidden":null},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08.","overview":null,"hidden":null},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08.","overview":null,"hidden":null},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista","overview":null,"hidden":false},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla","overview":null,"hidden":false},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne","overview":null,"hidden":false},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita","overview":null,"hidden":false},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit","overview":null,"hidden":false},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina","overview":null,"hidden":false},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön","overview":null,"hidden":false},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio","overview":null,"hidden":false},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely","overview":null,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli","overview":null,"hidden":false},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä","overview":null,"hidden":null},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita","overview":null,"hidden":false},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka","overview":null,"hidden":false},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa","overview":null,"hidden":false},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely","overview":null,"hidden":false},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot","overview":null,"hidden":false},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri","overview":null,"hidden":false},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi","overview":null,"hidden":false},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu","overview":null,"hidden":false},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset","overview":null,"hidden":false},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple","overview":null,"hidden":false},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat","overview":null,"hidden":false},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit","overview":null,"hidden":false},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus","overview":null,"hidden":false},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely","overview":null,"hidden":false},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen","overview":null,"hidden":false},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista","overview":null,"hidden":false},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit","overview":null,"hidden":false},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot","overview":null,"hidden":false},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat","overview":null,"hidden":false},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa","overview":null,"hidden":false},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset","overview":null,"hidden":false},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina","overview":null,"hidden":false},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi","overview":null,"hidden":false},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys","overview":null,"hidden":false},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet","overview":null,"hidden":false},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9","overview":true,"hidden":false},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä","overview":null,"hidden":false},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-1/1-ohjelmoinnin-aloittaminen/page-data.json b/page-data/osa-1/1-ohjelmoinnin-aloittaminen/page-data.json index 4693b95f4..b26f019b1 100644 --- a/page-data/osa-1/1-ohjelmoinnin-aloittaminen/page-data.json +++ b/page-data/osa-1/1-ohjelmoinnin-aloittaminen/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-1/1-ohjelmoinnin-aloittaminen", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Olet kirjoittanut ja suorittanut ensimmäisen Python-ohjelmasi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää print-komentoa viestien tulostamiseen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat laskea laskuja ohjelmoimalla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietokoneohjelmat koostuvat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"komennoista"}]},{"type":"text","value":" eli yksinkertaisista toimintaohjeista, joita kone suorittaa yksi kerrallaan. Komennot voivat esimerkiksi suorittaa laskutoimituksia, vertailla koneen muistissa olevia tietoja, aiheuttaa muutoksen ohjelman toimintaan tai viestiä käyttäjän kanssa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aloitetaan ohjelmointiin tutustuminen yksinkertaisesta komennosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":", joka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tulostaa"}]},{"type":"text","value":" tekstiä. Tulostaminen tarkoittaa käytännössä sitä, että ohjelma näyttää tekstiä ruudulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma tulostaa rivin \"Moi kaikki!\":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun suoritamme ohjelman, se tuottaa seuraavan tuloksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että ohjelman koodi tulee kirjoittaa tarkalleen yllä olevalla tavalla, jotta se toimii. Esimerkiksi jos yritämme tulostaa rivin käyttämättä lainausmerkkejä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Moi kaikki!"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ohjelma ei toimi, ja seurauksena on seuraava virheilmoitus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"File \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1\n print(Moi kaikki!)\n ^\nSyntaxError: invalid syntax\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python ei siis osaa tulkita tulostettavaa tekstiä oikein, jos se ei ole lainausmerkeissä."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Hymiö","tmcname":"osa01-01_hymio","height":"300px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka tulostaa ruudulle hymiön: :-)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"ohjelman-eteneminen","style":"position:relative;"},"children":[{"type":"text","value":"Ohjelman eteneminen"},{"type":"element","tagName":"a","properties":{"href":"#ohjelman-eteneminen","ariaLabel":"ohjelman eteneminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun kirjoitamme useita komentoja peräkkäin,\nne suoritetaan järjestyksessä ylhäältä alas.\nEsimerkiksi ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tervetuloa opettelemaan ohjelmointia!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aluksi harjoitellaan print-komennon käyttöä.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä ohjelma tulostaa ruudulle kolme riviä tekstiä.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa ruudulle seuraavat rivit:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tervetuloa opettelemaan ohjelmointia!\nAluksi harjoitellaan print-komennon käyttöä.\nTämä ohjelma tulostaa ruudulle kolme riviä tekstiä."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: seitsemän veljestä","tmcname":"osa01-03_korjaa_ohjelma_7_veljesta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tarkoitus on tulostaa seitsemän veljestä aakkosjärjestyksessä. Ohjelmassa on kuitenkin yksi tai useampi virhe, jonka takia se ei toimi oikein.\nKorjaa ohjelma niin, että veljekset tulostuvat oikeassa järjestyksessä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Simeoni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juhani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lauri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuomas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Timo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ukko Nooa","tmcname":"osa01-02_ukko_nooa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka tulostaa ruudulle seuraavat rivit (tarkalleen annetussa muodossa välimerkkeineen):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ukko Nooa, Ukko Nooa oli kunnon mies.\nKun hän meni saunaan, laittoi laukun naulaan.\nUkko Nooa, Ukko Nooa oli kunnon mies."}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"laskutoimitukset","style":"position:relative;"},"children":[{"type":"text","value":"Laskutoimitukset"},{"type":"element","tagName":"a","properties":{"href":"#laskutoimitukset","ariaLabel":"laskutoimitukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos laitamme "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon sisälle laskutoimituksen, tulostuu ruudulle laskutoimituksen tulos. Esimerkiksi ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa ruudulle seuraavat rivit:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"7\n9\n22"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että laskutoimituksen ympärille ei kirjoiteta lainausmerkkejä. Lainausmerkeillä merkitään "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"merkkijono"}]},{"type":"text","value":", joka tulostetaan ruudulle sellaisenaan. Huomaa siis seuraavien komentojen ero:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2 + 2 * 10\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"22\n2 + 2 * 10"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jälkimmäisessä tapauksessa Python ei laske laskutoimitusta, vaan tulostaa sen ruudulle.\nMerkkijonot siis tulostetaan ruudulle sellaisenaan riippumatta niiden sisällöstä."}]},{"type":"element","tagName":"h2","properties":{"id":"kommentit","style":"position:relative;"},"children":[{"type":"text","value":"Kommentit"},{"type":"element","tagName":"a","properties":{"href":"#kommentit","ariaLabel":"kommentit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos rivin alussa on merkki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"#"}]},{"type":"text","value":", rivi on kommentti, jolloin rivillä oleva teksti ei vaikuta ohjelman toimintaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kommenttien avulla ohjelmoija voi selostaa itselleen ja muille ohjelmoijille, miten ohjelma toimii. Esimerkiksi seuraavassa ohjelmassa kommentit selittävät käytettyä laskukaavaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntien määrä vuodessa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# vuodessa on 365 päivää ja jokaisessa 24 tuntia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"365"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma suoritetaan, kommenteissa oleva teksti ei näy mitenkään ohjelman käyttäjälle:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuntien määrä vuodessa:\n8760"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lyhyempi kommentti voi olla myös rivin lopussa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntien määrä vuodessa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"365"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 365 päivää, 24 tuntia päivässä"}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Minuutit vuodessa","tmcname":"osa01-04_minuuttien_maara_vuodessa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa minuuttien määrän vuodessa. Käytä edellisen esimerkin tapaan Pythonia tekemään laskutoimitus!"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ohjelma tulostaa koodia","tmcname":"osa01-05_ohjelma_tulostaa_koodia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa voidaan käyttää kaksinkertaisten lainausmerkkien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\""}]},{"type":"text","value":" lisäksi myös yksinkertaista lainausmerkkiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"'"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on kätevää, kun haluat tulostaa lainausmerkkejä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'\"Heti takaisin!\", poliisi huusi.'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\"Heti takaisin!\", poliisi huusi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jonka tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"print(\"Moi kaikki!\")"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Olet kirjoittanut ja suorittanut ensimmäisen Python-ohjelmasi
    • \n
    • Osaat käyttää print-komentoa viestien tulostamiseen
    • \n
    • Osaat laskea laskuja ohjelmoimalla
    • \n

    Tietokoneohjelmat koostuvat komennoista eli yksinkertaisista toimintaohjeista, joita kone suorittaa yksi kerrallaan. Komennot voivat esimerkiksi suorittaa laskutoimituksia, vertailla koneen muistissa olevia tietoja, aiheuttaa muutoksen ohjelman toimintaan tai viestiä käyttäjän kanssa.

    Aloitetaan ohjelmointiin tutustuminen yksinkertaisesta komennosta print, joka tulostaa tekstiä. Tulostaminen tarkoittaa käytännössä sitä, että ohjelma näyttää tekstiä ruudulla.

    Esimerkiksi seuraava ohjelma tulostaa rivin \"Moi kaikki!\":

    print(\"Moi kaikki!\")

    Kun suoritamme ohjelman, se tuottaa seuraavan tuloksen:

    Moi kaikki!

    Huomaa, että ohjelman koodi tulee kirjoittaa tarkalleen yllä olevalla tavalla, jotta se toimii. Esimerkiksi jos yritämme tulostaa rivin käyttämättä lainausmerkkejä

    print(Moi kaikki!)

    ohjelma ei toimi, ja seurauksena on seuraava virheilmoitus:

    \nFile \"\", line 1\n  print(Moi kaikki!)\n                   ^\nSyntaxError: invalid syntax\n

    Python ei siis osaa tulkita tulostettavaa tekstiä oikein, jos se ei ole lainausmerkeissä.

    Kirjoita ohjelma, joka tulostaa ruudulle hymiön: :-)

    Ohjelman eteneminen

    Kun kirjoitamme useita komentoja peräkkäin,\nne suoritetaan järjestyksessä ylhäältä alas.\nEsimerkiksi ohjelma

    print(\"Tervetuloa opettelemaan ohjelmointia!\")\nprint(\"Aluksi harjoitellaan print-komennon käyttöä.\")\nprint(\"Tämä ohjelma tulostaa ruudulle kolme riviä tekstiä.\")

    tulostaa ruudulle seuraavat rivit:

    Tervetuloa opettelemaan ohjelmointia!\nAluksi harjoitellaan print-komennon käyttöä.\nTämä ohjelma tulostaa ruudulle kolme riviä tekstiä.

    Ohjelman tarkoitus on tulostaa seitsemän veljestä aakkosjärjestyksessä. Ohjelmassa on kuitenkin yksi tai useampi virhe, jonka takia se ei toimi oikein.\nKorjaa ohjelma niin, että veljekset tulostuvat oikeassa järjestyksessä.

    print(\"Simeoni\")\nprint(\"Juhani\")\nprint(\"Eero\")\nprint(\"Lauri\")\nprint(\"Aapo\")\nprint(\"Tuomas\")\nprint(\"Timo\")

    Kirjoita ohjelma, joka tulostaa ruudulle seuraavat rivit (tarkalleen annetussa muodossa välimerkkeineen):

    Ukko Nooa, Ukko Nooa oli kunnon mies.\nKun hän meni saunaan, laittoi laukun naulaan.\nUkko Nooa, Ukko Nooa oli kunnon mies.

    Laskutoimitukset

    Jos laitamme print-komennon sisälle laskutoimituksen, tulostuu ruudulle laskutoimituksen tulos. Esimerkiksi ohjelma

    print(2 + 5)\nprint(3 * 3)\nprint(2 + 2 * 10)

    tulostaa ruudulle seuraavat rivit:

    7\n9\n22

    Huomaa, että laskutoimituksen ympärille ei kirjoiteta lainausmerkkejä. Lainausmerkeillä merkitään merkkijono, joka tulostetaan ruudulle sellaisenaan. Huomaa siis seuraavien komentojen ero:

    print(2 + 2 * 10)\nprint(\"2 + 2 * 10\")

    Ohjelman tulostus on:

    22\n2 + 2 * 10

    Jälkimmäisessä tapauksessa Python ei laske laskutoimitusta, vaan tulostaa sen ruudulle.\nMerkkijonot siis tulostetaan ruudulle sellaisenaan riippumatta niiden sisällöstä.

    Kommentit

    Jos rivin alussa on merkki #, rivi on kommentti, jolloin rivillä oleva teksti ei vaikuta ohjelman toimintaan.

    Kommenttien avulla ohjelmoija voi selostaa itselleen ja muille ohjelmoijille, miten ohjelma toimii. Esimerkiksi seuraavassa ohjelmassa kommentit selittävät käytettyä laskukaavaa:

    print(\"Tuntien määrä vuodessa:\")\n# vuodessa on 365 päivää ja jokaisessa 24 tuntia\nprint(365*24)

    Kun ohjelma suoritetaan, kommenteissa oleva teksti ei näy mitenkään ohjelman käyttäjälle:

    Tuntien määrä vuodessa:\n8760

    Lyhyempi kommentti voi olla myös rivin lopussa:

    print(\"Tuntien määrä vuodessa:\")\nprint(365*24) # 365 päivää, 24 tuntia päivässä

    Tee ohjelma, joka tulostaa minuuttien määrän vuodessa. Käytä edellisen esimerkin tapaan Pythonia tekemään laskutoimitus!

    Pythonissa voidaan käyttää kaksinkertaisten lainausmerkkien \" lisäksi myös yksinkertaista lainausmerkkiä '.

    Tämä on kätevää, kun haluat tulostaa lainausmerkkejä:

    \nprint('\"Heti takaisin!\", poliisi huusi.')\n

    \"Heti takaisin!\", poliisi huusi.

    Tee ohjelma, jonka tulostus on seuraava:

    print(\"Moi kaikki!\")

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/1-ohjelmoinnin-aloittaminen.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Olet kirjoittanut ja suorittanut ensimmäisen Python-ohjelmasi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää print-komentoa viestien tulostamiseen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat laskea laskuja ohjelmoimalla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietokoneohjelmat koostuvat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"komennoista"}]},{"type":"text","value":" eli yksinkertaisista toimintaohjeista, joita kone suorittaa yksi kerrallaan. Komennot voivat esimerkiksi suorittaa laskutoimituksia, vertailla koneen muistissa olevia tietoja, aiheuttaa muutoksen ohjelman toimintaan tai viestiä käyttäjän kanssa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aloitetaan ohjelmointiin tutustuminen yksinkertaisesta komennosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":", joka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tulostaa"}]},{"type":"text","value":" tekstiä. Tulostaminen tarkoittaa käytännössä sitä, että ohjelma näyttää tekstiä ruudulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma tulostaa rivin \"Moi kaikki!\":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun suoritamme ohjelman, se tuottaa seuraavan tuloksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että ohjelman koodi tulee kirjoittaa tarkalleen yllä olevalla tavalla, jotta se toimii. Esimerkiksi jos yritämme tulostaa rivin käyttämättä lainausmerkkejä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Moi kaikki!"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ohjelma ei toimi, ja seurauksena on seuraava virheilmoitus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"File \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1\n print(Moi kaikki!)\n ^\nSyntaxError: invalid syntax\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python ei siis osaa tulkita tulostettavaa tekstiä oikein, jos se ei ole lainausmerkeissä."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Hymiö","tmcname":"osa01-01_hymio","height":"300px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka tulostaa ruudulle hymiön: :-)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"ohjelman-eteneminen","style":"position:relative;"},"children":[{"type":"text","value":"Ohjelman eteneminen"},{"type":"element","tagName":"a","properties":{"href":"#ohjelman-eteneminen","ariaLabel":"ohjelman eteneminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun kirjoitamme useita komentoja peräkkäin,\nne suoritetaan järjestyksessä ylhäältä alas.\nEsimerkiksi ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tervetuloa opettelemaan ohjelmointia!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aluksi harjoitellaan print-komennon käyttöä.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä ohjelma tulostaa ruudulle kolme riviä tekstiä.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa ruudulle seuraavat rivit:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tervetuloa opettelemaan ohjelmointia!\nAluksi harjoitellaan print-komennon käyttöä.\nTämä ohjelma tulostaa ruudulle kolme riviä tekstiä."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: seitsemän veljestä","tmcname":"osa01-03_korjaa_ohjelma_7_veljesta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tarkoitus on tulostaa seitsemän veljestä aakkosjärjestyksessä. Ohjelmassa on kuitenkin yksi tai useampi virhe, jonka takia se ei toimi oikein.\nKorjaa ohjelma niin, että veljekset tulostuvat oikeassa järjestyksessä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Simeoni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juhani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lauri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuomas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Timo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ukko Nooa","tmcname":"osa01-02_ukko_nooa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka tulostaa ruudulle seuraavat rivit (tarkalleen annetussa muodossa välimerkkeineen):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ukko Nooa, Ukko Nooa oli kunnon mies.\nKun hän meni saunaan, laittoi laukun naulaan.\nUkko Nooa, Ukko Nooa oli kunnon mies."}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"laskutoimitukset","style":"position:relative;"},"children":[{"type":"text","value":"Laskutoimitukset"},{"type":"element","tagName":"a","properties":{"href":"#laskutoimitukset","ariaLabel":"laskutoimitukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos laitamme "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon sisälle laskutoimituksen, tulostuu ruudulle laskutoimituksen tulos. Esimerkiksi ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa ruudulle seuraavat rivit:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"7\n9\n22"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että laskutoimituksen ympärille ei kirjoiteta lainausmerkkejä. Lainausmerkeillä merkitään "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"merkkijono"}]},{"type":"text","value":", joka tulostetaan ruudulle sellaisenaan. Huomaa siis seuraavien komentojen ero:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2 + 2 * 10\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"22\n2 + 2 * 10"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jälkimmäisessä tapauksessa Python ei laske laskutoimitusta, vaan tulostaa sen ruudulle.\nMerkkijonot siis tulostetaan ruudulle sellaisenaan riippumatta niiden sisällöstä."}]},{"type":"element","tagName":"h2","properties":{"id":"kommentit","style":"position:relative;"},"children":[{"type":"text","value":"Kommentit"},{"type":"element","tagName":"a","properties":{"href":"#kommentit","ariaLabel":"kommentit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos rivin alussa on merkki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"#"}]},{"type":"text","value":", rivi on kommentti, jolloin rivillä oleva teksti ei vaikuta ohjelman toimintaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kommenttien avulla ohjelmoija voi selostaa itselleen ja muille ohjelmoijille, miten ohjelma toimii. Esimerkiksi seuraavassa ohjelmassa kommentit selittävät käytettyä laskukaavaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntien määrä vuodessa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# vuodessa on 365 päivää ja jokaisessa 24 tuntia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"365"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma suoritetaan, kommenteissa oleva teksti ei näy mitenkään ohjelman käyttäjälle:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuntien määrä vuodessa:\n8760"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lyhyempi kommentti voi olla myös rivin lopussa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntien määrä vuodessa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"365"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 365 päivää, 24 tuntia päivässä"}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Minuutit vuodessa","tmcname":"osa01-04_minuuttien_maara_vuodessa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa minuuttien määrän vuodessa. Käytä edellisen esimerkin tapaan Pythonia tekemään laskutoimitus!"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ohjelma tulostaa koodia","tmcname":"osa01-05_ohjelma_tulostaa_koodia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa voidaan käyttää kaksinkertaisten lainausmerkkien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\""}]},{"type":"text","value":" lisäksi myös yksinkertaista lainausmerkkiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"'"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on kätevää, kun haluat tulostaa lainausmerkkejä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'\"Heti takaisin!\", poliisi huusi.'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\"Heti takaisin!\", poliisi huusi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jonka tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"print(\"Moi kaikki!\")"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Olet kirjoittanut ja suorittanut ensimmäisen Python-ohjelmasi
    • \n
    • Osaat käyttää print-komentoa viestien tulostamiseen
    • \n
    • Osaat laskea laskuja ohjelmoimalla
    • \n

    Tietokoneohjelmat koostuvat komennoista eli yksinkertaisista toimintaohjeista, joita kone suorittaa yksi kerrallaan. Komennot voivat esimerkiksi suorittaa laskutoimituksia, vertailla koneen muistissa olevia tietoja, aiheuttaa muutoksen ohjelman toimintaan tai viestiä käyttäjän kanssa.

    Aloitetaan ohjelmointiin tutustuminen yksinkertaisesta komennosta print, joka tulostaa tekstiä. Tulostaminen tarkoittaa käytännössä sitä, että ohjelma näyttää tekstiä ruudulla.

    Esimerkiksi seuraava ohjelma tulostaa rivin \"Moi kaikki!\":

    print(\"Moi kaikki!\")

    Kun suoritamme ohjelman, se tuottaa seuraavan tuloksen:

    Moi kaikki!

    Huomaa, että ohjelman koodi tulee kirjoittaa tarkalleen yllä olevalla tavalla, jotta se toimii. Esimerkiksi jos yritämme tulostaa rivin käyttämättä lainausmerkkejä

    print(Moi kaikki!)

    ohjelma ei toimi, ja seurauksena on seuraava virheilmoitus:

    \nFile \"\", line 1\n  print(Moi kaikki!)\n                   ^\nSyntaxError: invalid syntax\n

    Python ei siis osaa tulkita tulostettavaa tekstiä oikein, jos se ei ole lainausmerkeissä.

    Kirjoita ohjelma, joka tulostaa ruudulle hymiön: :-)

    Ohjelman eteneminen

    Kun kirjoitamme useita komentoja peräkkäin,\nne suoritetaan järjestyksessä ylhäältä alas.\nEsimerkiksi ohjelma

    print(\"Tervetuloa opettelemaan ohjelmointia!\")\nprint(\"Aluksi harjoitellaan print-komennon käyttöä.\")\nprint(\"Tämä ohjelma tulostaa ruudulle kolme riviä tekstiä.\")

    tulostaa ruudulle seuraavat rivit:

    Tervetuloa opettelemaan ohjelmointia!\nAluksi harjoitellaan print-komennon käyttöä.\nTämä ohjelma tulostaa ruudulle kolme riviä tekstiä.

    Ohjelman tarkoitus on tulostaa seitsemän veljestä aakkosjärjestyksessä. Ohjelmassa on kuitenkin yksi tai useampi virhe, jonka takia se ei toimi oikein.\nKorjaa ohjelma niin, että veljekset tulostuvat oikeassa järjestyksessä.

    print(\"Simeoni\")\nprint(\"Juhani\")\nprint(\"Eero\")\nprint(\"Lauri\")\nprint(\"Aapo\")\nprint(\"Tuomas\")\nprint(\"Timo\")

    Kirjoita ohjelma, joka tulostaa ruudulle seuraavat rivit (tarkalleen annetussa muodossa välimerkkeineen):

    Ukko Nooa, Ukko Nooa oli kunnon mies.\nKun hän meni saunaan, laittoi laukun naulaan.\nUkko Nooa, Ukko Nooa oli kunnon mies.

    Laskutoimitukset

    Jos laitamme print-komennon sisälle laskutoimituksen, tulostuu ruudulle laskutoimituksen tulos. Esimerkiksi ohjelma

    print(2 + 5)\nprint(3 * 3)\nprint(2 + 2 * 10)

    tulostaa ruudulle seuraavat rivit:

    7\n9\n22

    Huomaa, että laskutoimituksen ympärille ei kirjoiteta lainausmerkkejä. Lainausmerkeillä merkitään merkkijono, joka tulostetaan ruudulle sellaisenaan. Huomaa siis seuraavien komentojen ero:

    print(2 + 2 * 10)\nprint(\"2 + 2 * 10\")

    Ohjelman tulostus on:

    22\n2 + 2 * 10

    Jälkimmäisessä tapauksessa Python ei laske laskutoimitusta, vaan tulostaa sen ruudulle.\nMerkkijonot siis tulostetaan ruudulle sellaisenaan riippumatta niiden sisällöstä.

    Kommentit

    Jos rivin alussa on merkki #, rivi on kommentti, jolloin rivillä oleva teksti ei vaikuta ohjelman toimintaan.

    Kommenttien avulla ohjelmoija voi selostaa itselleen ja muille ohjelmoijille, miten ohjelma toimii. Esimerkiksi seuraavassa ohjelmassa kommentit selittävät käytettyä laskukaavaa:

    print(\"Tuntien määrä vuodessa:\")\n# vuodessa on 365 päivää ja jokaisessa 24 tuntia\nprint(365*24)

    Kun ohjelma suoritetaan, kommenteissa oleva teksti ei näy mitenkään ohjelman käyttäjälle:

    Tuntien määrä vuodessa:\n8760

    Lyhyempi kommentti voi olla myös rivin lopussa:

    print(\"Tuntien määrä vuodessa:\")\nprint(365*24) # 365 päivää, 24 tuntia päivässä

    Tee ohjelma, joka tulostaa minuuttien määrän vuodessa. Käytä edellisen esimerkin tapaan Pythonia tekemään laskutoimitus!

    Pythonissa voidaan käyttää kaksinkertaisten lainausmerkkien \" lisäksi myös yksinkertaista lainausmerkkiä '.

    Tämä on kätevää, kun haluat tulostaa lainausmerkkejä:

    \nprint('\"Heti takaisin!\", poliisi huusi.')\n

    \"Heti takaisin!\", poliisi huusi.

    Tee ohjelma, jonka tulostus on seuraava:

    print(\"Moi kaikki!\")

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/1-ohjelmoinnin-aloittaminen.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-1/2-tietoa-kayttajalta/page-data.json b/page-data/osa-1/2-tietoa-kayttajalta/page-data.json index 16cf3ac72..c450d83e2 100644 --- a/page-data/osa-1/2-tietoa-kayttajalta/page-data.json +++ b/page-data/osa-1/2-tietoa-kayttajalta/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-1/2-tietoa-kayttajalta", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa ohjelman, joka lukee tietoa käyttäjältä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää muuttujaa syötteen lukemisessa ja tulostamisessa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat yhdistää merkkijonoja toisiinsa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Syöte"}]},{"type":"text","value":" tarkoittaa tietoa, jonka ohjelman käyttäjä antaa ohjelmalle. Pythonissa voimme lukea rivin käyttäjän antamaa syötettä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennolla. Komento näyttää samalla viestin käyttäjälle, jossa voi pyytää syötettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma lukee käyttäjän nimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennolla ja\ntulostaa ruudulle tervehdyksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi vaan, \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voisi näyttää esimerkiksi seuraavalta (käyttäjän kirjoittama syöte on merkitty punaisella):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka Python"}]},{"type":"text","value":"\nMoi vaan, Pekka Python"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostama teksti riippuu siis osittain käyttäjän syötteestä. Niinpä ohjelman suoritus voisi näyttää myös tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Outi Ohjelmoija"}]},{"type":"text","value":"\nMoi vaan, Outi Ohjelmoija"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa esiintyvä sana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muuttuja"}]},{"type":"text","value":". Muuttujalla tarkoitetaan ohjelmoinnissa paikkaa, johon voidaan tallentaa jokin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"arvo"}]},{"type":"text","value":" kuten merkkijono tai lukuarvo. Tämä arvo voidaan myöhemmin lukea tai sitä voidaan muuttaa."}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Muuttujan nimen valinta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujat voi periaatteesssa ohjelmissa nimetä vapaasti, tiettyjä Python-kielen asettamia rajoituksia noudattaen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä kurssilla muuttujat ja muut vastaavat ohjelmien osat nimetään suomeksi.\nOhjelmoinnissa käytetään kuitenkin yleisesti kielenä englantia – jos etsit Googlen avulla ohjelmointiesimerkkejä, kielenä on usein englanti."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimi kahdesti","tmcname":"osa01-06_nimi_kahdesti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kahteen kertaan peräkkäisille riveille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka"}]},{"type":"text","value":"\nPekka\nPekka"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"muuttujaan-viittaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Muuttujaan viittaaminen"},{"type":"element","tagName":"a","properties":{"href":"#muuttujaan-viittaaminen","ariaLabel":"muuttujaan viittaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujaan voidaan viitata ohjelmassa useasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi, \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" on aika kiva nimi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus, kun käyttäjä antaa nimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pauli Python"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pauli Python"}]},{"type":"text","value":"\nMoi, Pauli Python!\nPauli Python on aika kiva nimi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaanpa tulostuskomentoja vähän tarkemmin: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolle annetaan merkkijono, johon on yhdistetty valmista tekstiä ja käyttäjän syöte. Nämä on yhdistetty toisiinsa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattorilla,\njoka yhdistää kaksi merkkijonoa yhdeksi uudeksi merkkijonoksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonoja voidaan yhdistää muuttujien arvoihin vapaasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"! Varmistan vielä: nimesi on siis \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus, kun käyttäjä antaa nimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Erkki Esimerkki"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki Esimerkki"}]},{"type":"text","value":"\nMoi Erkki Esimerkki! Varmistan vielä: nimesi on siis Erkki Esimerkki?"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimet huutomerkillä","tmcname":"osa01-07_nimi_ja_huutomerkit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kaksi kertaa samalle riville siten, että rivin alussa lopussa sekä nimien välissä on huutomerkki."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka"}]},{"type":"text","value":"\n!Pekka!Pekka!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"useampi-kuin-yksi-syote","style":"position:relative;"},"children":[{"type":"text","value":"Useampi kuin yksi syöte"},{"type":"element","tagName":"a","properties":{"href":"#useampi-kuin-yksi-syote","ariaLabel":"useampi kuin yksi syote permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa voi lukea useamman eri syötteen. Huomaa, että jokainen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennon kysymä merkkijono tallennetaan eri muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sähköpostiosoitteesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlempinimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lempinimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Varmistetaan vielä, että tiedot menivät oikein\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimesi: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköpostiosoitteesi: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lempinimesi: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki ohjelman suorituksesta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keijo Keksitty"}]},{"type":"text","value":"\nAnna sähköpostiosoitteesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"mailto:keijo99@example.com","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"keijo99@example.com"}]}]},{"type":"text","value":"\nAnna lempinimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keke"}]},{"type":"text","value":"\nVarmistetaan vielä, että tiedot menivät oikein\nNimesi: Keijo Keksitty\nSähköpostiosoitteesi: "},{"type":"element","tagName":"a","properties":{"href":"mailto:keijo99@example.com","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"keijo99@example.com"}]},{"type":"text","value":"\nLempinimesi: Keke"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos samaan muuttujaan luetaan syöte useamman kerran, uusi arvo ylikirjoittaa aina edellisen. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"osoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on osoitteesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Asut siis osoitteessa \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nosoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna uusi osoite: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osoite on nyt \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on osoitteesi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pythonpolku 1 A 10"}]},{"type":"text","value":"\nAsut siis osoitteessa Pythonpolku 1 A 10\nAnna uusi osoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Uusikatu 999"}]},{"type":"text","value":"\nOsoite on nyt Uusikatu 999"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos samaan muuttujaan luetaan kaksi syötettä peräkkäin, ei ensimmäisenä syötettyyn arvoon siis pääse enää käsiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"osoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on osoitteesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nosoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna uusi osoite: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osoite on nyt \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on osoitteesi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pythonpolku 10"}]},{"type":"text","value":"\nAnna uusi osoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohjelmoijanraitti 230"}]},{"type":"text","value":"\nOsoite on nyt Ohjelmoijanraitti 230"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimi ja osoite","tmcname":"osa01-08_nimi_ja_osoite"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja osoitetta. Ohjelma tulostaa syötetyt tiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Etunimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Sanna"}]},{"type":"text","value":"\nSukunimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Seppänen"}]},{"type":"text","value":"\nKatuosoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Mannerheimintie 10"}]},{"type":"text","value":"\nPostinumero ja kaupunki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"00100 Helsinki"}]},{"type":"text","value":"\nSanna Seppänen\nMannerheimintie 10\n00100 Helsinki"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":" Korjaa ohjelma: Lausahdukset","tmcname":"osa01-09_korjaa_ohjelma_lausahdukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on annettu ohjelma, jonka pitäisi kysyä käyttäjältä kolme lausahdusta ja tulostaa ne esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. osa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"entten"}]},{"type":"text","value":"\nAnna 2. osa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tentten"}]},{"type":"text","value":"\nAnna 3. osa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"teelikamentten"}]},{"type":"text","value":"\nentten-tentten-teelikamentten!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi oikein. Korjaa ohjelma."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tarina","tmcname":"osa01-10_tarina"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa oheisen tarinan, johon on upotettu käyttäjän antama nimi ja vuosi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Maija"}]},{"type":"text","value":"\nAnna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1572"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Maija on urhea ritari, syntynyt vuonna 1572. Eräänä aamuna Maija heräsi kovaan meluun: lohikäärme lähestyi kylää. Vain Maija voisi pelastaa kylän asukkaat."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarinan tulee muuttua sen mukaan, mitkä tiedot käyttäjä antaa."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"260a58a9-a12e-5a55-835b-26cfac247f57"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat kirjoittaa ohjelman, joka lukee tietoa käyttäjältä
    • \n
    • Osaat käyttää muuttujaa syötteen lukemisessa ja tulostamisessa
    • \n
    • Osaat yhdistää merkkijonoja toisiinsa
    • \n

    Syöte tarkoittaa tietoa, jonka ohjelman käyttäjä antaa ohjelmalle. Pythonissa voimme lukea rivin käyttäjän antamaa syötettä input-komennolla. Komento näyttää samalla viestin käyttäjälle, jossa voi pyytää syötettä.

    Esimerkiksi seuraava ohjelma lukee käyttäjän nimen input-komennolla ja\ntulostaa ruudulle tervehdyksen print-komennolla:

    nimi = input(\"Anna nimesi: \")\nprint(\"Moi vaan, \" + nimi)

    Ohjelman suoritus voisi näyttää esimerkiksi seuraavalta (käyttäjän kirjoittama syöte on merkitty punaisella):

    Anna nimesi: Pekka Python\nMoi vaan, Pekka Python

    Ohjelman tulostama teksti riippuu siis osittain käyttäjän syötteestä. Niinpä ohjelman suoritus voisi näyttää myös tältä:

    Anna nimesi: Outi Ohjelmoija\nMoi vaan, Outi Ohjelmoija

    Ohjelmassa esiintyvä sana nimi on muuttuja. Muuttujalla tarkoitetaan ohjelmoinnissa paikkaa, johon voidaan tallentaa jokin arvo kuten merkkijono tai lukuarvo. Tämä arvo voidaan myöhemmin lukea tai sitä voidaan muuttaa.

    Muuttujat voi periaatteesssa ohjelmissa nimetä vapaasti, tiettyjä Python-kielen asettamia rajoituksia noudattaen.

    Tällä kurssilla muuttujat ja muut vastaavat ohjelmien osat nimetään suomeksi.\nOhjelmoinnissa käytetään kuitenkin yleisesti kielenä englantia – jos etsit Googlen avulla ohjelmointiesimerkkejä, kielenä on usein englanti.

    Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kahteen kertaan peräkkäisille riveille.

    Ohjelman tulee toimia seuraavasti:

    Anna nimesi: Pekka\nPekka\nPekka

    Muuttujaan viittaaminen

    Muuttujaan voidaan viitata ohjelmassa useasti:

    nimi = input(\"Anna nimesi: \")\n\nprint(\"Moi, \" + nimi + \"!\")\nprint(nimi + \" on aika kiva nimi.\")

    Esimerkkitulostus, kun käyttäjä antaa nimen Pauli Python:

    Anna nimesi: Pauli Python\nMoi, Pauli Python!\nPauli Python on aika kiva nimi.

    Tarkastellaanpa tulostuskomentoja vähän tarkemmin: print-komennolle annetaan merkkijono, johon on yhdistetty valmista tekstiä ja käyttäjän syöte. Nämä on yhdistetty toisiinsa +-operaattorilla,\njoka yhdistää kaksi merkkijonoa yhdeksi uudeksi merkkijonoksi.

    Merkkijonoja voidaan yhdistää muuttujien arvoihin vapaasti:

    nimi = input(\"Anna nimesi: \")\n\nprint(\"Moi \" + nimi + \"! Varmistan vielä: nimesi on siis \" + nimi + \"?\")

    Esimerkkitulostus, kun käyttäjä antaa nimen Erkki Esimerkki:

    Anna nimesi: Erkki Esimerkki\nMoi Erkki Esimerkki! Varmistan vielä: nimesi on siis Erkki Esimerkki?

    Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kaksi kertaa samalle riville siten, että rivin alussa lopussa sekä nimien välissä on huutomerkki.

    Ohjelman tulee toimia seuraavasti:

    Anna nimesi: Pekka\n!Pekka!Pekka!

    Useampi kuin yksi syöte

    Ohjelmassa voi lukea useamman eri syötteen. Huomaa, että jokainen input-komennon kysymä merkkijono tallennetaan eri muuttujaan:

    nimi = input(\"Anna nimesi: \")\nsposti = input(\"Anna sähköpostiosoitteesi: \")\nlempinimi = input(\"Anna lempinimesi: \")\n\nprint(\"Varmistetaan vielä, että tiedot menivät oikein\")\nprint(\"Nimesi: \" + nimi)\nprint(\"Sähköpostiosoitteesi: \" + sposti)\nprint(\"Lempinimesi: \" + lempinimi)

    Esimerkki ohjelman suorituksesta:

    Anna nimesi: Keijo Keksitty\nAnna sähköpostiosoitteesi: keijo99@example.com\nAnna lempinimesi: Keke\nVarmistetaan vielä, että tiedot menivät oikein\nNimesi: Keijo Keksitty\nSähköpostiosoitteesi: keijo99@example.com\nLempinimesi: Keke

    Jos samaan muuttujaan luetaan syöte useamman kerran, uusi arvo ylikirjoittaa aina edellisen. Esimerkiksi:

    osoite = input(\"Mikä on osoitteesi? \")\nprint(\"Asut siis osoitteessa \" + osoite)\n\nosoite = input(\"Anna uusi osoite: \")\nprint(\"Osoite on nyt \" + osoite)

    Esimerkkisuoritus:

    Mikä on osoitteesi? Pythonpolku 1 A 10\nAsut siis osoitteessa Pythonpolku 1 A 10\nAnna uusi osoite: Uusikatu 999\nOsoite on nyt Uusikatu 999

    Jos samaan muuttujaan luetaan kaksi syötettä peräkkäin, ei ensimmäisenä syötettyyn arvoon siis pääse enää käsiksi:

    osoite = input(\"Mikä on osoitteesi? \")\nosoite = input(\"Anna uusi osoite: \")\n\nprint(\"Osoite on nyt \" + osoite)

    Esimerkkisuoritus:

    Mikä on osoitteesi? Pythonpolku 10\nAnna uusi osoite: Ohjelmoijanraitti 230\nOsoite on nyt Ohjelmoijanraitti 230

    Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja osoitetta. Ohjelma tulostaa syötetyt tiedot.

    Ohjelman tulee toimia seuraavasti:

    Etunimi: Sanna\nSukunimi: Seppänen\nKatuosoite: Mannerheimintie 10\nPostinumero ja kaupunki: 00100 Helsinki\nSanna Seppänen\nMannerheimintie 10\n00100 Helsinki

    Tehtäväpohjassa on annettu ohjelma, jonka pitäisi kysyä käyttäjältä kolme lausahdusta ja tulostaa ne esimerkin mukaisesti:

    Anna 1. osa: entten\nAnna 2. osa: tentten\nAnna 3. osa: teelikamentten\nentten-tentten-teelikamentten!

    Ohjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi oikein. Korjaa ohjelma.

    Tee ohjelma, joka tulostaa oheisen tarinan, johon on upotettu käyttäjän antama nimi ja vuosi.

    Anna nimi: Maija\nAnna vuosi: 1572

    Maija on urhea ritari, syntynyt vuonna 1572. Eräänä aamuna Maija heräsi kovaan meluun: lohikäärme lähestyi kylää. Vain Maija voisi pelastaa kylän asukkaat.

    Tarinan tulee muuttua sen mukaan, mitkä tiedot käyttäjä antaa.

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/2-tietoa-kayttajalta.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa ohjelman, joka lukee tietoa käyttäjältä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää muuttujaa syötteen lukemisessa ja tulostamisessa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat yhdistää merkkijonoja toisiinsa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Syöte"}]},{"type":"text","value":" tarkoittaa tietoa, jonka ohjelman käyttäjä antaa ohjelmalle. Pythonissa voimme lukea rivin käyttäjän antamaa syötettä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennolla. Komento näyttää samalla viestin käyttäjälle, jossa voi pyytää syötettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma lukee käyttäjän nimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennolla ja\ntulostaa ruudulle tervehdyksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi vaan, \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voisi näyttää esimerkiksi seuraavalta (käyttäjän kirjoittama syöte on merkitty punaisella):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka Python"}]},{"type":"text","value":"\nMoi vaan, Pekka Python"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostama teksti riippuu siis osittain käyttäjän syötteestä. Niinpä ohjelman suoritus voisi näyttää myös tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Outi Ohjelmoija"}]},{"type":"text","value":"\nMoi vaan, Outi Ohjelmoija"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa esiintyvä sana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muuttuja"}]},{"type":"text","value":". Muuttujalla tarkoitetaan ohjelmoinnissa paikkaa, johon voidaan tallentaa jokin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"arvo"}]},{"type":"text","value":" kuten merkkijono tai lukuarvo. Tämä arvo voidaan myöhemmin lukea tai sitä voidaan muuttaa."}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Muuttujan nimen valinta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujat voi periaatteesssa ohjelmissa nimetä vapaasti, tiettyjä Python-kielen asettamia rajoituksia noudattaen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä kurssilla muuttujat ja muut vastaavat ohjelmien osat nimetään suomeksi.\nOhjelmoinnissa käytetään kuitenkin yleisesti kielenä englantia – jos etsit Googlen avulla ohjelmointiesimerkkejä, kielenä on usein englanti."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimi kahdesti","tmcname":"osa01-06_nimi_kahdesti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kahteen kertaan peräkkäisille riveille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka"}]},{"type":"text","value":"\nPekka\nPekka"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"muuttujaan-viittaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Muuttujaan viittaaminen"},{"type":"element","tagName":"a","properties":{"href":"#muuttujaan-viittaaminen","ariaLabel":"muuttujaan viittaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujaan voidaan viitata ohjelmassa useasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi, \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" on aika kiva nimi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus, kun käyttäjä antaa nimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pauli Python"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pauli Python"}]},{"type":"text","value":"\nMoi, Pauli Python!\nPauli Python on aika kiva nimi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaanpa tulostuskomentoja vähän tarkemmin: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolle annetaan merkkijono, johon on yhdistetty valmista tekstiä ja käyttäjän syöte. Nämä on yhdistetty toisiinsa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattorilla,\njoka yhdistää kaksi merkkijonoa yhdeksi uudeksi merkkijonoksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonoja voidaan yhdistää muuttujien arvoihin vapaasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"! Varmistan vielä: nimesi on siis \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus, kun käyttäjä antaa nimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Erkki Esimerkki"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki Esimerkki"}]},{"type":"text","value":"\nMoi Erkki Esimerkki! Varmistan vielä: nimesi on siis Erkki Esimerkki?"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimet huutomerkillä","tmcname":"osa01-07_nimi_ja_huutomerkit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kaksi kertaa samalle riville siten, että rivin alussa lopussa sekä nimien välissä on huutomerkki."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka"}]},{"type":"text","value":"\n!Pekka!Pekka!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"useampi-kuin-yksi-syote","style":"position:relative;"},"children":[{"type":"text","value":"Useampi kuin yksi syöte"},{"type":"element","tagName":"a","properties":{"href":"#useampi-kuin-yksi-syote","ariaLabel":"useampi kuin yksi syote permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa voi lukea useamman eri syötteen. Huomaa, että jokainen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennon kysymä merkkijono tallennetaan eri muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sähköpostiosoitteesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlempinimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lempinimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Varmistetaan vielä, että tiedot menivät oikein\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimesi: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköpostiosoitteesi: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lempinimesi: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki ohjelman suorituksesta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keijo Keksitty"}]},{"type":"text","value":"\nAnna sähköpostiosoitteesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"mailto:keijo99@example.com","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"keijo99@example.com"}]}]},{"type":"text","value":"\nAnna lempinimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keke"}]},{"type":"text","value":"\nVarmistetaan vielä, että tiedot menivät oikein\nNimesi: Keijo Keksitty\nSähköpostiosoitteesi: "},{"type":"element","tagName":"a","properties":{"href":"mailto:keijo99@example.com","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"keijo99@example.com"}]},{"type":"text","value":"\nLempinimesi: Keke"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos samaan muuttujaan luetaan syöte useamman kerran, uusi arvo ylikirjoittaa aina edellisen. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"osoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on osoitteesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Asut siis osoitteessa \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nosoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna uusi osoite: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osoite on nyt \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on osoitteesi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pythonpolku 1 A 10"}]},{"type":"text","value":"\nAsut siis osoitteessa Pythonpolku 1 A 10\nAnna uusi osoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Uusikatu 999"}]},{"type":"text","value":"\nOsoite on nyt Uusikatu 999"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos samaan muuttujaan luetaan kaksi syötettä peräkkäin, ei ensimmäisenä syötettyyn arvoon siis pääse enää käsiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"osoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on osoitteesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nosoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna uusi osoite: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osoite on nyt \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on osoitteesi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pythonpolku 10"}]},{"type":"text","value":"\nAnna uusi osoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohjelmoijanraitti 230"}]},{"type":"text","value":"\nOsoite on nyt Ohjelmoijanraitti 230"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimi ja osoite","tmcname":"osa01-08_nimi_ja_osoite"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja osoitetta. Ohjelma tulostaa syötetyt tiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Etunimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Sanna"}]},{"type":"text","value":"\nSukunimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Seppänen"}]},{"type":"text","value":"\nKatuosoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Mannerheimintie 10"}]},{"type":"text","value":"\nPostinumero ja kaupunki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"00100 Helsinki"}]},{"type":"text","value":"\nSanna Seppänen\nMannerheimintie 10\n00100 Helsinki"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":" Korjaa ohjelma: Lausahdukset","tmcname":"osa01-09_korjaa_ohjelma_lausahdukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on annettu ohjelma, jonka pitäisi kysyä käyttäjältä kolme lausahdusta ja tulostaa ne esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. osa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"entten"}]},{"type":"text","value":"\nAnna 2. osa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tentten"}]},{"type":"text","value":"\nAnna 3. osa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"teelikamentten"}]},{"type":"text","value":"\nentten-tentten-teelikamentten!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi oikein. Korjaa ohjelma."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tarina","tmcname":"osa01-10_tarina"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa oheisen tarinan, johon on upotettu käyttäjän antama nimi ja vuosi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Maija"}]},{"type":"text","value":"\nAnna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1572"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Maija on urhea ritari, syntynyt vuonna 1572. Eräänä aamuna Maija heräsi kovaan meluun: lohikäärme lähestyi kylää. Vain Maija voisi pelastaa kylän asukkaat."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarinan tulee muuttua sen mukaan, mitkä tiedot käyttäjä antaa."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"260a58a9-a12e-5a55-835b-26cfac247f57"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat kirjoittaa ohjelman, joka lukee tietoa käyttäjältä
    • \n
    • Osaat käyttää muuttujaa syötteen lukemisessa ja tulostamisessa
    • \n
    • Osaat yhdistää merkkijonoja toisiinsa
    • \n

    Syöte tarkoittaa tietoa, jonka ohjelman käyttäjä antaa ohjelmalle. Pythonissa voimme lukea rivin käyttäjän antamaa syötettä input-komennolla. Komento näyttää samalla viestin käyttäjälle, jossa voi pyytää syötettä.

    Esimerkiksi seuraava ohjelma lukee käyttäjän nimen input-komennolla ja\ntulostaa ruudulle tervehdyksen print-komennolla:

    nimi = input(\"Anna nimesi: \")\nprint(\"Moi vaan, \" + nimi)

    Ohjelman suoritus voisi näyttää esimerkiksi seuraavalta (käyttäjän kirjoittama syöte on merkitty punaisella):

    Anna nimesi: Pekka Python\nMoi vaan, Pekka Python

    Ohjelman tulostama teksti riippuu siis osittain käyttäjän syötteestä. Niinpä ohjelman suoritus voisi näyttää myös tältä:

    Anna nimesi: Outi Ohjelmoija\nMoi vaan, Outi Ohjelmoija

    Ohjelmassa esiintyvä sana nimi on muuttuja. Muuttujalla tarkoitetaan ohjelmoinnissa paikkaa, johon voidaan tallentaa jokin arvo kuten merkkijono tai lukuarvo. Tämä arvo voidaan myöhemmin lukea tai sitä voidaan muuttaa.

    Muuttujat voi periaatteesssa ohjelmissa nimetä vapaasti, tiettyjä Python-kielen asettamia rajoituksia noudattaen.

    Tällä kurssilla muuttujat ja muut vastaavat ohjelmien osat nimetään suomeksi.\nOhjelmoinnissa käytetään kuitenkin yleisesti kielenä englantia – jos etsit Googlen avulla ohjelmointiesimerkkejä, kielenä on usein englanti.

    Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kahteen kertaan peräkkäisille riveille.

    Ohjelman tulee toimia seuraavasti:

    Anna nimesi: Pekka\nPekka\nPekka

    Muuttujaan viittaaminen

    Muuttujaan voidaan viitata ohjelmassa useasti:

    nimi = input(\"Anna nimesi: \")\n\nprint(\"Moi, \" + nimi + \"!\")\nprint(nimi + \" on aika kiva nimi.\")

    Esimerkkitulostus, kun käyttäjä antaa nimen Pauli Python:

    Anna nimesi: Pauli Python\nMoi, Pauli Python!\nPauli Python on aika kiva nimi.

    Tarkastellaanpa tulostuskomentoja vähän tarkemmin: print-komennolle annetaan merkkijono, johon on yhdistetty valmista tekstiä ja käyttäjän syöte. Nämä on yhdistetty toisiinsa +-operaattorilla,\njoka yhdistää kaksi merkkijonoa yhdeksi uudeksi merkkijonoksi.

    Merkkijonoja voidaan yhdistää muuttujien arvoihin vapaasti:

    nimi = input(\"Anna nimesi: \")\n\nprint(\"Moi \" + nimi + \"! Varmistan vielä: nimesi on siis \" + nimi + \"?\")

    Esimerkkitulostus, kun käyttäjä antaa nimen Erkki Esimerkki:

    Anna nimesi: Erkki Esimerkki\nMoi Erkki Esimerkki! Varmistan vielä: nimesi on siis Erkki Esimerkki?

    Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja tämän jälkeen tulostaa nimen kaksi kertaa samalle riville siten, että rivin alussa lopussa sekä nimien välissä on huutomerkki.

    Ohjelman tulee toimia seuraavasti:

    Anna nimesi: Pekka\n!Pekka!Pekka!

    Useampi kuin yksi syöte

    Ohjelmassa voi lukea useamman eri syötteen. Huomaa, että jokainen input-komennon kysymä merkkijono tallennetaan eri muuttujaan:

    nimi = input(\"Anna nimesi: \")\nsposti = input(\"Anna sähköpostiosoitteesi: \")\nlempinimi = input(\"Anna lempinimesi: \")\n\nprint(\"Varmistetaan vielä, että tiedot menivät oikein\")\nprint(\"Nimesi: \" + nimi)\nprint(\"Sähköpostiosoitteesi: \" + sposti)\nprint(\"Lempinimesi: \" + lempinimi)

    Esimerkki ohjelman suorituksesta:

    Anna nimesi: Keijo Keksitty\nAnna sähköpostiosoitteesi: keijo99@example.com\nAnna lempinimesi: Keke\nVarmistetaan vielä, että tiedot menivät oikein\nNimesi: Keijo Keksitty\nSähköpostiosoitteesi: keijo99@example.com\nLempinimesi: Keke

    Jos samaan muuttujaan luetaan syöte useamman kerran, uusi arvo ylikirjoittaa aina edellisen. Esimerkiksi:

    osoite = input(\"Mikä on osoitteesi? \")\nprint(\"Asut siis osoitteessa \" + osoite)\n\nosoite = input(\"Anna uusi osoite: \")\nprint(\"Osoite on nyt \" + osoite)

    Esimerkkisuoritus:

    Mikä on osoitteesi? Pythonpolku 1 A 10\nAsut siis osoitteessa Pythonpolku 1 A 10\nAnna uusi osoite: Uusikatu 999\nOsoite on nyt Uusikatu 999

    Jos samaan muuttujaan luetaan kaksi syötettä peräkkäin, ei ensimmäisenä syötettyyn arvoon siis pääse enää käsiksi:

    osoite = input(\"Mikä on osoitteesi? \")\nosoite = input(\"Anna uusi osoite: \")\n\nprint(\"Osoite on nyt \" + osoite)

    Esimerkkisuoritus:

    Mikä on osoitteesi? Pythonpolku 10\nAnna uusi osoite: Ohjelmoijanraitti 230\nOsoite on nyt Ohjelmoijanraitti 230

    Kirjoita ohjelma, joka kysyy käyttäjän nimeä ja osoitetta. Ohjelma tulostaa syötetyt tiedot.

    Ohjelman tulee toimia seuraavasti:

    Etunimi: Sanna\nSukunimi: Seppänen\nKatuosoite: Mannerheimintie 10\nPostinumero ja kaupunki: 00100 Helsinki\nSanna Seppänen\nMannerheimintie 10\n00100 Helsinki

    Tehtäväpohjassa on annettu ohjelma, jonka pitäisi kysyä käyttäjältä kolme lausahdusta ja tulostaa ne esimerkin mukaisesti:

    Anna 1. osa: entten\nAnna 2. osa: tentten\nAnna 3. osa: teelikamentten\nentten-tentten-teelikamentten!

    Ohjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi oikein. Korjaa ohjelma.

    Tee ohjelma, joka tulostaa oheisen tarinan, johon on upotettu käyttäjän antama nimi ja vuosi.

    Anna nimi: Maija\nAnna vuosi: 1572

    Maija on urhea ritari, syntynyt vuonna 1572. Eräänä aamuna Maija heräsi kovaan meluun: lohikäärme lähestyi kylää. Vain Maija voisi pelastaa kylän asukkaat.

    Tarinan tulee muuttua sen mukaan, mitkä tiedot käyttäjä antaa.

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/2-tietoa-kayttajalta.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-1/3-lisaa-muuttujista/page-data.json b/page-data/osa-1/3-lisaa-muuttujista/page-data.json index 828577803..6e64f89ec 100644 --- a/page-data/osa-1/3-lisaa-muuttujista/page-data.json +++ b/page-data/osa-1/3-lisaa-muuttujista/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-1/3-lisaa-muuttujista", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää muuttujia eri yhteyksissä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, millaista tietoa muuttujiin voidaan tallentaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät merkkijonojen sekä kokonais- ja liukulukujen eron"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja luodaan Pythonissa seuraavasti:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"muuttujan_nimi = ..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"..."}]},{"type":"text","value":" tarkoittaa arvoa, joka tallennetaan muuttujaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kun luemme "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi, \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kummitus"}]},{"type":"text","value":"\nMoi, Kummitus"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujille voidaan antaa arvoja myös esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"etunimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\nsukunimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonen\""}]},{"type":"text","value":"\n\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etunimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" sukunimi\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Pythonen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa muuttujan arvo ei tule käyttäjältä vaan se on sama ohjelman jokaisella suorituskerralla."}]},{"type":"element","tagName":"h2","properties":{"id":"muuttujan-arvon-muuttaminen","style":"position:relative;"},"children":[{"type":"text","value":"Muuttujan arvon muuttaminen"},{"type":"element","tagName":"a","properties":{"href":"#muuttujan-arvon-muuttaminen","ariaLabel":"muuttujan arvon muuttaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan arvo voi nimensä mukaisesti muuttua. Niin kuin edellisessä osassa todettiin, uusi arvo ylikirjoittaa vanhan arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa ohjelmassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":" saa kolme eri arvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna toinen sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"eka"}]},{"type":"text","value":"\neka\nAnna toinen sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"toka"}]},{"type":"text","value":"\ntoka\nkolmas"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan sisältö siis vaihtuu jokaisen sijoituksen yhteydessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan uusi arvo voi myös perustua sen vanhaan arvoon. Esimerkiksi seuraavassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":" saa ensin arvoksi käyttäjän syötteen. Tämän jälkeen muuttuja saa arvoksi vanhan arvonsa, jonka perään on lisätty kolme huutomerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!!!\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\ntesti\ntesti!!!"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Lisää muuttujan nimen valinnasta"},"children":[{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujat kannattaa nimetä niiden käyttötarkoituksen mukaan.\nEsimerkiksi jos muuttujassa on sana, nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":" on parempi kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python ei rajoita muuttujien nimien pituutta, mutta eräitä muita sääntöjä muuttujien nimiin liittyy. Nimen täytyy alkaa kirjaimella ja se saa sisältää vain kirjaimia, numeroita ja alaviivoja _."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa myös, että pienet ja isot kirjaimet ovat eri merkkejä. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on siis eri muuttuja kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Nimi"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"NIMI"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa muuttujien nimet on tapana kirjoittaa pienillä kirjaimilla. Jos nimessä on useita sanoja, niiden välissä on alaviiva."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kokonaisluvut","style":"position:relative;"},"children":[{"type":"text","value":"Kokonaisluvut"},{"type":"element","tagName":"a","properties":{"href":"#kokonaisluvut","ariaLabel":"kokonaisluvut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän mennessä olemme tallentaneet muuttujiin vain merkkijonoja. Usein ohjelmissa halutaan kuitenkin tallentaa myös muun tyyppistä tietoa. Tarkastellaan aluksi kokonaislukuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma luo muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ika"}]},{"type":"text","value":", jonka sisältönä on kokonaisluku."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"24"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kokonaisluvun ympärille ei kirjoiteta lainausmerkkejä. Itse asiassa luvun ympärille kirjoitettavat lainausmerkit tarkoittavat, että kyseessä ei ole luku vaan merkkijono (joka tosin saattaa sisältää numeroita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä eroa muuttujan tyypeillä siis on, kun seuraava ohjelma tulostaa samat arvot?"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"100\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"100\n100"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyypeillä on merkitystä, koska\nerilaiset operaatiot vaikuttavat eri tavalla erityyppisiin muuttujiin. Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"100\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"200\n100100"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kahdelle lukuarvolle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattori siis merkitsee yhteenlaskua, merkkijonoille taas yhdistämistä peräkkäin."}]},{"type":"element","tagName":"h2","properties":{"id":"arvojen-yhdistaminen-tulostettaessa","style":"position:relative;"},"children":[{"type":"text","value":"Arvojen yhdistäminen tulostettaessa"},{"type":"element","tagName":"a","properties":{"href":"#arvojen-yhdistaminen-tulostettaessa","ariaLabel":"arvojen yhdistaminen tulostettaessa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma ei toimi, koska "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Tulos on \""}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" ovat erityypisiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# seuraava rivi tuottaa virheen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tulos on \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma ei tulosta mitään, vaan antaa virheen"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: unsupported operand type(s) for +: 'str' and 'int'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python kertoo, ettei kahden erityyppisen arvon yhdistäminen toimi. Tässä tapauksessa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Tulos on\""}]},{"type":"text","value":" tyyppi on merkkijono ja arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" tyyppi on kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluamme tulostaa yhdellä komennolla merkkijonon ja luvun, yhdistäminen onnistuu kuitenkin muuttamalla luku merkkijonoksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"-funktiolla. Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tulos on \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulos on 250"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen mahdollisuus on käyttää pilkkua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa. Tällöin komento tulostaa kaikki pilkuilla erotetut arvot riippumatta niiden tyypistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tulos on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulos on 250"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tässä tapauksessa arvojen väliin ilmestyy automaattisesti yksi välilyönti tulostuksessa."}]},{"type":"element","tagName":"h2","properties":{"id":"tulostaminen-f-merkkijonojen-avulla","style":"position:relative;"},"children":[{"type":"text","value":"Tulostaminen f-merkkijonojen avulla"},{"type":"element","tagName":"a","properties":{"href":"#tulostaminen-f-merkkijonojen-avulla","ariaLabel":"tulostaminen f merkkijonojen avulla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niin sanotut "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"f-merkkijonot"}]},{"type":"text","value":" tarjoavat kolmannen edellisiä joustavamman ja jopa helppokäyttöisemmän tavan tulostuksen muotoiluun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aiempi tekstin ja kokonaisluvun tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Tulos on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostettavan merkkijonon alussa on kirjain "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"f"}]},{"type":"text","value":", joka tarkoittaa, että kyseessä on f-merkkijono. Merkkijonon sisälle on sijoitettu aaltosuluissa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":", jonka arvo tulee tulostuvan merkkijonon osaksi. Tulostus on täsmälleen sama kuin aiemmissa esimerkeissä eli"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulos on 250"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäisen f-merkkijonon sisälle on mahdollista laittaa useampiakin muuttujia. Esimerkiksi koodi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\nkaupunki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Espoo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Hei "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", olet "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"-vuotias. Asuinpaikkasi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kaupunki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":".\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tuottaa seuraavan tuloksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Arto, olet 39-vuotias. Asuinpaikkasi on Espoo."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että täsmälleen tämän esimerkin kaltaista tulostusta on mahdotonta saada aikaan käyttämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa pilkkua:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\nkaupunki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Espoo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", olet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-vuotias. Asuinpaikkasi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kaupunki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Arto , olet 39 -vuotias. Asuinpaikkasi on Espoo ."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksessa on nyt välilyönti jokaisen erillisen osan välissä ja muutamassa kohdassa se aiheuttaa ongelman."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka pilkullinen muoto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennosta on joskus kätevä, se aiheuttaa välillä harmaita hiuksia ja silloin on parempi käyttää f-merkkijonoja. Osassa 4 opimme lisää f-merkkijonojen käteviä ominaisuuksia tulosteen muotoilussa."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Välilyönnillä vai ilman","tmcname":"osa01-10b_valilyonnilla_vai_ilman","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saat seuraavan koodinpätkän työnhakijoille suunnatun sovelluksen parissa työskentelevältä tuttavaltasi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Teppo Testaaja\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\ntaito1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"text","value":"\ntaso1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aloittelija\""}]},{"type":"text","value":"\ntaito2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"java\""}]},{"type":"text","value":"\ntaso2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"veteraani\""}]},{"type":"text","value":"\ntaito3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"text","value":"\ntaso3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"puoliammattilainen\""}]},{"type":"text","value":"\nala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"text","value":"\nyla "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3000"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimeni on \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" , olen \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-vuotias\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"taitoihini kuuluvat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taito1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" (\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taso1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\")\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taito2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" (\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taso2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\")\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taito3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" (\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taso3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" )\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"haen työtä, josta maksetaan palkkaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"euroa kuussa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin pitäisi tuottaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"täsmälleen"}]},{"type":"text","value":" seuraavanlainen tulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"nimeni on Teppo Testaaja, olen 20-vuotias\n\ntaitoihini kuuluvat\n - python (aloittelija)\n - java (veteraani)\n - ohjelmointi (puoliammattilainen)\n\nhaen työtä, josta maksetaan palkkaa 2000-3000 euroa kuussa\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodi toimii melkein oikein, mutta ei kuitenkaan ihan. Tässä tehtävässä on todella tarkat testit, jotka vaativat, että tulostus on välilyönnilleen oikein."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa siis koodi siten, että tulostus näyttää oikealta. Huomaa, että erityisesti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon muoto, jossa tulostettavat osat eritellään pilkulla, voi tuottaa yllätyksiä, sillä se lisää osien väliin välilyönnin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Helpoiten saat muutettua koodin toimivaksi käyttämällä tulostukseen f-merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vihje: saat tulostettua tyhjän rivin komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" tai lisäämällä tulostettavaan merkkijonoon merkinnän "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\\n"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muista olla tarkkana tulostusten muodon suhteen jatkossakin kurssin tehtävissä. Osassa tehtävissä testit vaativat täsmälleen esimerkkitulostusten mukaisen muotoilun."}]}]},{"type":"element","tagName":"h2","properties":{"id":"liukuluvut","style":"position:relative;"},"children":[{"type":"text","value":"Liukuluvut"},{"type":"element","tagName":"a","properties":{"href":"#liukuluvut","ariaLabel":"liukuluvut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Liukuluku"}]},{"type":"text","value":" on ohjelmoinnissa esiintyvä termi, joka tarkoittaa käytännössä desimaalilukua. Liukulukuja voidaan käyttää melko samalla tavalla kuin kokonaislukuja. Huomaa, että desimaalierottimena käytetään pistettä kuten englannissa yleensä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma laskee kolmen liukuluvun keskiarvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.5"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.25"}]},{"type":"text","value":"\nluku3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.62"}]},{"type":"text","value":"\n\nkeskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Keskiarvo: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Keskiarvo: 1.6233333333333333"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Laskutoimitukset","tmcname":"osa01-11_laskutoimitukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tehtäväpohjassa on määritelty kaksi kokonaislukumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"27"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä ohjelma siten, että sen tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"27 + 15 = 42\n27 - 15 = 12\n27 * 15 = 405\n27 / 15 = 1.8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia siinäkin tapauksessa, että muuttujien arvoa vaihdetaan. Eli jos ensimmäiset rivit muuttuvat muotoon"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4 + 9 = 13\n4 - 9 = -5\n4 * 9 = 36\n4 / 9 = 0.4444444444444444"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: Tulostukset samalle riville","tmcname":"osa01-12_korjaa_ohjelma_tulostukset_samalle_riville"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolle annetaan lisäparametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"end = \"\""}]},{"type":"text","value":", komento ei tulosta rivinvaihtoa merkkijonon jälkeen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa ohjelma niin, että koko lasku tuloksineen tulostetaan yhdelle riville muuttamatta kuitenkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentojen määrää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" + \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" - \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" = \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää muuttujia eri yhteyksissä
    • \n
    • Tiedät, millaista tietoa muuttujiin voidaan tallentaa
    • \n
    • Ymmärrät merkkijonojen sekä kokonais- ja liukulukujen eron
    • \n

    Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen.

    Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin.

    Muuttuja luodaan Pythonissa seuraavasti:

    muuttujan_nimi = ...

    Tässä ... tarkoittaa arvoa, joka tallennetaan muuttujaan.

    Esimerkiksi kun luemme input-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:

    nimi = input(\"Anna nimesi: \")\nprint(\"Moi, \" + nimi)

    Anna nimesi: Kummitus\nMoi, Kummitus

    Muuttujille voidaan antaa arvoja myös esimerkiksi näin:

    etunimi = \"Pekka\"\nsukunimi = \"Pythonen\"\n\nnimi = etunimi + \" \" + sukunimi\n\nprint(nimi)

    Pekka Pythonen

    Tässä tapauksessa muuttujan arvo ei tule käyttäjältä vaan se on sama ohjelman jokaisella suorituskerralla.

    Muuttujan arvon muuttaminen

    Muuttujan arvo voi nimensä mukaisesti muuttua. Niin kuin edellisessä osassa todettiin, uusi arvo ylikirjoittaa vanhan arvon.

    Esimerkiksi seuraavassa ohjelmassa muuttuja sana saa kolme eri arvoa:

    sana = input(\"Anna sana: \")\nprint(sana)\n\nsana = input(\"Anna toinen sana: \")\nprint(sana)\n\nsana = \"kolmas\"\nprint(sana)

    Anna sana: eka\neka\nAnna toinen sana: toka\ntoka\nkolmas

    Muuttujan sisältö siis vaihtuu jokaisen sijoituksen yhteydessä.

    Muuttujan uusi arvo voi myös perustua sen vanhaan arvoon. Esimerkiksi seuraavassa muuttuja sana saa ensin arvoksi käyttäjän syötteen. Tämän jälkeen muuttuja saa arvoksi vanhan arvonsa, jonka perään on lisätty kolme huutomerkkiä:

    sana = input(\"Anna sana: \")\nprint(sana)\n\nsana = sana + \"!!!\"\nprint(sana)

    Anna sana: testi\ntesti\ntesti!!!

      \n
    • \n

      Muuttujat kannattaa nimetä niiden käyttötarkoituksen mukaan.\nEsimerkiksi jos muuttujassa on sana, nimi sana on parempi kuin a.

      \n
    • \n
    • \n

      Python ei rajoita muuttujien nimien pituutta, mutta eräitä muita sääntöjä muuttujien nimiin liittyy. Nimen täytyy alkaa kirjaimella ja se saa sisältää vain kirjaimia, numeroita ja alaviivoja _.

      \n
    • \n
    • \n

      Huomaa myös, että pienet ja isot kirjaimet ovat eri merkkejä. Muuttuja nimi on siis eri muuttuja kuin Nimi tai NIMI.

      \n
    • \n
    • \n

      Pythonissa muuttujien nimet on tapana kirjoittaa pienillä kirjaimilla. Jos nimessä on useita sanoja, niiden välissä on alaviiva.

      \n
    • \n

    Kokonaisluvut

    Tähän mennessä olemme tallentaneet muuttujiin vain merkkijonoja. Usein ohjelmissa halutaan kuitenkin tallentaa myös muun tyyppistä tietoa. Tarkastellaan aluksi kokonaislukuja.

    Seuraava ohjelma luo muuttujan ika, jonka sisältönä on kokonaisluku.

    ika = 24\nprint(ika)

    Ohjelman tulostus on seuraava:

    24

    Kokonaisluvun ympärille ei kirjoiteta lainausmerkkejä. Itse asiassa luvun ympärille kirjoitettavat lainausmerkit tarkoittavat, että kyseessä ei ole luku vaan merkkijono (joka tosin saattaa sisältää numeroita).

    Mitä eroa muuttujan tyypeillä siis on, kun seuraava ohjelma tulostaa samat arvot?

    luku1 = 100\nluku2 = \"100\"\n\nprint(luku1)\nprint(luku2)

    100\n100

    Tyypeillä on merkitystä, koska\nerilaiset operaatiot vaikuttavat eri tavalla erityyppisiin muuttujiin. Tarkastellaan seuraavaa esimerkkiä:

    luku1 = 100\nluku2 = \"100\"\n\nprint(luku1 + luku1)\nprint(luku2 + luku2)

    Ohjelman tulostus on seuraava:

    200\n100100

    Kahdelle lukuarvolle +-operaattori siis merkitsee yhteenlaskua, merkkijonoille taas yhdistämistä peräkkäin.

    Arvojen yhdistäminen tulostettaessa

    Seuraava ohjelma ei toimi, koska \"Tulos on \" ja tulos ovat erityypisiä:

    tulos = 10 * 25\n# seuraava rivi tuottaa virheen\nprint(\"Tulos on \" + tulos)

    Ohjelma ei tulosta mitään, vaan antaa virheen

    TypeError: unsupported operand type(s) for +: 'str' and 'int'

    Python kertoo, ettei kahden erityyppisen arvon yhdistäminen toimi. Tässä tapauksessa arvon \"Tulos on\" tyyppi on merkkijono ja arvon tulos tyyppi on kokonaisluku.

    Jos haluamme tulostaa yhdellä komennolla merkkijonon ja luvun, yhdistäminen onnistuu kuitenkin muuttamalla luku merkkijonoksi str-funktiolla. Esimerkiksi

    tulos = 10 * 25\nprint(\"Tulos on \" + str(tulos))

    Tulos on 250

    Toinen mahdollisuus on käyttää pilkkua print-komennossa. Tällöin komento tulostaa kaikki pilkuilla erotetut arvot riippumatta niiden tyypistä:

    tulos = 10 * 25\nprint(\"Tulos on\", tulos)

    Tulos on 250

    Huomaa, että tässä tapauksessa arvojen väliin ilmestyy automaattisesti yksi välilyönti tulostuksessa.

    Tulostaminen f-merkkijonojen avulla

    Niin sanotut f-merkkijonot tarjoavat kolmannen edellisiä joustavamman ja jopa helppokäyttöisemmän tavan tulostuksen muotoiluun.

    Aiempi tekstin ja kokonaisluvun tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:

    tulos = 10 * 25\nprint(f\"Tulos on {tulos}\")

    Tulostettavan merkkijonon alussa on kirjain f, joka tarkoittaa, että kyseessä on f-merkkijono. Merkkijonon sisälle on sijoitettu aaltosuluissa muuttuja tulos, jonka arvo tulee tulostuvan merkkijonon osaksi. Tulostus on täsmälleen sama kuin aiemmissa esimerkeissä eli

    Tulos on 250

    Yksittäisen f-merkkijonon sisälle on mahdollista laittaa useampiakin muuttujia. Esimerkiksi koodi

    nimi = \"Arto\"\nika = 39\nkaupunki = \"Espoo\"\nprint(f\"Hei {nimi}, olet {ika}-vuotias. Asuinpaikkasi on {kaupunki}.\")

    tuottaa seuraavan tuloksen:

    Hei Arto, olet 39-vuotias. Asuinpaikkasi on Espoo.

    Huomaa, että täsmälleen tämän esimerkin kaltaista tulostusta on mahdotonta saada aikaan käyttämällä print-komennossa pilkkua:

    nimi = \"Arto\"\nika = 39\nkaupunki = \"Espoo\"\nprint(\"Hei\", nimi, \", olet\", ika, \"-vuotias. Asuinpaikkasi on\", kaupunki, \".\")

    Tulostus on seuraava:

    Hei Arto , olet 39 -vuotias. Asuinpaikkasi on Espoo .

    Tulostuksessa on nyt välilyönti jokaisen erillisen osan välissä ja muutamassa kohdassa se aiheuttaa ongelman.

    Vaikka pilkullinen muoto print-komennosta on joskus kätevä, se aiheuttaa välillä harmaita hiuksia ja silloin on parempi käyttää f-merkkijonoja. Osassa 4 opimme lisää f-merkkijonojen käteviä ominaisuuksia tulosteen muotoilussa.

    Saat seuraavan koodinpätkän työnhakijoille suunnatun sovelluksen parissa työskentelevältä tuttavaltasi:

    nimi = \"Teppo Testaaja\"\nika = 20\ntaito1 = \"python\"\ntaso1 = \"aloittelija\"\ntaito2 = \"java\"\ntaso2 = \"veteraani\"\ntaito3 = \"ohjelmointi\"\ntaso3 = \"puoliammattilainen\"\nala = 2000\nyla = 3000\n\nprint(\"nimeni on \", nimi, \" , olen \", ika, \"-vuotias\")\nprint(\"taitoihini kuuluvat\")\nprint(\"- \", taito1, \" (\", taso1, \")\")\nprint(\"- \", taito2, \" (\", taso2, \")\")\nprint(\"- \", taito3, \" (\", taso3, \" )\")\nprint(\"haen työtä, josta maksetaan palkkaa\", ala, \"-\", yla, \"euroa kuussa\")

    Koodin pitäisi tuottaa täsmälleen seuraavanlainen tulostus:

    \nnimeni on Teppo Testaaja, olen 20-vuotias\n\ntaitoihini kuuluvat\n - python (aloittelija)\n - java (veteraani)\n - ohjelmointi (puoliammattilainen)\n\nhaen työtä, josta maksetaan palkkaa 2000-3000 euroa kuussa\n

    Koodi toimii melkein oikein, mutta ei kuitenkaan ihan. Tässä tehtävässä on todella tarkat testit, jotka vaativat, että tulostus on välilyönnilleen oikein.

    Korjaa siis koodi siten, että tulostus näyttää oikealta. Huomaa, että erityisesti print-komennon muoto, jossa tulostettavat osat eritellään pilkulla, voi tuottaa yllätyksiä, sillä se lisää osien väliin välilyönnin.

    Helpoiten saat muutettua koodin toimivaksi käyttämällä tulostukseen f-merkkijonoja.

    Vihje: saat tulostettua tyhjän rivin komennolla print tai lisäämällä tulostettavaan merkkijonoon merkinnän \\n.

    Muista olla tarkkana tulostusten muodon suhteen jatkossakin kurssin tehtävissä. Osassa tehtävissä testit vaativat täsmälleen esimerkkitulostusten mukaisen muotoilun.

    Liukuluvut

    Liukuluku on ohjelmoinnissa esiintyvä termi, joka tarkoittaa käytännössä desimaalilukua. Liukulukuja voidaan käyttää melko samalla tavalla kuin kokonaislukuja. Huomaa, että desimaalierottimena käytetään pistettä kuten englannissa yleensä.

    Esimerkiksi seuraava ohjelma laskee kolmen liukuluvun keskiarvon:

    luku1 = 2.5\nluku2 = -1.25\nluku3 = 3.62\n\nkeskiarvo = (luku1 + luku2 + luku3) / 3\nprint(f\"Keskiarvo: {keskiarvo}\")

    Keskiarvo: 1.6233333333333333

    Ohjelman tehtäväpohjassa on määritelty kaksi kokonaislukumuuttujaa x ja y:

    x = 27\ny = 15

    Täydennä ohjelma siten, että sen tulostus on seuraava:

    27 + 15 = 42\n27 - 15 = 12\n27 * 15 = 405\n27 / 15 = 1.8

    Ohjelman tulee toimia siinäkin tapauksessa, että muuttujien arvoa vaihdetaan. Eli jos ensimmäiset rivit muuttuvat muotoon

    x = 4\ny = 9

    niin tulostus on seuraava:

    4 + 9 = 13\n4 - 9 = -5\n4 * 9 = 36\n4 / 9 = 0.4444444444444444

    Jos print-komennolle annetaan lisäparametri end = \"\", komento ei tulosta rivinvaihtoa merkkijonon jälkeen.

    Esimerkiksi:

    print(\"Moi \", end=\"\")\nprint(\"kaikki!\")

    Moi kaikki!

    Korjaa ohjelma niin, että koko lasku tuloksineen tulostetaan yhdelle riville muuttamatta kuitenkaan print-komentojen määrää:

    \nprint(5)\nprint(\" + \")\nprint(8)\nprint(\" - \")\nprint(4)\nprint(\" = \")\nprint(5 + 8 - 4)

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/3-lisaa-muuttujista.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää muuttujia eri yhteyksissä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, millaista tietoa muuttujiin voidaan tallentaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät merkkijonojen sekä kokonais- ja liukulukujen eron"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja luodaan Pythonissa seuraavasti:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"muuttujan_nimi = ..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"..."}]},{"type":"text","value":" tarkoittaa arvoa, joka tallennetaan muuttujaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kun luemme "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi, \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kummitus"}]},{"type":"text","value":"\nMoi, Kummitus"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujille voidaan antaa arvoja myös esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"etunimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\nsukunimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonen\""}]},{"type":"text","value":"\n\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etunimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" sukunimi\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Pythonen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa muuttujan arvo ei tule käyttäjältä vaan se on sama ohjelman jokaisella suorituskerralla."}]},{"type":"element","tagName":"h2","properties":{"id":"muuttujan-arvon-muuttaminen","style":"position:relative;"},"children":[{"type":"text","value":"Muuttujan arvon muuttaminen"},{"type":"element","tagName":"a","properties":{"href":"#muuttujan-arvon-muuttaminen","ariaLabel":"muuttujan arvon muuttaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan arvo voi nimensä mukaisesti muuttua. Niin kuin edellisessä osassa todettiin, uusi arvo ylikirjoittaa vanhan arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa ohjelmassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":" saa kolme eri arvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna toinen sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"eka"}]},{"type":"text","value":"\neka\nAnna toinen sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"toka"}]},{"type":"text","value":"\ntoka\nkolmas"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan sisältö siis vaihtuu jokaisen sijoituksen yhteydessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan uusi arvo voi myös perustua sen vanhaan arvoon. Esimerkiksi seuraavassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":" saa ensin arvoksi käyttäjän syötteen. Tämän jälkeen muuttuja saa arvoksi vanhan arvonsa, jonka perään on lisätty kolme huutomerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!!!\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\ntesti\ntesti!!!"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Lisää muuttujan nimen valinnasta"},"children":[{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujat kannattaa nimetä niiden käyttötarkoituksen mukaan.\nEsimerkiksi jos muuttujassa on sana, nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":" on parempi kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python ei rajoita muuttujien nimien pituutta, mutta eräitä muita sääntöjä muuttujien nimiin liittyy. Nimen täytyy alkaa kirjaimella ja se saa sisältää vain kirjaimia, numeroita ja alaviivoja _."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa myös, että pienet ja isot kirjaimet ovat eri merkkejä. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on siis eri muuttuja kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Nimi"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"NIMI"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa muuttujien nimet on tapana kirjoittaa pienillä kirjaimilla. Jos nimessä on useita sanoja, niiden välissä on alaviiva."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kokonaisluvut","style":"position:relative;"},"children":[{"type":"text","value":"Kokonaisluvut"},{"type":"element","tagName":"a","properties":{"href":"#kokonaisluvut","ariaLabel":"kokonaisluvut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän mennessä olemme tallentaneet muuttujiin vain merkkijonoja. Usein ohjelmissa halutaan kuitenkin tallentaa myös muun tyyppistä tietoa. Tarkastellaan aluksi kokonaislukuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma luo muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ika"}]},{"type":"text","value":", jonka sisältönä on kokonaisluku."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"24"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kokonaisluvun ympärille ei kirjoiteta lainausmerkkejä. Itse asiassa luvun ympärille kirjoitettavat lainausmerkit tarkoittavat, että kyseessä ei ole luku vaan merkkijono (joka tosin saattaa sisältää numeroita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä eroa muuttujan tyypeillä siis on, kun seuraava ohjelma tulostaa samat arvot?"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"100\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"100\n100"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyypeillä on merkitystä, koska\nerilaiset operaatiot vaikuttavat eri tavalla erityyppisiin muuttujiin. Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"100\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"200\n100100"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kahdelle lukuarvolle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattori siis merkitsee yhteenlaskua, merkkijonoille taas yhdistämistä peräkkäin."}]},{"type":"element","tagName":"h2","properties":{"id":"arvojen-yhdistaminen-tulostettaessa","style":"position:relative;"},"children":[{"type":"text","value":"Arvojen yhdistäminen tulostettaessa"},{"type":"element","tagName":"a","properties":{"href":"#arvojen-yhdistaminen-tulostettaessa","ariaLabel":"arvojen yhdistaminen tulostettaessa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma ei toimi, koska "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Tulos on \""}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" ovat erityypisiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# seuraava rivi tuottaa virheen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tulos on \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma ei tulosta mitään, vaan antaa virheen"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: unsupported operand type(s) for +: 'str' and 'int'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python kertoo, ettei kahden erityyppisen arvon yhdistäminen toimi. Tässä tapauksessa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Tulos on\""}]},{"type":"text","value":" tyyppi on merkkijono ja arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" tyyppi on kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluamme tulostaa yhdellä komennolla merkkijonon ja luvun, yhdistäminen onnistuu kuitenkin muuttamalla luku merkkijonoksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"-funktiolla. Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tulos on \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulos on 250"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen mahdollisuus on käyttää pilkkua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa. Tällöin komento tulostaa kaikki pilkuilla erotetut arvot riippumatta niiden tyypistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tulos on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulos on 250"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tässä tapauksessa arvojen väliin ilmestyy automaattisesti yksi välilyönti tulostuksessa."}]},{"type":"element","tagName":"h2","properties":{"id":"tulostaminen-f-merkkijonojen-avulla","style":"position:relative;"},"children":[{"type":"text","value":"Tulostaminen f-merkkijonojen avulla"},{"type":"element","tagName":"a","properties":{"href":"#tulostaminen-f-merkkijonojen-avulla","ariaLabel":"tulostaminen f merkkijonojen avulla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niin sanotut "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"f-merkkijonot"}]},{"type":"text","value":" tarjoavat kolmannen edellisiä joustavamman ja jopa helppokäyttöisemmän tavan tulostuksen muotoiluun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aiempi tekstin ja kokonaisluvun tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Tulos on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostettavan merkkijonon alussa on kirjain "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"f"}]},{"type":"text","value":", joka tarkoittaa, että kyseessä on f-merkkijono. Merkkijonon sisälle on sijoitettu aaltosuluissa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":", jonka arvo tulee tulostuvan merkkijonon osaksi. Tulostus on täsmälleen sama kuin aiemmissa esimerkeissä eli"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulos on 250"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäisen f-merkkijonon sisälle on mahdollista laittaa useampiakin muuttujia. Esimerkiksi koodi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\nkaupunki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Espoo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Hei "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", olet "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"-vuotias. Asuinpaikkasi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kaupunki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":".\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tuottaa seuraavan tuloksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Arto, olet 39-vuotias. Asuinpaikkasi on Espoo."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että täsmälleen tämän esimerkin kaltaista tulostusta on mahdotonta saada aikaan käyttämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa pilkkua:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\nkaupunki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Espoo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", olet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-vuotias. Asuinpaikkasi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kaupunki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Arto , olet 39 -vuotias. Asuinpaikkasi on Espoo ."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksessa on nyt välilyönti jokaisen erillisen osan välissä ja muutamassa kohdassa se aiheuttaa ongelman."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka pilkullinen muoto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennosta on joskus kätevä, se aiheuttaa välillä harmaita hiuksia ja silloin on parempi käyttää f-merkkijonoja. Osassa 4 opimme lisää f-merkkijonojen käteviä ominaisuuksia tulosteen muotoilussa."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Välilyönnillä vai ilman","tmcname":"osa01-10b_valilyonnilla_vai_ilman","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saat seuraavan koodinpätkän työnhakijoille suunnatun sovelluksen parissa työskentelevältä tuttavaltasi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Teppo Testaaja\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\ntaito1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"text","value":"\ntaso1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aloittelija\""}]},{"type":"text","value":"\ntaito2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"java\""}]},{"type":"text","value":"\ntaso2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"veteraani\""}]},{"type":"text","value":"\ntaito3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"text","value":"\ntaso3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"puoliammattilainen\""}]},{"type":"text","value":"\nala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"text","value":"\nyla "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3000"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimeni on \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" , olen \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-vuotias\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"taitoihini kuuluvat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taito1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" (\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taso1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\")\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taito2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" (\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taso2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\")\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taito3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" (\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" taso3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" )\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"haen työtä, josta maksetaan palkkaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"euroa kuussa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin pitäisi tuottaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"täsmälleen"}]},{"type":"text","value":" seuraavanlainen tulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"nimeni on Teppo Testaaja, olen 20-vuotias\n\ntaitoihini kuuluvat\n - python (aloittelija)\n - java (veteraani)\n - ohjelmointi (puoliammattilainen)\n\nhaen työtä, josta maksetaan palkkaa 2000-3000 euroa kuussa\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodi toimii melkein oikein, mutta ei kuitenkaan ihan. Tässä tehtävässä on todella tarkat testit, jotka vaativat, että tulostus on välilyönnilleen oikein."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa siis koodi siten, että tulostus näyttää oikealta. Huomaa, että erityisesti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon muoto, jossa tulostettavat osat eritellään pilkulla, voi tuottaa yllätyksiä, sillä se lisää osien väliin välilyönnin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Helpoiten saat muutettua koodin toimivaksi käyttämällä tulostukseen f-merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vihje: saat tulostettua tyhjän rivin komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" tai lisäämällä tulostettavaan merkkijonoon merkinnän "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\\n"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muista olla tarkkana tulostusten muodon suhteen jatkossakin kurssin tehtävissä. Osassa tehtävissä testit vaativat täsmälleen esimerkkitulostusten mukaisen muotoilun."}]}]},{"type":"element","tagName":"h2","properties":{"id":"liukuluvut","style":"position:relative;"},"children":[{"type":"text","value":"Liukuluvut"},{"type":"element","tagName":"a","properties":{"href":"#liukuluvut","ariaLabel":"liukuluvut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Liukuluku"}]},{"type":"text","value":" on ohjelmoinnissa esiintyvä termi, joka tarkoittaa käytännössä desimaalilukua. Liukulukuja voidaan käyttää melko samalla tavalla kuin kokonaislukuja. Huomaa, että desimaalierottimena käytetään pistettä kuten englannissa yleensä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma laskee kolmen liukuluvun keskiarvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.5"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.25"}]},{"type":"text","value":"\nluku3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.62"}]},{"type":"text","value":"\n\nkeskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Keskiarvo: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Keskiarvo: 1.6233333333333333"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Laskutoimitukset","tmcname":"osa01-11_laskutoimitukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tehtäväpohjassa on määritelty kaksi kokonaislukumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"27"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä ohjelma siten, että sen tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"27 + 15 = 42\n27 - 15 = 12\n27 * 15 = 405\n27 / 15 = 1.8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia siinäkin tapauksessa, että muuttujien arvoa vaihdetaan. Eli jos ensimmäiset rivit muuttuvat muotoon"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4 + 9 = 13\n4 - 9 = -5\n4 * 9 = 36\n4 / 9 = 0.4444444444444444"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: Tulostukset samalle riville","tmcname":"osa01-12_korjaa_ohjelma_tulostukset_samalle_riville"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolle annetaan lisäparametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"end = \"\""}]},{"type":"text","value":", komento ei tulosta rivinvaihtoa merkkijonon jälkeen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa ohjelma niin, että koko lasku tuloksineen tulostetaan yhdelle riville muuttamatta kuitenkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentojen määrää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" + \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" - \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" = \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää muuttujia eri yhteyksissä
    • \n
    • Tiedät, millaista tietoa muuttujiin voidaan tallentaa
    • \n
    • Ymmärrät merkkijonojen sekä kokonais- ja liukulukujen eron
    • \n

    Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen.

    Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin.

    Muuttuja luodaan Pythonissa seuraavasti:

    muuttujan_nimi = ...

    Tässä ... tarkoittaa arvoa, joka tallennetaan muuttujaan.

    Esimerkiksi kun luemme input-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:

    nimi = input(\"Anna nimesi: \")\nprint(\"Moi, \" + nimi)

    Anna nimesi: Kummitus\nMoi, Kummitus

    Muuttujille voidaan antaa arvoja myös esimerkiksi näin:

    etunimi = \"Pekka\"\nsukunimi = \"Pythonen\"\n\nnimi = etunimi + \" \" + sukunimi\n\nprint(nimi)

    Pekka Pythonen

    Tässä tapauksessa muuttujan arvo ei tule käyttäjältä vaan se on sama ohjelman jokaisella suorituskerralla.

    Muuttujan arvon muuttaminen

    Muuttujan arvo voi nimensä mukaisesti muuttua. Niin kuin edellisessä osassa todettiin, uusi arvo ylikirjoittaa vanhan arvon.

    Esimerkiksi seuraavassa ohjelmassa muuttuja sana saa kolme eri arvoa:

    sana = input(\"Anna sana: \")\nprint(sana)\n\nsana = input(\"Anna toinen sana: \")\nprint(sana)\n\nsana = \"kolmas\"\nprint(sana)

    Anna sana: eka\neka\nAnna toinen sana: toka\ntoka\nkolmas

    Muuttujan sisältö siis vaihtuu jokaisen sijoituksen yhteydessä.

    Muuttujan uusi arvo voi myös perustua sen vanhaan arvoon. Esimerkiksi seuraavassa muuttuja sana saa ensin arvoksi käyttäjän syötteen. Tämän jälkeen muuttuja saa arvoksi vanhan arvonsa, jonka perään on lisätty kolme huutomerkkiä:

    sana = input(\"Anna sana: \")\nprint(sana)\n\nsana = sana + \"!!!\"\nprint(sana)

    Anna sana: testi\ntesti\ntesti!!!

      \n
    • \n

      Muuttujat kannattaa nimetä niiden käyttötarkoituksen mukaan.\nEsimerkiksi jos muuttujassa on sana, nimi sana on parempi kuin a.

      \n
    • \n
    • \n

      Python ei rajoita muuttujien nimien pituutta, mutta eräitä muita sääntöjä muuttujien nimiin liittyy. Nimen täytyy alkaa kirjaimella ja se saa sisältää vain kirjaimia, numeroita ja alaviivoja _.

      \n
    • \n
    • \n

      Huomaa myös, että pienet ja isot kirjaimet ovat eri merkkejä. Muuttuja nimi on siis eri muuttuja kuin Nimi tai NIMI.

      \n
    • \n
    • \n

      Pythonissa muuttujien nimet on tapana kirjoittaa pienillä kirjaimilla. Jos nimessä on useita sanoja, niiden välissä on alaviiva.

      \n
    • \n

    Kokonaisluvut

    Tähän mennessä olemme tallentaneet muuttujiin vain merkkijonoja. Usein ohjelmissa halutaan kuitenkin tallentaa myös muun tyyppistä tietoa. Tarkastellaan aluksi kokonaislukuja.

    Seuraava ohjelma luo muuttujan ika, jonka sisältönä on kokonaisluku.

    ika = 24\nprint(ika)

    Ohjelman tulostus on seuraava:

    24

    Kokonaisluvun ympärille ei kirjoiteta lainausmerkkejä. Itse asiassa luvun ympärille kirjoitettavat lainausmerkit tarkoittavat, että kyseessä ei ole luku vaan merkkijono (joka tosin saattaa sisältää numeroita).

    Mitä eroa muuttujan tyypeillä siis on, kun seuraava ohjelma tulostaa samat arvot?

    luku1 = 100\nluku2 = \"100\"\n\nprint(luku1)\nprint(luku2)

    100\n100

    Tyypeillä on merkitystä, koska\nerilaiset operaatiot vaikuttavat eri tavalla erityyppisiin muuttujiin. Tarkastellaan seuraavaa esimerkkiä:

    luku1 = 100\nluku2 = \"100\"\n\nprint(luku1 + luku1)\nprint(luku2 + luku2)

    Ohjelman tulostus on seuraava:

    200\n100100

    Kahdelle lukuarvolle +-operaattori siis merkitsee yhteenlaskua, merkkijonoille taas yhdistämistä peräkkäin.

    Arvojen yhdistäminen tulostettaessa

    Seuraava ohjelma ei toimi, koska \"Tulos on \" ja tulos ovat erityypisiä:

    tulos = 10 * 25\n# seuraava rivi tuottaa virheen\nprint(\"Tulos on \" + tulos)

    Ohjelma ei tulosta mitään, vaan antaa virheen

    TypeError: unsupported operand type(s) for +: 'str' and 'int'

    Python kertoo, ettei kahden erityyppisen arvon yhdistäminen toimi. Tässä tapauksessa arvon \"Tulos on\" tyyppi on merkkijono ja arvon tulos tyyppi on kokonaisluku.

    Jos haluamme tulostaa yhdellä komennolla merkkijonon ja luvun, yhdistäminen onnistuu kuitenkin muuttamalla luku merkkijonoksi str-funktiolla. Esimerkiksi

    tulos = 10 * 25\nprint(\"Tulos on \" + str(tulos))

    Tulos on 250

    Toinen mahdollisuus on käyttää pilkkua print-komennossa. Tällöin komento tulostaa kaikki pilkuilla erotetut arvot riippumatta niiden tyypistä:

    tulos = 10 * 25\nprint(\"Tulos on\", tulos)

    Tulos on 250

    Huomaa, että tässä tapauksessa arvojen väliin ilmestyy automaattisesti yksi välilyönti tulostuksessa.

    Tulostaminen f-merkkijonojen avulla

    Niin sanotut f-merkkijonot tarjoavat kolmannen edellisiä joustavamman ja jopa helppokäyttöisemmän tavan tulostuksen muotoiluun.

    Aiempi tekstin ja kokonaisluvun tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:

    tulos = 10 * 25\nprint(f\"Tulos on {tulos}\")

    Tulostettavan merkkijonon alussa on kirjain f, joka tarkoittaa, että kyseessä on f-merkkijono. Merkkijonon sisälle on sijoitettu aaltosuluissa muuttuja tulos, jonka arvo tulee tulostuvan merkkijonon osaksi. Tulostus on täsmälleen sama kuin aiemmissa esimerkeissä eli

    Tulos on 250

    Yksittäisen f-merkkijonon sisälle on mahdollista laittaa useampiakin muuttujia. Esimerkiksi koodi

    nimi = \"Arto\"\nika = 39\nkaupunki = \"Espoo\"\nprint(f\"Hei {nimi}, olet {ika}-vuotias. Asuinpaikkasi on {kaupunki}.\")

    tuottaa seuraavan tuloksen:

    Hei Arto, olet 39-vuotias. Asuinpaikkasi on Espoo.

    Huomaa, että täsmälleen tämän esimerkin kaltaista tulostusta on mahdotonta saada aikaan käyttämällä print-komennossa pilkkua:

    nimi = \"Arto\"\nika = 39\nkaupunki = \"Espoo\"\nprint(\"Hei\", nimi, \", olet\", ika, \"-vuotias. Asuinpaikkasi on\", kaupunki, \".\")

    Tulostus on seuraava:

    Hei Arto , olet 39 -vuotias. Asuinpaikkasi on Espoo .

    Tulostuksessa on nyt välilyönti jokaisen erillisen osan välissä ja muutamassa kohdassa se aiheuttaa ongelman.

    Vaikka pilkullinen muoto print-komennosta on joskus kätevä, se aiheuttaa välillä harmaita hiuksia ja silloin on parempi käyttää f-merkkijonoja. Osassa 4 opimme lisää f-merkkijonojen käteviä ominaisuuksia tulosteen muotoilussa.

    Saat seuraavan koodinpätkän työnhakijoille suunnatun sovelluksen parissa työskentelevältä tuttavaltasi:

    nimi = \"Teppo Testaaja\"\nika = 20\ntaito1 = \"python\"\ntaso1 = \"aloittelija\"\ntaito2 = \"java\"\ntaso2 = \"veteraani\"\ntaito3 = \"ohjelmointi\"\ntaso3 = \"puoliammattilainen\"\nala = 2000\nyla = 3000\n\nprint(\"nimeni on \", nimi, \" , olen \", ika, \"-vuotias\")\nprint(\"taitoihini kuuluvat\")\nprint(\"- \", taito1, \" (\", taso1, \")\")\nprint(\"- \", taito2, \" (\", taso2, \")\")\nprint(\"- \", taito3, \" (\", taso3, \" )\")\nprint(\"haen työtä, josta maksetaan palkkaa\", ala, \"-\", yla, \"euroa kuussa\")

    Koodin pitäisi tuottaa täsmälleen seuraavanlainen tulostus:

    \nnimeni on Teppo Testaaja, olen 20-vuotias\n\ntaitoihini kuuluvat\n - python (aloittelija)\n - java (veteraani)\n - ohjelmointi (puoliammattilainen)\n\nhaen työtä, josta maksetaan palkkaa 2000-3000 euroa kuussa\n

    Koodi toimii melkein oikein, mutta ei kuitenkaan ihan. Tässä tehtävässä on todella tarkat testit, jotka vaativat, että tulostus on välilyönnilleen oikein.

    Korjaa siis koodi siten, että tulostus näyttää oikealta. Huomaa, että erityisesti print-komennon muoto, jossa tulostettavat osat eritellään pilkulla, voi tuottaa yllätyksiä, sillä se lisää osien väliin välilyönnin.

    Helpoiten saat muutettua koodin toimivaksi käyttämällä tulostukseen f-merkkijonoja.

    Vihje: saat tulostettua tyhjän rivin komennolla print tai lisäämällä tulostettavaan merkkijonoon merkinnän \\n.

    Muista olla tarkkana tulostusten muodon suhteen jatkossakin kurssin tehtävissä. Osassa tehtävissä testit vaativat täsmälleen esimerkkitulostusten mukaisen muotoilun.

    Liukuluvut

    Liukuluku on ohjelmoinnissa esiintyvä termi, joka tarkoittaa käytännössä desimaalilukua. Liukulukuja voidaan käyttää melko samalla tavalla kuin kokonaislukuja. Huomaa, että desimaalierottimena käytetään pistettä kuten englannissa yleensä.

    Esimerkiksi seuraava ohjelma laskee kolmen liukuluvun keskiarvon:

    luku1 = 2.5\nluku2 = -1.25\nluku3 = 3.62\n\nkeskiarvo = (luku1 + luku2 + luku3) / 3\nprint(f\"Keskiarvo: {keskiarvo}\")

    Keskiarvo: 1.6233333333333333

    Ohjelman tehtäväpohjassa on määritelty kaksi kokonaislukumuuttujaa x ja y:

    x = 27\ny = 15

    Täydennä ohjelma siten, että sen tulostus on seuraava:

    27 + 15 = 42\n27 - 15 = 12\n27 * 15 = 405\n27 / 15 = 1.8

    Ohjelman tulee toimia siinäkin tapauksessa, että muuttujien arvoa vaihdetaan. Eli jos ensimmäiset rivit muuttuvat muotoon

    x = 4\ny = 9

    niin tulostus on seuraava:

    4 + 9 = 13\n4 - 9 = -5\n4 * 9 = 36\n4 / 9 = 0.4444444444444444

    Jos print-komennolle annetaan lisäparametri end = \"\", komento ei tulosta rivinvaihtoa merkkijonon jälkeen.

    Esimerkiksi:

    print(\"Moi \", end=\"\")\nprint(\"kaikki!\")

    Moi kaikki!

    Korjaa ohjelma niin, että koko lasku tuloksineen tulostetaan yhdelle riville muuttamatta kuitenkaan print-komentojen määrää:

    \nprint(5)\nprint(\" + \")\nprint(8)\nprint(\" - \")\nprint(4)\nprint(\" = \")\nprint(5 + 8 - 4)

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/3-lisaa-muuttujista.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-1/4-laskentaa-luvuilla/page-data.json b/page-data/osa-1/4-laskentaa-luvuilla/page-data.json index acc026708..66c179002 100644 --- a/page-data/osa-1/4-laskentaa-luvuilla/page-data.json +++ b/page-data/osa-1/4-laskentaa-luvuilla/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-1/4-laskentaa-luvuilla", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää muuttujia laskutoimitusten kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käsitellä käyttäjän antamia lukuarvoja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muuntaa arvoja eri perustyyppien välillä"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aiemmissa osissa nähtiin esimerkkejä peruslaskutoimituksista. Seuraavaan taulukkoon on koottu Pythonin yleisimmät laskuoperaattorit esimerkkeineen:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Merkitys"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Esimerkki"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Tulos"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Yhteenlasku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 + 4"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"6"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Vähennyslasku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"10 - 2.5"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"7.5"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Kertolasku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-2 * 123"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-246"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"/"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Jakolasku (liukuluku)"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9 / 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"4.5"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Jakolasku (kokonaisluku)"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9 // 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"4"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Jakojäännös"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9 % 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"**"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Potenssi"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 ** 3"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"8"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laskujärjestys noudattaa matematiikasta tuttuja sääntöjä: aluksi lasketaan potenssilaskut, sitten kerto- ja jakolaskut ja lopuksi yhteen- ja vähennyslaskut. Järjestystä voidaan muuttaa sulkujen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"11\n15"}]}]},{"type":"element","tagName":"h2","properties":{"id":"operandit-operaattorit-ja-tyypit","style":"position:relative;"},"children":[{"type":"text","value":"Operandit, operaattorit ja tyypit"},{"type":"element","tagName":"a","properties":{"href":"#operandit-operaattorit-ja-tyypit","ariaLabel":"operandit operaattorit ja tyypit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laskutoimituksen osana on yleensä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"operandeja"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"operaattoreita"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 324px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8589df3fea236cb343ba84562f88bba2/67580/1_5.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.60869565217391%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABv0lEQVQ4y11T2Y7iMBDM/38Yr4AQoNkhIhqRw86dQA7iuFblHovsttSK3WdVuxMAgLVwMgxAngNNI1rXomX5UdqLAuh7yfG5XoKtseuA91vOLHS7AVEEfH3JWWvxrSvQtp+CPp/fYNthmiRwHAUB0fDO4rw/n8KCjfndiq8TABbGMNGi6yzyXDRNhf7Pj0UYWiglCL3fx7PpsriSsNYK5b63LpiFSYcBcWwxz9KMmiQWr5d1SOinjWetWfRDM9BaOQeDgRVKZTDGoKqkq1IprDVuHDLbEutqwLzXq3N2zp32pmmkIFERvjEL0jTFshiMo1B4PB6Y5zeGQdAVRYGqqhDHMfq+d3Nlfp5rtG2L4H6/bwZrceNzboQFn8zaCGPefh1+RWvtwATf33/cJcsUkiTB5XJxDiKg/Xg84nw+QynlbPRdr1fXiLYsy1xcFEVCeVkWTNPkdJ5n1HXtAqhlWSIMQ+z3+3/spOxzvHrEwRY2Z0IE7MQkzoRFqbxT6SOqSl7tv120XGwZPiXPc4zcavc3rI7u4XDA6XTCbrfD8LvNZEW6vshWA2+UlahddyZ2XefObOKp0kafv29z/R7+BdJ66xYE3UIGAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8589df3fea236cb343ba84562f88bba2/a0b58/1_5.webp 230w","/static/8589df3fea236cb343ba84562f88bba2/4e123/1_5.webp 324w"],"sizes":"(max-width: 324px) 100vw, 324px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8589df3fea236cb343ba84562f88bba2/81c8e/1_5.png 230w","/static/8589df3fea236cb343ba84562f88bba2/67580/1_5.png 324w"],"sizes":"(max-width: 324px) 100vw, 324px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8589df3fea236cb343ba84562f88bba2/67580/1_5.png","alt":"1 5","title":"1 5","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleensä operandien tyyppi ratkaisee lopputuloksen tyypin: jos lasketaan yhteen kaksi kokonaislukua, myös tulos on kokonaisluku. Jos taas vähennetään liukuluku toisesta liukuluvusta, myös tulos on liukuluku. Itse asiassa tulos on liukuluku, jos edes yksi operandeista lausekkeessa on liukuluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jakolasku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" muodostaa Pythonissa poikkeuksen sääntöön: sen tulos on liukuluku, vaikka operandit olisivatkin kokonaislukuja (esim. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1 / 5"}]},{"type":"text","value":" tuottaa liukuluvun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"0.2"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172.5"}]},{"type":"text","value":"\npaino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"68.55"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# painoindeksi lasketaan jakamalla paino pituuden neliöllä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pituus ilmoitetaan kaavassa metreinä"}]},{"type":"text","value":"\nbmi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Painoindeksi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"bmi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Painoindeksi on 23.037177063642087"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että Pythonissa on myös kokonaislukujakolaskuoperaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":", joka tuottaa kokonaisluvun, jos sen operandit ovat kokonaislukuja. Vastaus pyöristetään alaspäin kokonaisluvuksi, eli esim."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"/-operaattori "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"//-operaattori "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"/-operaattori 1.5\n//-operaattori 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lukuarvojen-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"Lukuarvojen lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#lukuarvojen-lukeminen","ariaLabel":"lukuarvojen lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin käytettiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komentoa lukemaan käyttäjältä merkkijonoja. Samaa funktiota voidaan käyttää myös lukuarvojen lukemiseen. Tällaisessa tapauksessa muunnos merkkijonosta lukutyyppiin on kuitenkin tehtävä itse. Logiikka on samanlainen kuin edellisessä osassa opitussa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"-funktiossa, vain funktion nimi vaihtuu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi voimme muuttaa merkkijonon kokonaisluvuksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":". Seuraava ohjelma lukee käyttäjältä syntymävuoden muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syote"}]},{"type":"text","value":" ja luo sitten toisen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vuosi"}]},{"type":"text","value":", jossa on vuosi kokonaisluvuksi muutettuna. Tämän jälkeen voimme suorittaa laskun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2020-vuosi"}]},{"type":"text","value":", jossa on mukana käyttäjän antama vuosi."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Minä vuonna olet syntynyt? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Ikäsi vuoden 2020 lopussa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Minä vuonna olet syntynyt? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1995"}]},{"type":"text","value":"\nIkäsi vuoden 2020 lopussa: 25"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleensä ei kannata luoda kahta muuttujaa (tässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syote"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vuosi"}]},{"type":"text","value":") lukuarvon lukemista varten, vaan voimme samalla kertaa lukea merkkijonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-funktiolla ja muuttaa sen kokonaisluvuksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":"-funktiolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"vuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Minä vuonna olet syntynyt? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Ikäsi vuoden 2020 lopussa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti voimme muuttaa merkkijonon liukuluvuksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":". Seuraava ohjelma kysyy käyttäjän painon ja pituuden ja laskee näiden tietojen avulla painoindeksin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna pituus: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna paino: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\nbmi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Painoindeksi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"bmi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus voisi näyttää vaikka seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pituus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"163"}]},{"type":"text","value":"\nAnna paino: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"74.45"}]},{"type":"text","value":"\nPainoindeksi on 28.02137829801649"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Luku kertaa viisi","tmcname":"osa01-13_kerrottuna_viidella"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lukua. Ohjelma tulostaa luvun kerrottuna viidellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nKun kerrotaan 3 luvulla 5, saadaan 15"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimi ja ikä","tmcname":"osa01-14_nimi_ja_ika"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä tämän nimen ja syntymävuoden. Ohjelma tulostaa sitten viestin seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keijo Keksitty"}]},{"type":"text","value":"\nAnna syntymävuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1990"}]},{"type":"text","value":"\nMoi Keijo Keksitty, olet 30 vuotta vanha vuoden 2020 lopussa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"muuttujien-kayttoa","style":"position:relative;"},"children":[{"type":"text","value":"Muuttujien käyttöä"},{"type":"element","tagName":"a","properties":{"href":"#muuttujien-kayttoa","ariaLabel":"muuttujien kayttoa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ohjelmaa, joka laskee kolmen käyttäjän syöttämän luvun summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku3\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nToinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\nKolmas luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nLukujen summa: 33"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käyttää nyt neljää muuttujaa. Tässä tilanteessa tultaisiin toimeen myös vähemmällä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kaikki käyttäjän syötteet luetaan muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":", jonka arvolla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kasvatetaan"}]},{"type":"text","value":" muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" arvoa joka kerta sen jälkeen kun käyttäjältä on saatu uusi syöte."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava komento siis "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kasvattaa"}]},{"type":"text","value":" muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" olevaa arvoa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" arvolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli esimerkiksi jos ennen komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" on 3 ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" on 2, niin komennon suorittamisen jälkeen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" arvona on 5."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska muuttujan arvon kasvattaminen on usein tarvittava toiminto, voimme kirjoittaa sen myös lyhyemmin näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän avulla saamme kirjoitettua ohjelman koodin tiiviimmin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse asiassa apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" ei välttämättä tarvita ollenkaan. Käyttäjän antamat syötteet voitaisiin lisätätä yksi kerrallaan muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" myös seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Riippuu toki tilanteesta, montako muuttujaa ohjelmassa tarvitaan. Jos käyttäjän kaikkien syötteiden arvo tulee muistaa, ei ole mahdollista \"uusiokäyttää\" samaa apumuuttujaa kaikkien syötteiden lukemiseen. Näin on seuraavassa esimerkissä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" + "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" = "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nToinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n2 + 3 = 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toistaalta tässä ohjelmassa ei ole omaa muuttujaa summan arvon tallettamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa kuitenkin huomata, että yhtä muuttujaa ei kannata \"uusiokäyttää\" kuin samankaltaisiin asioihin, esim. summattavien lukujen tilapäiseen tallentamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa on uusiokäytetty muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tieto"}]},{"type":"text","value":" nimen ja iän tallentamiseen ja tämä ei ole missään nimessä järkevää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tieto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tieto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntieto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on ikäsi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelma jatkuu..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi on siis käyttää molempaa tarkoitusta varten omaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kuvaavasti nimettyä"}]},{"type":"text","value":" muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on ikäsi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelma jatkuu..."}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Vuorokaudet sekunteina","tmcname":"osa01-15_sekunteja_vuorokaudessa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä vuorokausien lukumäärän. Tämän jälkeen ohjelma tulostaa sekuntien määrän annetuissa vuorokausissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka monen vuorokauden sekunnit tulostetaan? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n86400"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkki:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka monen vuorokauden sekunnit tulostetaan? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n604800"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: Lukujen tulo","tmcname":"osa01-20_korjaa_ohjelma_lukujen_tulo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oheinen ohjelma kysyy käyttäjältä kolme lukua ja tulostaa näiden tulon (eli luvut kerrottuna toisillaan).\nOhjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi. Korjaa ohjelma sellaiseksi, että se toimii oikein."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman siis pitäisi toimia esimerkiksi näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna luku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nAnna luku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nTulo on 30"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lukujen summa ja tulo","tmcname":"osa01-16_lukujen_summa_ja_tulo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma joka kysyy käyttäjältä kaksi lukua. Ohjelma tulostaa lukujen summan ja tulon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nLukujen summa 10\nLukujen tulo 21"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lukujen summa ja keskiarvo","tmcname":"osa01-17_lukujen_summa_ja_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä neljä lukua ja tulostaa niiden summan ja keskiarvon"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLuku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nLuku 4: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nLukujen summa on 16 ja keskiarvo 4.0"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ruokailukustannukset","tmcname":"osa01-19_ruokailukustannukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka arvioi käyttäjän keskimääräisiä ruokailukustannuksia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kysyy, kuinka monta kertaa viikossa käyttäjä käy Unicafessa ja Unicafe-lounaan hinnan sekä viikon muiden ruokaostosten hinnan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näiden tietojen perusteella ohjelma laskee käyttäjän keskimääräiset ruokamenot sekä viikossa että yhtenä päivänä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Montako kertaa viikossa syöt Unicafessa? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nUnicafe-lounaan hinta? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2.5"}]},{"type":"text","value":"\nPaljonko käytät viikossa ruokaostoksiin? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"28.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kustannukset keskimäärin:\nPäivässä 5.5 euroa\nViikossa 38.5 euroa"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Opiskelijat ryhmiin","tmcname":"osa01-18_opiskelijat_ryhmiin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy kurssin opiskelijoiden määrän ja ryhmän koon ja ilmoittaa, montako ryhmää opiskelijoista muodostuu. Jos jako ei mene tasan, yhdessä ryhmässä voi olla vähemmän opiskelijoita, mutta kaikissa muissa on oltava haluttu määrä."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Montako opiskelijaa? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nMikä on ryhmän koko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nRyhmien määrä: 2"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Montako opiskelijaa? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"11"}]},{"type":"text","value":"\nMikä on ryhmän koko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nRyhmien määrä: 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vihje: tehtävän tekeminen onnistuu kokonaislukujakolaskuoperaattorilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Vihje2: jos et keksi miten tehtävä ratkeaa, älä huolestu suotta vaan tutustu "},{"type":"element","tagName":"a","properties":{"href":"/osa-1/5-ehtorakenne"},"children":[{"type":"text","value":"seuraavassa luvussa"}]},{"type":"text","value":" esiteltävään "},{"type":"element","tagName":"i","properties":{},"children":[{"type":"text","value":"ehtorakenteeseen"}]},{"type":"text","value":". Ehtorakenteen avulla tehtävä on huomattavasti helpompi ratkaista."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää muuttujia laskutoimitusten kanssa
    • \n
    • Osaat käsitellä käyttäjän antamia lukuarvoja
    • \n
    • Osaat muuntaa arvoja eri perustyyppien välillä
    • \n

    Aiemmissa osissa nähtiin esimerkkejä peruslaskutoimituksista. Seuraavaan taulukkoon on koottu Pythonin yleisimmät laskuoperaattorit esimerkkeineen:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OperaattoriMerkitysEsimerkkiTulos
    +Yhteenlasku2 + 46
    -Vähennyslasku10 - 2.57.5
    *Kertolasku-2 * 123-246
    /Jakolasku (liukuluku)9 / 24.5
    //Jakolasku (kokonaisluku)9 // 24
    %Jakojäännös9 % 21
    **Potenssi2 ** 38

    Laskujärjestys noudattaa matematiikasta tuttuja sääntöjä: aluksi lasketaan potenssilaskut, sitten kerto- ja jakolaskut ja lopuksi yhteen- ja vähennyslaskut. Järjestystä voidaan muuttaa sulkujen avulla.

    Esimerkki:

    print(2 + 3 * 3)\nprint((2 + 3) * 3)

    Ohjelma tulostaa

    11\n15

    Operandit, operaattorit ja tyypit

    Laskutoimituksen osana on yleensä operandeja ja operaattoreita:

    \n \n \n \n \n \n \"1\n \n \n

    Yleensä operandien tyyppi ratkaisee lopputuloksen tyypin: jos lasketaan yhteen kaksi kokonaislukua, myös tulos on kokonaisluku. Jos taas vähennetään liukuluku toisesta liukuluvusta, myös tulos on liukuluku. Itse asiassa tulos on liukuluku, jos edes yksi operandeista lausekkeessa on liukuluku.

    Jakolasku / muodostaa Pythonissa poikkeuksen sääntöön: sen tulos on liukuluku, vaikka operandit olisivatkin kokonaislukuja (esim. 1 / 5 tuottaa liukuluvun 0.2).

    Esimerkki:

    pituus = 172.5\npaino = 68.55\n\n# painoindeksi lasketaan jakamalla paino pituuden neliöllä\n# pituus ilmoitetaan kaavassa metreinä\nbmi = paino / (pituus / 100) ** 2\n\nprint(f\"Painoindeksi on {bmi}\")

    Ohjelman tulostus on seuraava:

    Painoindeksi on 23.037177063642087

    Huomaa, että Pythonissa on myös kokonaislukujakolaskuoperaattori //, joka tuottaa kokonaisluvun, jos sen operandit ovat kokonaislukuja. Vastaus pyöristetään alaspäin kokonaisluvuksi, eli esim.

    x = 3\ny = 2\n\nprint(f\"/-operaattori {x/y}\")\nprint(f\"//-operaattori {x//y}\")

    tulostaa

    /-operaattori 1.5\n//-operaattori 1

    Lukuarvojen lukeminen

    Aikaisemmin käytettiin input-komentoa lukemaan käyttäjältä merkkijonoja. Samaa funktiota voidaan käyttää myös lukuarvojen lukemiseen. Tällaisessa tapauksessa muunnos merkkijonosta lukutyyppiin on kuitenkin tehtävä itse. Logiikka on samanlainen kuin edellisessä osassa opitussa str-funktiossa, vain funktion nimi vaihtuu.

    Esimerkiksi voimme muuttaa merkkijonon kokonaisluvuksi funktiolla int. Seuraava ohjelma lukee käyttäjältä syntymävuoden muuttujaan syote ja luo sitten toisen muuttujan vuosi, jossa on vuosi kokonaisluvuksi muutettuna. Tämän jälkeen voimme suorittaa laskun 2020-vuosi, jossa on mukana käyttäjän antama vuosi.

    syote = input(\"Minä vuonna olet syntynyt? \")\nvuosi = int(syote)\nprint(f\"Ikäsi vuoden 2020 lopussa: {2020 - vuosi}\" )

    Minä vuonna olet syntynyt? 1995\nIkäsi vuoden 2020 lopussa: 25

    Yleensä ei kannata luoda kahta muuttujaa (tässä syote ja vuosi) lukuarvon lukemista varten, vaan voimme samalla kertaa lukea merkkijonon input-funktiolla ja muuttaa sen kokonaisluvuksi int-funktiolla:

    vuosi = int(input(\"Minä vuonna olet syntynyt? \"))\nprint(f\"Ikäsi vuoden 2020 lopussa: {2020 - vuosi}\" )

    Vastaavasti voimme muuttaa merkkijonon liukuluvuksi funktiolla float. Seuraava ohjelma kysyy käyttäjän painon ja pituuden ja laskee näiden tietojen avulla painoindeksin:

    pituus = float(input(\"Anna pituus: \"))\npaino = float(input(\"Anna paino: \"))\n\npituus = pituus / 100\nbmi = paino / pituus ** 2\n\nprint(f\"Painoindeksi on {bmi}\")

    Ohjelman tulostus voisi näyttää vaikka seuraavalta:

    Anna pituus: 163\nAnna paino: 74.45\nPainoindeksi on 28.02137829801649

    Tee ohjelma, joka kysyy käyttäjältä lukua. Ohjelma tulostaa luvun kerrottuna viidellä.

    Ohjelman tulee toimia seuraavasti:

    Anna luku: 3\nKun kerrotaan 3 luvulla 5, saadaan 15

    Tee ohjelma, joka kysyy käyttäjältä tämän nimen ja syntymävuoden. Ohjelma tulostaa sitten viestin seuraavan esimerkin mukaisesti:

    Anna nimi: Keijo Keksitty\nAnna syntymävuosi: 1990\nMoi Keijo Keksitty, olet 30 vuotta vanha vuoden 2020 lopussa

    Muuttujien käyttöä

    Tarkastellaan ohjelmaa, joka laskee kolmen käyttäjän syöttämän luvun summan:

    luku1 = int(input(\"Ensimmäinen luku: \"))\nluku2 = int(input(\"Toinen luku: \"))\nluku3 = int(input(\"Kolmas luku: \"))\n\nsumma = luku1 + luku2 + luku3\nprint(f\"Lukujen summa: {summa}\")

    Ohjelman esimerkkisuoritus:

    Ensimmäinen luku: 5\nToinen luku: 21\nKolmas luku: 7\nLukujen summa: 33

    Ohjelma käyttää nyt neljää muuttujaa. Tässä tilanteessa tultaisiin toimeen myös vähemmällä:

    summa = 0\n\nluku = int(input(\"Ensimmäinen luku: \"))\nsumma = summa + luku\n\nluku = int(input(\"Toinen luku: \"))\nsumma = summa + luku\n\nluku = int(input(\"kolmas luku: \"))\nsumma = summa + luku\n\nprint(f\"Lukujen summa: {summa}\")

    Nyt kaikki käyttäjän syötteet luetaan muuttujaan luku, jonka arvolla kasvatetaan muuttujan summa arvoa joka kerta sen jälkeen kun käyttäjältä on saatu uusi syöte.

    Seuraava komento siis kasvattaa muuttujassa summa olevaa arvoa muuttujan luku arvolla:

    summa = summa + luku

    Eli esimerkiksi jos ennen komentoa summa on 3 ja luku on 2, niin komennon suorittamisen jälkeen muuttujan summa arvona on 5.

    Koska muuttujan arvon kasvattaminen on usein tarvittava toiminto, voimme kirjoittaa sen myös lyhyemmin näin:

    summa += luku

    Tämän avulla saamme kirjoitettua ohjelman koodin tiiviimmin:

    summa = 0\n\nluku = int(input(\"Ensimmäinen luku: \"))\nsumma += luku\n\nluku = int(input(\"Toinen luku: \"))\nsumma += luku\n\nluku = int(input(\"kolmas luku: \"))\nsumma += luku\n\nprint(f\"Lukujen summa: {summa}\")

    Itse asiassa apumuuttujaa luku ei välttämättä tarvita ollenkaan. Käyttäjän antamat syötteet voitaisiin lisätätä yksi kerrallaan muuttujaan summa myös seuraavasti:

    summa = 0\n\nsumma += int(input(\"Ensimmäinen luku: \"))\nsumma += int(input(\"Toinen luku: \"))\nsumma += int(input(\"Kolmas luku: \"))\n\nprint(f\"Lukujen summa: {summa}\")

    Riippuu toki tilanteesta, montako muuttujaa ohjelmassa tarvitaan. Jos käyttäjän kaikkien syötteiden arvo tulee muistaa, ei ole mahdollista \"uusiokäyttää\" samaa apumuuttujaa kaikkien syötteiden lukemiseen. Näin on seuraavassa esimerkissä:

    luku1 = int(input(\"Ensimmäinen luku: \"))\nluku2 = int(input(\"Toinen luku: \"))\n\nprint(f\"{luku1} + {luku2} = {luku1+luku2}\")

    Ensimmäinen luku: 2\nToinen luku: 3\n2 + 3 = 5

    Toistaalta tässä ohjelmassa ei ole omaa muuttujaa summan arvon tallettamiseen.

    Kannattaa kuitenkin huomata, että yhtä muuttujaa ei kannata \"uusiokäyttää\" kuin samankaltaisiin asioihin, esim. summattavien lukujen tilapäiseen tallentamiseen.

    Esimerkiksi seuraavassa on uusiokäytetty muuttujaa tieto nimen ja iän tallentamiseen ja tämä ei ole missään nimessä järkevää:

    tieto = input(\"Mikä on nimesi? \")\nprint(\"Hei \" + tieto + \"!\")\n\ntieto = int(input(\"Mikä on ikäsi? \"))\n# ohjelma jatkuu...

    Parempi on siis käyttää molempaa tarkoitusta varten omaa kuvaavasti nimettyä muuttujaa:

    nimi = input(\"Mikä on nimesi? \")\nprint(\"Hei \" + nimi + \"!\")\n\nika = int(input(\"Mikä on ikäsi? \"))\n# ohjelma jatkuu...

    Tee ohjelma, joka kysyy käyttäjältä vuorokausien lukumäärän. Tämän jälkeen ohjelma tulostaa sekuntien määrän annetuissa vuorokausissa.

    Ohjelman tulee toimia seuraavasti:

    Kuinka monen vuorokauden sekunnit tulostetaan? 1\n86400

    Toinen esimerkki:

    Kuinka monen vuorokauden sekunnit tulostetaan? 7\n604800

    Oheinen ohjelma kysyy käyttäjältä kolme lukua ja tulostaa näiden tulon (eli luvut kerrottuna toisillaan).\nOhjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi. Korjaa ohjelma sellaiseksi, että se toimii oikein.

    Ohjelman siis pitäisi toimia esimerkiksi näin:

    Anna luku 1: 2\nAnna luku 2: 3\nAnna luku 3: 5\nTulo on 30

    Tee ohjelma joka kysyy käyttäjältä kaksi lukua. Ohjelma tulostaa lukujen summan ja tulon.

    Ohjelman tulee toimia seuraavasti:

    Luku 1: 3\nLuku 2: 7\nLukujen summa 10\nLukujen tulo 21

    Tee ohjelma, joka lukee käyttäjältä neljä lukua ja tulostaa niiden summan ja keskiarvon

    Ohjelman tulee toimia seuraavasti:

    Luku 1: 2\nLuku 2: 1\nLuku 3: 6\nLuku 4: 7\nLukujen summa on 16 ja keskiarvo 4.0

    Tee ohjelma, joka arvioi käyttäjän keskimääräisiä ruokailukustannuksia.

    Ohjelma kysyy, kuinka monta kertaa viikossa käyttäjä käy Unicafessa ja Unicafe-lounaan hinnan sekä viikon muiden ruokaostosten hinnan.

    Näiden tietojen perusteella ohjelma laskee käyttäjän keskimääräiset ruokamenot sekä viikossa että yhtenä päivänä.

    Ohjelman tulee toimia seuraavasti:

    Montako kertaa viikossa syöt Unicafessa? 4\nUnicafe-lounaan hinta? 2.5\nPaljonko käytät viikossa ruokaostoksiin? 28.5

    Kustannukset keskimäärin:\nPäivässä 5.5 euroa\nViikossa 38.5 euroa

    Tee ohjelma, joka kysyy kurssin opiskelijoiden määrän ja ryhmän koon ja ilmoittaa, montako ryhmää opiskelijoista muodostuu. Jos jako ei mene tasan, yhdessä ryhmässä voi olla vähemmän opiskelijoita, mutta kaikissa muissa on oltava haluttu määrä.

    Montako opiskelijaa? 8\nMikä on ryhmän koko? 4\nRyhmien määrä: 2

    Montako opiskelijaa? 11\nMikä on ryhmän koko? 3\nRyhmien määrä: 4

    Vihje: tehtävän tekeminen onnistuu kokonaislukujakolaskuoperaattorilla //

    Vihje2: jos et keksi miten tehtävä ratkeaa, älä huolestu suotta vaan tutustu seuraavassa luvussa esiteltävään ehtorakenteeseen. Ehtorakenteen avulla tehtävä on huomattavasti helpompi ratkaista.

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/4-laskentaa-luvuilla.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää muuttujia laskutoimitusten kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käsitellä käyttäjän antamia lukuarvoja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muuntaa arvoja eri perustyyppien välillä"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aiemmissa osissa nähtiin esimerkkejä peruslaskutoimituksista. Seuraavaan taulukkoon on koottu Pythonin yleisimmät laskuoperaattorit esimerkkeineen:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Merkitys"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Esimerkki"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Tulos"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Yhteenlasku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 + 4"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"6"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Vähennyslasku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"10 - 2.5"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"7.5"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Kertolasku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-2 * 123"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-246"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"/"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Jakolasku (liukuluku)"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9 / 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"4.5"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Jakolasku (kokonaisluku)"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9 // 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"4"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Jakojäännös"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9 % 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"**"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Potenssi"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 ** 3"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"8"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laskujärjestys noudattaa matematiikasta tuttuja sääntöjä: aluksi lasketaan potenssilaskut, sitten kerto- ja jakolaskut ja lopuksi yhteen- ja vähennyslaskut. Järjestystä voidaan muuttaa sulkujen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"11\n15"}]}]},{"type":"element","tagName":"h2","properties":{"id":"operandit-operaattorit-ja-tyypit","style":"position:relative;"},"children":[{"type":"text","value":"Operandit, operaattorit ja tyypit"},{"type":"element","tagName":"a","properties":{"href":"#operandit-operaattorit-ja-tyypit","ariaLabel":"operandit operaattorit ja tyypit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laskutoimituksen osana on yleensä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"operandeja"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"operaattoreita"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 324px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8589df3fea236cb343ba84562f88bba2/67580/1_5.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.60869565217391%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABv0lEQVQ4y11T2Y7iMBDM/38Yr4AQoNkhIhqRw86dQA7iuFblHovsttSK3WdVuxMAgLVwMgxAngNNI1rXomX5UdqLAuh7yfG5XoKtseuA91vOLHS7AVEEfH3JWWvxrSvQtp+CPp/fYNthmiRwHAUB0fDO4rw/n8KCjfndiq8TABbGMNGi6yzyXDRNhf7Pj0UYWiglCL3fx7PpsriSsNYK5b63LpiFSYcBcWwxz9KMmiQWr5d1SOinjWetWfRDM9BaOQeDgRVKZTDGoKqkq1IprDVuHDLbEutqwLzXq3N2zp32pmmkIFERvjEL0jTFshiMo1B4PB6Y5zeGQdAVRYGqqhDHMfq+d3Nlfp5rtG2L4H6/bwZrceNzboQFn8zaCGPefh1+RWvtwATf33/cJcsUkiTB5XJxDiKg/Xg84nw+QynlbPRdr1fXiLYsy1xcFEVCeVkWTNPkdJ5n1HXtAqhlWSIMQ+z3+3/spOxzvHrEwRY2Z0IE7MQkzoRFqbxT6SOqSl7tv120XGwZPiXPc4zcavc3rI7u4XDA6XTCbrfD8LvNZEW6vshWA2+UlahddyZ2XefObOKp0kafv29z/R7+BdJ66xYE3UIGAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8589df3fea236cb343ba84562f88bba2/a0b58/1_5.webp 230w","/static/8589df3fea236cb343ba84562f88bba2/4e123/1_5.webp 324w"],"sizes":"(max-width: 324px) 100vw, 324px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8589df3fea236cb343ba84562f88bba2/81c8e/1_5.png 230w","/static/8589df3fea236cb343ba84562f88bba2/67580/1_5.png 324w"],"sizes":"(max-width: 324px) 100vw, 324px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8589df3fea236cb343ba84562f88bba2/67580/1_5.png","alt":"1 5","title":"1 5","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleensä operandien tyyppi ratkaisee lopputuloksen tyypin: jos lasketaan yhteen kaksi kokonaislukua, myös tulos on kokonaisluku. Jos taas vähennetään liukuluku toisesta liukuluvusta, myös tulos on liukuluku. Itse asiassa tulos on liukuluku, jos edes yksi operandeista lausekkeessa on liukuluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jakolasku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" muodostaa Pythonissa poikkeuksen sääntöön: sen tulos on liukuluku, vaikka operandit olisivatkin kokonaislukuja (esim. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1 / 5"}]},{"type":"text","value":" tuottaa liukuluvun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"0.2"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172.5"}]},{"type":"text","value":"\npaino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"68.55"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# painoindeksi lasketaan jakamalla paino pituuden neliöllä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pituus ilmoitetaan kaavassa metreinä"}]},{"type":"text","value":"\nbmi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Painoindeksi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"bmi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Painoindeksi on 23.037177063642087"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että Pythonissa on myös kokonaislukujakolaskuoperaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":", joka tuottaa kokonaisluvun, jos sen operandit ovat kokonaislukuja. Vastaus pyöristetään alaspäin kokonaisluvuksi, eli esim."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"/-operaattori "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"//-operaattori "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"/-operaattori 1.5\n//-operaattori 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lukuarvojen-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"Lukuarvojen lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#lukuarvojen-lukeminen","ariaLabel":"lukuarvojen lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin käytettiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-komentoa lukemaan käyttäjältä merkkijonoja. Samaa funktiota voidaan käyttää myös lukuarvojen lukemiseen. Tällaisessa tapauksessa muunnos merkkijonosta lukutyyppiin on kuitenkin tehtävä itse. Logiikka on samanlainen kuin edellisessä osassa opitussa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"-funktiossa, vain funktion nimi vaihtuu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi voimme muuttaa merkkijonon kokonaisluvuksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":". Seuraava ohjelma lukee käyttäjältä syntymävuoden muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syote"}]},{"type":"text","value":" ja luo sitten toisen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vuosi"}]},{"type":"text","value":", jossa on vuosi kokonaisluvuksi muutettuna. Tämän jälkeen voimme suorittaa laskun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2020-vuosi"}]},{"type":"text","value":", jossa on mukana käyttäjän antama vuosi."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Minä vuonna olet syntynyt? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Ikäsi vuoden 2020 lopussa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Minä vuonna olet syntynyt? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1995"}]},{"type":"text","value":"\nIkäsi vuoden 2020 lopussa: 25"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleensä ei kannata luoda kahta muuttujaa (tässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syote"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vuosi"}]},{"type":"text","value":") lukuarvon lukemista varten, vaan voimme samalla kertaa lukea merkkijonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":"-funktiolla ja muuttaa sen kokonaisluvuksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":"-funktiolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"vuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Minä vuonna olet syntynyt? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Ikäsi vuoden 2020 lopussa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti voimme muuttaa merkkijonon liukuluvuksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":". Seuraava ohjelma kysyy käyttäjän painon ja pituuden ja laskee näiden tietojen avulla painoindeksin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna pituus: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna paino: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\nbmi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Painoindeksi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"bmi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus voisi näyttää vaikka seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pituus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"163"}]},{"type":"text","value":"\nAnna paino: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"74.45"}]},{"type":"text","value":"\nPainoindeksi on 28.02137829801649"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Luku kertaa viisi","tmcname":"osa01-13_kerrottuna_viidella"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lukua. Ohjelma tulostaa luvun kerrottuna viidellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nKun kerrotaan 3 luvulla 5, saadaan 15"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Nimi ja ikä","tmcname":"osa01-14_nimi_ja_ika"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä tämän nimen ja syntymävuoden. Ohjelma tulostaa sitten viestin seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keijo Keksitty"}]},{"type":"text","value":"\nAnna syntymävuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1990"}]},{"type":"text","value":"\nMoi Keijo Keksitty, olet 30 vuotta vanha vuoden 2020 lopussa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"muuttujien-kayttoa","style":"position:relative;"},"children":[{"type":"text","value":"Muuttujien käyttöä"},{"type":"element","tagName":"a","properties":{"href":"#muuttujien-kayttoa","ariaLabel":"muuttujien kayttoa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ohjelmaa, joka laskee kolmen käyttäjän syöttämän luvun summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku3\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nToinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\nKolmas luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nLukujen summa: 33"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käyttää nyt neljää muuttujaa. Tässä tilanteessa tultaisiin toimeen myös vähemmällä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kaikki käyttäjän syötteet luetaan muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":", jonka arvolla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kasvatetaan"}]},{"type":"text","value":" muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" arvoa joka kerta sen jälkeen kun käyttäjältä on saatu uusi syöte."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava komento siis "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kasvattaa"}]},{"type":"text","value":" muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" olevaa arvoa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" arvolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli esimerkiksi jos ennen komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" on 3 ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" on 2, niin komennon suorittamisen jälkeen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" arvona on 5."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska muuttujan arvon kasvattaminen on usein tarvittava toiminto, voimme kirjoittaa sen myös lyhyemmin näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän avulla saamme kirjoitettua ohjelman koodin tiiviimmin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse asiassa apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" ei välttämättä tarvita ollenkaan. Käyttäjän antamat syötteet voitaisiin lisätätä yksi kerrallaan muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" myös seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kolmas luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukujen summa: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Riippuu toki tilanteesta, montako muuttujaa ohjelmassa tarvitaan. Jos käyttäjän kaikkien syötteiden arvo tulee muistaa, ei ole mahdollista \"uusiokäyttää\" samaa apumuuttujaa kaikkien syötteiden lukemiseen. Näin on seuraavassa esimerkissä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" + "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" = "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nToinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n2 + 3 = 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toistaalta tässä ohjelmassa ei ole omaa muuttujaa summan arvon tallettamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa kuitenkin huomata, että yhtä muuttujaa ei kannata \"uusiokäyttää\" kuin samankaltaisiin asioihin, esim. summattavien lukujen tilapäiseen tallentamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa on uusiokäytetty muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tieto"}]},{"type":"text","value":" nimen ja iän tallentamiseen ja tämä ei ole missään nimessä järkevää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tieto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tieto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntieto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on ikäsi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelma jatkuu..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi on siis käyttää molempaa tarkoitusta varten omaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kuvaavasti nimettyä"}]},{"type":"text","value":" muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on ikäsi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelma jatkuu..."}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Vuorokaudet sekunteina","tmcname":"osa01-15_sekunteja_vuorokaudessa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä vuorokausien lukumäärän. Tämän jälkeen ohjelma tulostaa sekuntien määrän annetuissa vuorokausissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka monen vuorokauden sekunnit tulostetaan? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n86400"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkki:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka monen vuorokauden sekunnit tulostetaan? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n604800"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: Lukujen tulo","tmcname":"osa01-20_korjaa_ohjelma_lukujen_tulo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oheinen ohjelma kysyy käyttäjältä kolme lukua ja tulostaa näiden tulon (eli luvut kerrottuna toisillaan).\nOhjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi. Korjaa ohjelma sellaiseksi, että se toimii oikein."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman siis pitäisi toimia esimerkiksi näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna luku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nAnna luku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nTulo on 30"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lukujen summa ja tulo","tmcname":"osa01-16_lukujen_summa_ja_tulo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma joka kysyy käyttäjältä kaksi lukua. Ohjelma tulostaa lukujen summan ja tulon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nLukujen summa 10\nLukujen tulo 21"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lukujen summa ja keskiarvo","tmcname":"osa01-17_lukujen_summa_ja_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä neljä lukua ja tulostaa niiden summan ja keskiarvon"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLuku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nLuku 4: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nLukujen summa on 16 ja keskiarvo 4.0"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ruokailukustannukset","tmcname":"osa01-19_ruokailukustannukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka arvioi käyttäjän keskimääräisiä ruokailukustannuksia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kysyy, kuinka monta kertaa viikossa käyttäjä käy Unicafessa ja Unicafe-lounaan hinnan sekä viikon muiden ruokaostosten hinnan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näiden tietojen perusteella ohjelma laskee käyttäjän keskimääräiset ruokamenot sekä viikossa että yhtenä päivänä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Montako kertaa viikossa syöt Unicafessa? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nUnicafe-lounaan hinta? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2.5"}]},{"type":"text","value":"\nPaljonko käytät viikossa ruokaostoksiin? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"28.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kustannukset keskimäärin:\nPäivässä 5.5 euroa\nViikossa 38.5 euroa"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Opiskelijat ryhmiin","tmcname":"osa01-18_opiskelijat_ryhmiin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy kurssin opiskelijoiden määrän ja ryhmän koon ja ilmoittaa, montako ryhmää opiskelijoista muodostuu. Jos jako ei mene tasan, yhdessä ryhmässä voi olla vähemmän opiskelijoita, mutta kaikissa muissa on oltava haluttu määrä."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Montako opiskelijaa? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nMikä on ryhmän koko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nRyhmien määrä: 2"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Montako opiskelijaa? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"11"}]},{"type":"text","value":"\nMikä on ryhmän koko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nRyhmien määrä: 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vihje: tehtävän tekeminen onnistuu kokonaislukujakolaskuoperaattorilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Vihje2: jos et keksi miten tehtävä ratkeaa, älä huolestu suotta vaan tutustu "},{"type":"element","tagName":"a","properties":{"href":"/osa-1/5-ehtorakenne"},"children":[{"type":"text","value":"seuraavassa luvussa"}]},{"type":"text","value":" esiteltävään "},{"type":"element","tagName":"i","properties":{},"children":[{"type":"text","value":"ehtorakenteeseen"}]},{"type":"text","value":". Ehtorakenteen avulla tehtävä on huomattavasti helpompi ratkaista."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää muuttujia laskutoimitusten kanssa
    • \n
    • Osaat käsitellä käyttäjän antamia lukuarvoja
    • \n
    • Osaat muuntaa arvoja eri perustyyppien välillä
    • \n

    Aiemmissa osissa nähtiin esimerkkejä peruslaskutoimituksista. Seuraavaan taulukkoon on koottu Pythonin yleisimmät laskuoperaattorit esimerkkeineen:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OperaattoriMerkitysEsimerkkiTulos
    +Yhteenlasku2 + 46
    -Vähennyslasku10 - 2.57.5
    *Kertolasku-2 * 123-246
    /Jakolasku (liukuluku)9 / 24.5
    //Jakolasku (kokonaisluku)9 // 24
    %Jakojäännös9 % 21
    **Potenssi2 ** 38

    Laskujärjestys noudattaa matematiikasta tuttuja sääntöjä: aluksi lasketaan potenssilaskut, sitten kerto- ja jakolaskut ja lopuksi yhteen- ja vähennyslaskut. Järjestystä voidaan muuttaa sulkujen avulla.

    Esimerkki:

    print(2 + 3 * 3)\nprint((2 + 3) * 3)

    Ohjelma tulostaa

    11\n15

    Operandit, operaattorit ja tyypit

    Laskutoimituksen osana on yleensä operandeja ja operaattoreita:

    \n \n \n \n \n \n \"1\n \n \n

    Yleensä operandien tyyppi ratkaisee lopputuloksen tyypin: jos lasketaan yhteen kaksi kokonaislukua, myös tulos on kokonaisluku. Jos taas vähennetään liukuluku toisesta liukuluvusta, myös tulos on liukuluku. Itse asiassa tulos on liukuluku, jos edes yksi operandeista lausekkeessa on liukuluku.

    Jakolasku / muodostaa Pythonissa poikkeuksen sääntöön: sen tulos on liukuluku, vaikka operandit olisivatkin kokonaislukuja (esim. 1 / 5 tuottaa liukuluvun 0.2).

    Esimerkki:

    pituus = 172.5\npaino = 68.55\n\n# painoindeksi lasketaan jakamalla paino pituuden neliöllä\n# pituus ilmoitetaan kaavassa metreinä\nbmi = paino / (pituus / 100) ** 2\n\nprint(f\"Painoindeksi on {bmi}\")

    Ohjelman tulostus on seuraava:

    Painoindeksi on 23.037177063642087

    Huomaa, että Pythonissa on myös kokonaislukujakolaskuoperaattori //, joka tuottaa kokonaisluvun, jos sen operandit ovat kokonaislukuja. Vastaus pyöristetään alaspäin kokonaisluvuksi, eli esim.

    x = 3\ny = 2\n\nprint(f\"/-operaattori {x/y}\")\nprint(f\"//-operaattori {x//y}\")

    tulostaa

    /-operaattori 1.5\n//-operaattori 1

    Lukuarvojen lukeminen

    Aikaisemmin käytettiin input-komentoa lukemaan käyttäjältä merkkijonoja. Samaa funktiota voidaan käyttää myös lukuarvojen lukemiseen. Tällaisessa tapauksessa muunnos merkkijonosta lukutyyppiin on kuitenkin tehtävä itse. Logiikka on samanlainen kuin edellisessä osassa opitussa str-funktiossa, vain funktion nimi vaihtuu.

    Esimerkiksi voimme muuttaa merkkijonon kokonaisluvuksi funktiolla int. Seuraava ohjelma lukee käyttäjältä syntymävuoden muuttujaan syote ja luo sitten toisen muuttujan vuosi, jossa on vuosi kokonaisluvuksi muutettuna. Tämän jälkeen voimme suorittaa laskun 2020-vuosi, jossa on mukana käyttäjän antama vuosi.

    syote = input(\"Minä vuonna olet syntynyt? \")\nvuosi = int(syote)\nprint(f\"Ikäsi vuoden 2020 lopussa: {2020 - vuosi}\" )

    Minä vuonna olet syntynyt? 1995\nIkäsi vuoden 2020 lopussa: 25

    Yleensä ei kannata luoda kahta muuttujaa (tässä syote ja vuosi) lukuarvon lukemista varten, vaan voimme samalla kertaa lukea merkkijonon input-funktiolla ja muuttaa sen kokonaisluvuksi int-funktiolla:

    vuosi = int(input(\"Minä vuonna olet syntynyt? \"))\nprint(f\"Ikäsi vuoden 2020 lopussa: {2020 - vuosi}\" )

    Vastaavasti voimme muuttaa merkkijonon liukuluvuksi funktiolla float. Seuraava ohjelma kysyy käyttäjän painon ja pituuden ja laskee näiden tietojen avulla painoindeksin:

    pituus = float(input(\"Anna pituus: \"))\npaino = float(input(\"Anna paino: \"))\n\npituus = pituus / 100\nbmi = paino / pituus ** 2\n\nprint(f\"Painoindeksi on {bmi}\")

    Ohjelman tulostus voisi näyttää vaikka seuraavalta:

    Anna pituus: 163\nAnna paino: 74.45\nPainoindeksi on 28.02137829801649

    Tee ohjelma, joka kysyy käyttäjältä lukua. Ohjelma tulostaa luvun kerrottuna viidellä.

    Ohjelman tulee toimia seuraavasti:

    Anna luku: 3\nKun kerrotaan 3 luvulla 5, saadaan 15

    Tee ohjelma, joka kysyy käyttäjältä tämän nimen ja syntymävuoden. Ohjelma tulostaa sitten viestin seuraavan esimerkin mukaisesti:

    Anna nimi: Keijo Keksitty\nAnna syntymävuosi: 1990\nMoi Keijo Keksitty, olet 30 vuotta vanha vuoden 2020 lopussa

    Muuttujien käyttöä

    Tarkastellaan ohjelmaa, joka laskee kolmen käyttäjän syöttämän luvun summan:

    luku1 = int(input(\"Ensimmäinen luku: \"))\nluku2 = int(input(\"Toinen luku: \"))\nluku3 = int(input(\"Kolmas luku: \"))\n\nsumma = luku1 + luku2 + luku3\nprint(f\"Lukujen summa: {summa}\")

    Ohjelman esimerkkisuoritus:

    Ensimmäinen luku: 5\nToinen luku: 21\nKolmas luku: 7\nLukujen summa: 33

    Ohjelma käyttää nyt neljää muuttujaa. Tässä tilanteessa tultaisiin toimeen myös vähemmällä:

    summa = 0\n\nluku = int(input(\"Ensimmäinen luku: \"))\nsumma = summa + luku\n\nluku = int(input(\"Toinen luku: \"))\nsumma = summa + luku\n\nluku = int(input(\"kolmas luku: \"))\nsumma = summa + luku\n\nprint(f\"Lukujen summa: {summa}\")

    Nyt kaikki käyttäjän syötteet luetaan muuttujaan luku, jonka arvolla kasvatetaan muuttujan summa arvoa joka kerta sen jälkeen kun käyttäjältä on saatu uusi syöte.

    Seuraava komento siis kasvattaa muuttujassa summa olevaa arvoa muuttujan luku arvolla:

    summa = summa + luku

    Eli esimerkiksi jos ennen komentoa summa on 3 ja luku on 2, niin komennon suorittamisen jälkeen muuttujan summa arvona on 5.

    Koska muuttujan arvon kasvattaminen on usein tarvittava toiminto, voimme kirjoittaa sen myös lyhyemmin näin:

    summa += luku

    Tämän avulla saamme kirjoitettua ohjelman koodin tiiviimmin:

    summa = 0\n\nluku = int(input(\"Ensimmäinen luku: \"))\nsumma += luku\n\nluku = int(input(\"Toinen luku: \"))\nsumma += luku\n\nluku = int(input(\"kolmas luku: \"))\nsumma += luku\n\nprint(f\"Lukujen summa: {summa}\")

    Itse asiassa apumuuttujaa luku ei välttämättä tarvita ollenkaan. Käyttäjän antamat syötteet voitaisiin lisätätä yksi kerrallaan muuttujaan summa myös seuraavasti:

    summa = 0\n\nsumma += int(input(\"Ensimmäinen luku: \"))\nsumma += int(input(\"Toinen luku: \"))\nsumma += int(input(\"Kolmas luku: \"))\n\nprint(f\"Lukujen summa: {summa}\")

    Riippuu toki tilanteesta, montako muuttujaa ohjelmassa tarvitaan. Jos käyttäjän kaikkien syötteiden arvo tulee muistaa, ei ole mahdollista \"uusiokäyttää\" samaa apumuuttujaa kaikkien syötteiden lukemiseen. Näin on seuraavassa esimerkissä:

    luku1 = int(input(\"Ensimmäinen luku: \"))\nluku2 = int(input(\"Toinen luku: \"))\n\nprint(f\"{luku1} + {luku2} = {luku1+luku2}\")

    Ensimmäinen luku: 2\nToinen luku: 3\n2 + 3 = 5

    Toistaalta tässä ohjelmassa ei ole omaa muuttujaa summan arvon tallettamiseen.

    Kannattaa kuitenkin huomata, että yhtä muuttujaa ei kannata \"uusiokäyttää\" kuin samankaltaisiin asioihin, esim. summattavien lukujen tilapäiseen tallentamiseen.

    Esimerkiksi seuraavassa on uusiokäytetty muuttujaa tieto nimen ja iän tallentamiseen ja tämä ei ole missään nimessä järkevää:

    tieto = input(\"Mikä on nimesi? \")\nprint(\"Hei \" + tieto + \"!\")\n\ntieto = int(input(\"Mikä on ikäsi? \"))\n# ohjelma jatkuu...

    Parempi on siis käyttää molempaa tarkoitusta varten omaa kuvaavasti nimettyä muuttujaa:

    nimi = input(\"Mikä on nimesi? \")\nprint(\"Hei \" + nimi + \"!\")\n\nika = int(input(\"Mikä on ikäsi? \"))\n# ohjelma jatkuu...

    Tee ohjelma, joka kysyy käyttäjältä vuorokausien lukumäärän. Tämän jälkeen ohjelma tulostaa sekuntien määrän annetuissa vuorokausissa.

    Ohjelman tulee toimia seuraavasti:

    Kuinka monen vuorokauden sekunnit tulostetaan? 1\n86400

    Toinen esimerkki:

    Kuinka monen vuorokauden sekunnit tulostetaan? 7\n604800

    Oheinen ohjelma kysyy käyttäjältä kolme lukua ja tulostaa näiden tulon (eli luvut kerrottuna toisillaan).\nOhjelmassa on kuitenkin virhe tai virheitä, joiden takia se ei toimi. Korjaa ohjelma sellaiseksi, että se toimii oikein.

    Ohjelman siis pitäisi toimia esimerkiksi näin:

    Anna luku 1: 2\nAnna luku 2: 3\nAnna luku 3: 5\nTulo on 30

    Tee ohjelma joka kysyy käyttäjältä kaksi lukua. Ohjelma tulostaa lukujen summan ja tulon.

    Ohjelman tulee toimia seuraavasti:

    Luku 1: 3\nLuku 2: 7\nLukujen summa 10\nLukujen tulo 21

    Tee ohjelma, joka lukee käyttäjältä neljä lukua ja tulostaa niiden summan ja keskiarvon

    Ohjelman tulee toimia seuraavasti:

    Luku 1: 2\nLuku 2: 1\nLuku 3: 6\nLuku 4: 7\nLukujen summa on 16 ja keskiarvo 4.0

    Tee ohjelma, joka arvioi käyttäjän keskimääräisiä ruokailukustannuksia.

    Ohjelma kysyy, kuinka monta kertaa viikossa käyttäjä käy Unicafessa ja Unicafe-lounaan hinnan sekä viikon muiden ruokaostosten hinnan.

    Näiden tietojen perusteella ohjelma laskee käyttäjän keskimääräiset ruokamenot sekä viikossa että yhtenä päivänä.

    Ohjelman tulee toimia seuraavasti:

    Montako kertaa viikossa syöt Unicafessa? 4\nUnicafe-lounaan hinta? 2.5\nPaljonko käytät viikossa ruokaostoksiin? 28.5

    Kustannukset keskimäärin:\nPäivässä 5.5 euroa\nViikossa 38.5 euroa

    Tee ohjelma, joka kysyy kurssin opiskelijoiden määrän ja ryhmän koon ja ilmoittaa, montako ryhmää opiskelijoista muodostuu. Jos jako ei mene tasan, yhdessä ryhmässä voi olla vähemmän opiskelijoita, mutta kaikissa muissa on oltava haluttu määrä.

    Montako opiskelijaa? 8\nMikä on ryhmän koko? 4\nRyhmien määrä: 2

    Montako opiskelijaa? 11\nMikä on ryhmän koko? 3\nRyhmien määrä: 4

    Vihje: tehtävän tekeminen onnistuu kokonaislukujakolaskuoperaattorilla //

    Vihje2: jos et keksi miten tehtävä ratkeaa, älä huolestu suotta vaan tutustu seuraavassa luvussa esiteltävään ehtorakenteeseen. Ehtorakenteen avulla tehtävä on huomattavasti helpompi ratkaista.

    Kertauskysely tämän osan asioihin liittyen:

    ","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/4-laskentaa-luvuilla.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-1/5-ehtorakenne/page-data.json b/page-data/osa-1/5-ehtorakenne/page-data.json index 7da57739c..076f3e7f9 100644 --- a/page-data/osa-1/5-ehtorakenne/page-data.json +++ b/page-data/osa-1/5-ehtorakenne/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-1/5-ehtorakenne", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää yksinkertaista ehtorakennetta ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan totuusarvoilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa ehtoja vertailuoperaattoreiden avulla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän mennessä kaikissa ohjelmissamme on suoritettu samat rivit samassa järjestyksessä.\nUsein on kuitenkin tarpeen määritellä ohjelmaan osia, jotka suoritetaan vain tietyissä tilanteissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi tarkastaa, onko henkilö täysi-ikäinen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kuinka vanha olet? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet täysi-ikäinen!\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tässä siis sinulle ikiomaksi GTA6.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Seuraava asiakas, kiitos!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää tältä, kun ikä on suurempi kuin 17:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"18"}]},{"type":"text","value":"\nOlet täysi-ikäinen!\nTässä siis sinulle ikiomaksi GTA6.\nSeuraava asiakas, kiitos!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kuitenkaan ikä ei ole suurempi kuin 17, käy näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"16"}]},{"type":"text","value":"\nSeuraava asiakas, kiitos!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä tarkastelemalla huomataan, että syötteenä annettu arvo vaikuttaa nyt siihen, mitkä osat ohjelmasta suoritetaan. Ohjelmassa on käytössä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehtorakenne"}]},{"type":"text","value":", jonka sisällä oleva koodi suoritetaan vain, kun annettu ehto on tosi."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 363px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 126.52173913043478%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB60lEQVQ4y5WVV6/CMAyF+/9/EM9IvCAkHtiILfbee/nq81VQGlIolqq6aXxy7OMkgcSw5/Op78PhIPf7PTTmWuAL5O3z5/O5XK/Xt/FIQHdlE/R4PPR7MBjIfr/3LvqRIQAEugzS6bTU6/U3AvbjBbxcLjIajdSnZtvtVvr9viyXS1ksFvrPt2AkQ+o0m81eadZqNcnn81KpVPTBbzab0ul0dN50OpXhcCibzUYCm66plQ3I+G63k8lkIuv1WlmOx2M5nU6hGDoA0QKf9C6gsUajoWA+YwHKETAhm81KoVCQarUqvV5PqcPIVTOXy2mqrhghQApODQCm2KTFT8aMIQCTM5mMLgp7ux9DgN9SxvAJMEYGELEBj8fjP+A3UTAmAlgqlVRZGLuAtBrZRfahy5Cx8/msi6E6LO0YFG6329F9aKu5Wq20pgTh03OkaMcwViwW3wHt7Wfv1dvt9uoAfHe+N+VPBwRGgHsgvIny6fgy3zCifslkUvsVgYyAsdrGXYCJsCNdFKaebg1/AmT/Ighbr9VqqU9w7L3sAqIsk1OplJ42tFEikdBOgC0Pu4x2igUIAOmSFrWEnTm5v14BUY0OS9Ll0MC3L6vIE/tbC9lt42ud2AxN4cvlcuhY812nwS/3crfbVcU/3ct/vS6flnKmxFEAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/94986ed527f8f4c5b0dc6a9053d071b7/a0b58/1_6.webp 230w","/static/94986ed527f8f4c5b0dc6a9053d071b7/2ed29/1_6.webp 363w"],"sizes":"(max-width: 363px) 100vw, 363px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/94986ed527f8f4c5b0dc6a9053d071b7/81c8e/1_6.png 230w","/static/94986ed527f8f4c5b0dc6a9053d071b7/4e786/1_6.png 363w"],"sizes":"(max-width: 363px) 100vw, 363px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/94986ed527f8f4c5b0dc6a9053d071b7/4e786/1_6.png","alt":"1 6","title":"1 6","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtorakenteessa avainsanaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" seuraa jokin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehto"}]},{"type":"text","value":", kuten kahden arvon vertailu. Tämän jälkeen tuleva koodi suoritetaan vain, jos ehto pitää paikkansa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että ehtorakenteen ensimmäisen rivin lopussa on kaksoispiste. Seuraavassa koodissa kaksoispiste on unohtunut:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaksoispiste unohtui seuraavan rivin lopusta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet täysi-ikäinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän seurauksena koodi antaa virheen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"File \"ohjelma.py\", line 3\n if ika > 17\n ^\nSyntaxError: invalid syntax\n"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"h2","properties":{"id":"vertailuoperaattorit","style":"position:relative;"},"children":[{"type":"text","value":"Vertailuoperaattorit"},{"type":"element","tagName":"a","properties":{"href":"#vertailuoperaattorit","ariaLabel":"vertailuoperaattorit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyypillinen ehto on kahden arvon vertailu. Pythonin vertailuoperaattorit ovat:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Merkitys"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Esimerkki"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Yhtä suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a == b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Eri suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a != b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Suurempi"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a > b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Suurempi tai yhtä suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a >= b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Pienempi"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a < b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Pienempi tai yhtä suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a <= b"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöttämä luku negatiivinen, positiivinen vai nolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on positiivinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on nolla.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma suoritettuna kolme kertaa eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nLuku on positiivinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-18"}]},{"type":"text","value":"\nLuku on negatiivinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nLuku on nolla."}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisentaminen","style":"position:relative;"},"children":[{"type":"text","value":"Sisentäminen"},{"type":"element","tagName":"a","properties":{"href":"#sisentaminen","ariaLabel":"sisentaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tunnistaa ehtorakenteen sisällä olevan koodin siitä, että jokainen rivi on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sisennetty"}]},{"type":"text","value":" samalla tavalla. Tämä tarkoittaa, että ehtorakenteen sisällä olevan koodin alussa on tyhjää tilaa. Jokaisella rivillä tulee olla yhtä paljon tyhjää tilaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"salasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna salasana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" salasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kissa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiesit salasanan!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet siis joko oikea käyttäjä...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"...tai melkoinen hakkerivelho.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelman suoritus päättyi. Kiitos ja hei!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyhjä tila saadaan aikaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tabulaattorilla"}]},{"type":"text","value":", jonka saat Tab-näppäimestä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 537px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 67.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAEQklEQVQ4y4WT/TPbBxzHv39D7zZH57FDqdZQWykroYmQB/KAREhEHj0kCEHiKb6SSIR4SDwuw5W5YaImqnO7royutM1Zx7pq1TZ3G03cVrfK3Oqzy37aL7v99H7d+z6/vD+fzxsBgCMA2AeAg3/pf/H+/80iuy92v9VrW2eMBqN1espqNrQYFtr07WPWz2YGdGrdoqnTNDIzPWNBG9DFwb6PhsbHxofUKvXisGXYMj46PoI2oF+MjowODluGxzSodh65ab0JQX7BEBMVC0XC4mM3X4mMgWJhMfifDQBsIu5UWCACzzNeQCVRT3MZefDOW97AoDNPs6jZ4O3hA9xc7ht8cioE+gYBYn9of8rKYt2vlStXOg0dFj5HYFdW1y626dtv8Ni8DbSheUGLaj/hsPI39NrWebQB/ZTN5Ng7DB02RZVyKj+X+9DUaZorl8hmBFzhN8jdO3d/T8WTnQQi1alv61yiZ2Q5CViCs03fvsygMZw4TIqjRa1bFhaIHEkfJjubVepVaZH0l8Q4zG9oA/qoXCLbxsQnHTXWqTZKxJInyOSUFQLPeALeLwia8/mvos6Hg593IMgkssOIC5Hg7xUARYIiJyYOA95v+wCPzT8kppD+iZ3P4v6Rdj3txNfTD3IyWa9JeLIL2ZqadjZisNvl2azn1matzYBL2+bgST+bewdmuSzuJj0987nRYJwT8cTf0cj0HYOubb5YVGKnEKk/6jX6LyWF0hUKkbqnRbV3Kkorl5AHHw8dMNm8nRwmZzeDnvPEbDCuGcnUPTol64eB3gGbQq7Yyc3O3TYajLYauWKHnk5/ptPobU31TdsMGvOFBtUuqupUG1nU7J8aa1VLyESXGd6PvgqRoRHg5+EDUmkF5IRHQ5iXP5SVVjhxiTi4FBwOIp7Y4b6kOx43t8CRQaDAu96BwMnhHOEwKW98PHyBQWOeIF/1DRxdT6M4qemZh0QSzanXtj6TRccckvFkR19P/yo+OfUgJQn/sruje5VGph9gE3AOg67tXk4max8Tn3So0+gf5THZO0nxya9UdapNZGdick9LyVyr5InstTzRujGVZB9X1vcr65qsbEbeA3WTZs69NzaTvdZU3zTX3to+z80rWFdW1dq6O0zzfI5gTV5etWDqNH8u4onvIVbrLBAuXQbBB3GA9fSFi2cDQFxUusLKYv0aFnQRCDiiS1ggcrk5DUtwFQqKXO7HT7iaeFwilvzp9mMux/5VLpEdX4u5BsiCbeEoNjbhJQ5PdrwXccUZHhb1Wt3YfINKoq2HnAs9EXCFmzwO//sg32AXj8PfFBWIt84HhLgYNOaWpFC6GXIu9DiDQNmWSWWPIy5EHiFbm1tPy4rL7lfLqh4b9e23uo1dt+Tl8ts6tW7S3NWzUFOpWG1R62Z7Tb1zNZU1y9rmltv9Pf3TCrli2d1vy4Blqra67ut6ZcPiYN/gxN+K6mUiaF+/igAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/43a34a2e4b0bc023009954d6f7809f7c/a0b58/1_6_keyboard.webp 230w","/static/43a34a2e4b0bc023009954d6f7809f7c/bc10c/1_6_keyboard.webp 460w","/static/43a34a2e4b0bc023009954d6f7809f7c/27c24/1_6_keyboard.webp 537w"],"sizes":"(max-width: 537px) 100vw, 537px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/43a34a2e4b0bc023009954d6f7809f7c/81c8e/1_6_keyboard.png 230w","/static/43a34a2e4b0bc023009954d6f7809f7c/08a84/1_6_keyboard.png 460w","/static/43a34a2e4b0bc023009954d6f7809f7c/b1cde/1_6_keyboard.png 537w"],"sizes":"(max-width: 537px) 100vw, 537px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/43a34a2e4b0bc023009954d6f7809f7c/b1cde/1_6_keyboard.png","alt":"1 6 keyboard","title":"1 6 keyboard","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suurin osa editoreista osaa automaattisesti sisentää rivin, kun edellinen rivi päättyy kaksoispisteeseen. Voit lopettaa sisentämisen editorissa painamalla rivin alussa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Backspace"}]},{"type":"text","value":"-näppäintä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 293px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 96.08695652173913%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEtElEQVQ4y3WU6U+UVxSHSdMvbbWNSgXZh2FmGAYYdnBBERA6SsdWZYdgK4ggOyrKElBR6oYoaFllHdZhUQGRalkTo8QUqMFGwCVubfzWf+Bp3kuaNDF9k5O89+Te555zfvcck7DQMAb6Boj4PoLw78LxcvWmsb6JI5m5hG4PZkdAEGnJqRia29gVFELUnnB2BocyYOwnISoGfYiOwC3bKC4oRvpMtvj401B3Aw9nT6R/maWciovlREUkopBvRuMYQHTkQa5cq0ahCcLHT4dK7U9DUxtbg+Nx89mJQrGJtEO5K8DYyDgmJ6bQ63YTFvqtgN7sG6Awv4ygwDj8A6PIzjrJUGUVP3jq+EkfT5kumqe19ZRFprHPJZhtXjrKymtWgE8X/mDm0QzTU9NMjE/y6uUrJN+D6Wnuj4/x8pe7fGhqZLamlme3Bng6Mc785ARPJqdYvHuH2YZaxvOO8WHw9gqw6EQRjvZqtE5uOFgrMHYZ2Ru2BzuZI3q5mnMBwXQbOtF6+KFx8Uat0qJWuqJSOKNUadG4+iCXqenJy4eZGUwK8gpE/by1PqjlTrQ2txETEYuvmy/Zji7sCgmjtbWdiN37iI+ME+IFbNqOm9oNT40HXs6eKK3kGIZGYGoSk8zDWdhZyFDaqbBYZ0l9TT36b/Qigngza6I2bqOhowcbCxlySzlyCxkOlnIcrFZMYavCzMyWxoYmGPsVk672LqLDY8hOz+ZQYgpzs3OcO3OO/QlJnEjNYProcRa6ukmMjONAYgoH07JJTMkgMTWT5NRM0pNSSdHpeVRQBO/eYXJnaIT3799zs/8mfcY+UcOHDx6yvLiEob2L/p4+jCcKeVFTx9+Dg7xu7+BDXz9/Go0sNzYxejSP3sxs/lpcWhHFTeNFd2c3fh4bUdqq+PrL9STE7ud65c8orBVCsNVfmQl444XLaNdZoHP1Zq/fVrwsZKjtHDG3lIs6C2DA5u30dveiC96Jj7uvAKQmpVJXXYevu5+4SLbBDmNXD9U19ezYsYvomARCQsLQOLnj4eKF0kZB+79AF5Urbc1tQmnp2Ziu/prYiDguX6zAxtwWlcyRLz5dRfONZiorKvnsk89FJhoHZ7RqN9w1Hjj8F1h9rZo3r99QefkqZ0+d5VTxaYZuDbHwZIHTJaVCoNKSUpYWl1heWqbiYgUpiSloFP8DvFJ+lUvny7l04SrLS8/FoJCiO3/2PG0tBl48f0FlRZXYU3ryDI9nHjM6Morc2kHAPgIqbJTYWzmwfo09NddrOfhjMl5ab8zXbGCT12aRqnRYSn3dKlNyMnJFBpLPTeP+MVAq+kqXqDG0GIiLihebXB21oksMre3odXoCtwSJgyWFJQzfHhaNII06yaTLOto6VoDSQorSfK0FTTeahdqWplbYmtvh77uVlsYWnJUuODlohGDHcvLoN/azdpUpMgt7ZJb2wi86RQJ2GjrpMHSK6CRx7o3eE6pL6+HBYd6+eSvS6WzvFPD5ud9ZfLaINFSkmp4uLqXweBHzc/MrwKorVWJcZaVlk3k4k+QDhxkducfI8Ahph9KF/0jWUWF5uXkk7k9ioHeAsftjpKekk38sn5yMHGZ/mxXAfwDrwXYWIBU21wAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7f8b7a68350e9455732bc0462f21ccff/a0b58/1_6_keyboard2.webp 230w","/static/7f8b7a68350e9455732bc0462f21ccff/2b735/1_6_keyboard2.webp 293w"],"sizes":"(max-width: 293px) 100vw, 293px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7f8b7a68350e9455732bc0462f21ccff/81c8e/1_6_keyboard2.png 230w","/static/7f8b7a68350e9455732bc0462f21ccff/3cf3e/1_6_keyboard2.png 293w"],"sizes":"(max-width: 293px) 100vw, 293px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7f8b7a68350e9455732bc0462f21ccff/3cf3e/1_6_keyboard2.png","alt":"1 6 keyboard2","title":"1 6 keyboard2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"small","properties":{},"children":[{"type":"element","tagName":"center","properties":{},"children":[{"type":"text","value":"\nNäppäimistökuvien alkuperä:\n "},{"type":"element","tagName":"a","properties":{"href":"https://pixabay.com/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=311803"},"children":[{"type":"text","value":"Clker-Free-Vector-Images"}]},{"type":"text","value":" from "},{"type":"element","tagName":"a","properties":{"href":"https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=311803"},"children":[{"type":"text","value":"Pixabay"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Orwell","tmcname":"osa01-21_orwel"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun ja tulostaa merkkijonon \"Orwell\" jos luku on täsmälleen 1984. Muussa tapauksessa ohjelma ei tulosta mitään."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2020"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1984"}]},{"type":"text","value":"\nOrwell"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Itseisarvo","tmcname":"osa01-22_itseisarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka lukee käyttäjältä kokonaisluvun. Mikäli luku on pienempi kuin 0, ohjelma tulostaa luvun kerrottuna luvulla -1. Muulloin ohjelma tulostaa käyttäjän syöttämän luvun. Alla on muutamia esimerkkejä ohjelman odotetusta toiminnasta."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-7"}]},{"type":"text","value":"\nLuvun itseisarvo on 7"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLuvun itseisarvo on 1"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-99"}]},{"type":"text","value":"\nLuvun itseisarvo on 99"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Keittoa vai ei","tmcname":"osa01-23_keittoa_vai_ei"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy ensin käyttäjän nimen. Jos nimi on mikä tahansa muu kuin \"Jerry\", ohjelma kysyy keittoannosten lukumäärän ja kertoo sitten kokonaishinnan. Yksi annos maksaa 5,90."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkisuoritusta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kramer"}]},{"type":"text","value":"\nKuinka monta annosta keittoa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nKokonaishinta on 11.8\nSeuraava!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jerry"}]},{"type":"text","value":"\nSeuraava!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Luvun suuruusluokka","tmcname":"osa01-24_luvun_suuruusluokka"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä kokonaisluvun ja kertoo sitten sen suuruusluokan oheisten esimerkkisuoritusten mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"950"}]},{"type":"text","value":"\nLuku on pienempi kuin 1000\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"59"}]},{"type":"text","value":"\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nLuku on pienempi kuin 10\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1123"}]},{"type":"text","value":"\nKiitos!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"totuusarvot","style":"position:relative;"},"children":[{"type":"text","value":"Totuusarvot"},{"type":"element","tagName":"a","properties":{"href":"#totuusarvot","ariaLabel":"totuusarvot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtorakenteessa käytettävä ehto saa totuusarvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" (tosi) tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" (epätosi). Esimerkiksi ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a < 5"}]},{"type":"text","value":" on tosi jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" on alle 5 ja epätosi jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" on 5 tai suurempi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnissa totuusarvoja kutsutaan usein boolean-arvoiksi matemaatikko George Boolen kehittämän algebrallisen rakenteen mukaan. Pythonissa totuusarvoja käsitellään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":"-tietotyypin avulla, ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":"-tyyppisillä muuttujilla voi olla vain kaksi eri arvoa: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme asettaa ehdon tuloksen muuttujan arvoksi samaan tapaan kuin laskutoimituksen tuloksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nehto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ehto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ehto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a on pienempi kuin 5\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\na on pienempi kuin 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää koodissa myös sanoja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":". Esimerkiksi seuraava koodi suorittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon aina, koska ehdon arvona on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ehto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ehto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänne tullaan aina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tänne tullaan aina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Laskin","tmcname":"osa01-25_laskin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä ensin kaksi lukua ja sen jälkeen komennon. Jos komento on joko "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":", "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tulo"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"erotus"}]},{"type":"text","value":", ohjelma laskee syötteille kyseisen operaation tuloksen. Muussa tapauksessa ohjelma ei tulosta mitään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"17"}]},{"type":"text","value":"\nKomento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"summa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"10 + 17 = 27"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nKomento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tulo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4 * 6 = 24"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nKomento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erotus"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4 - 6 = -2"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lämpötilat","tmcname":"osa01-26_lampotilat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lämpötilan fahrenheit-asteina, ja tulostaa sitten lämpötilan celsius-asteina. Jos lämpötila celsius-asteina on pienempi kuin 0, ohjelma tulostaa lisäksi viestin \"Paleltaa!\"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaavan fahrenheit-asteiden muuntamiseksi celsius-asteiksi voit etsiä esimerkiksi googlaamalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkisuoritusta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila (F): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"101"}]},{"type":"text","value":"\n101 fahrenheit-astetta on 38.333333333333336 celsius-astetta"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila (F): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\n21 fahrenheit-astetta on -6.111111111111111 celsius-astetta\nPaleltaa!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Palkka","tmcname":"osa01-27_palkka"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy tuntipalkkaa, työskenneltyjen tuntien määrää ja viikonpäivää. Ohjelma tulostaa palkan, joka on tuntipalkka kertaa tuntien määrä muina päivinä paitsi sunnuntaisin, jolloin tuntipalkka on kaksinkertainen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuntipalkka: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8.5"}]},{"type":"text","value":"\nTyötunnit: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nViikonpäivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"maanantai"}]},{"type":"text","value":"\nPalkka 25.5 euroa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuntipalkka: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12.5"}]},{"type":"text","value":"\nTyötunnit: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nViikonpäivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sunnuntai"}]},{"type":"text","value":"\nPalkka 250.0 euroa"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: Korkoa kortille","tmcname":"osa01-28_korjaaa_ohjelma_korkoa_kortille"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa lasketaan bonuskortin saldoon vuoden lopussa lisättävä bonuspistemäärä seuraavan kaavan mukaisesti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos bonuspisteitä on alle sata, korkona saa 10 % lisää pisteitä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Muussa tapauksessa korkona saa 15 % lisää pisteitä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma siis toimii esim. näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka paljon pisteitä? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"55"}]},{"type":"text","value":"\nSait 10 % bonusta\nPisteitä on nyt 60.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii kuitenkin jollain syötteillä oudosti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka paljon pisteitä? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"95"}]},{"type":"text","value":"\nSait 10 % bonusta\nSait 15 % bonusta\nPisteitä on nyt 120.175"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa ohjelma niin, että bonusta tulee joko 10 % tai 15 %, ei koskaan molempia."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Huomiset vaatteet","tmcname":"osa01-29_huomisen_vaatteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy huomisen sääennusteen ja suosittelee sen mukaista pukeutumista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suositus vaihtelee sen mukaan, onko lämpötila yli 20 astetta, yli 10 astetta vai yli 5 astetta. Myös sade vaikuttaa suositukseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nPue housut ja t-paita"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"11"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nPue housut ja t-paita\nOta myös pitkähihainen paita"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kyllä"}]},{"type":"text","value":"\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki\nSuosittelen lämmintä takkia\nKannattaa ottaa myös hanskat\nMuista sateenvarjo!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Toisen asteen yhtälön ratkaiseminen","tmcname":"osa01-30_toisen_asteen_yhtalo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-moduulissa on funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":", jolla voi laskea luvun neliöjuuren. Voit käyttää sitä ohjelmassa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka ratkaisee toisen asteen yhtälön ax²+bx+c. Ohjelmalle annetaan arvot a, b ja c, ja sen tulee laskea juuret (eli ratkaisut) kaavalla"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"x = (-b ± sqrt(b²-4ac))/(2a)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että yhtälöllä on kaksi juurta, jolloin yllä oleva kaava toimii."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkituloste:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna a: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna b: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna c: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Juuret ovat 2.0 ja -4.0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää yksinkertaista ehtorakennetta ohjelmoinnissa
    • \n
    • Tiedät, mitä tarkoitetaan totuusarvoilla
    • \n
    • Osaat muodostaa ehtoja vertailuoperaattoreiden avulla
    • \n

    Tähän mennessä kaikissa ohjelmissamme on suoritettu samat rivit samassa järjestyksessä.\nUsein on kuitenkin tarpeen määritellä ohjelmaan osia, jotka suoritetaan vain tietyissä tilanteissa.

    Esimerkiksi seuraava koodi tarkastaa, onko henkilö täysi-ikäinen:

    ika = int(input(\"Kuinka vanha olet? \"))\n\nif ika > 17:\n    print(\"Olet täysi-ikäinen!\"\n    print(\"Tässä siis sinulle ikiomaksi GTA6.\")\n\nprint(\"Seuraava asiakas, kiitos!\")

    Ohjelman suoritus näyttää tältä, kun ikä on suurempi kuin 17:

    Kuinka vanha olet? 18\nOlet täysi-ikäinen!\nTässä siis sinulle ikiomaksi GTA6.\nSeuraava asiakas, kiitos!

    Jos kuitenkaan ikä ei ole suurempi kuin 17, käy näin:

    Kuinka vanha olet? 16\nSeuraava asiakas, kiitos!

    Esimerkkejä tarkastelemalla huomataan, että syötteenä annettu arvo vaikuttaa nyt siihen, mitkä osat ohjelmasta suoritetaan. Ohjelmassa on käytössä ehtorakenne, jonka sisällä oleva koodi suoritetaan vain, kun annettu ehto on tosi.

    \n \n \n \n \n \"1\n \n

    Suurin osa editoreista osaa automaattisesti sisentää rivin, kun edellinen rivi päättyy kaksoispisteeseen. Voit lopettaa sisentämisen editorissa painamalla rivin alussa Backspace-näppäintä.

    \n \n \n \n \n \"1\n \n \n
    \nNäppäimistökuvien alkuperä:\n Clker-Free-Vector-Images from Pixabay\n

    Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun ja tulostaa merkkijonon \"Orwell\" jos luku on täsmälleen 1984. Muussa tapauksessa ohjelma ei tulosta mitään.

    Anna luku: 2020

    Anna luku: 1984\nOrwell

    Kirjoita ohjelma, joka lukee käyttäjältä kokonaisluvun. Mikäli luku on pienempi kuin 0, ohjelma tulostaa luvun kerrottuna luvulla -1. Muulloin ohjelma tulostaa käyttäjän syöttämän luvun. Alla on muutamia esimerkkejä ohjelman odotetusta toiminnasta.

    Anna luku: -7\nLuvun itseisarvo on 7

    Anna luku: 1\nLuvun itseisarvo on 1

    Anna luku: -99\nLuvun itseisarvo on 99

    Kirjoita ohjelma, joka kysyy ensin käyttäjän nimen. Jos nimi on mikä tahansa muu kuin \"Jerry\", ohjelma kysyy keittoannosten lukumäärän ja kertoo sitten kokonaishinnan. Yksi annos maksaa 5,90.

    Kaksi esimerkkisuoritusta:

    Mikä on nimesi: Kramer\nKuinka monta annosta keittoa: 2\nKokonaishinta on 11.8\nSeuraava!

    Mikä on nimesi: Jerry\nSeuraava!

    Tee ohjelma, joka lukee käyttäjältä kokonaisluvun ja kertoo sitten sen suuruusluokan oheisten esimerkkisuoritusten mukaisesti:

    Anna luku: 950\nLuku on pienempi kuin 1000\nKiitos!

    Anna luku: 59\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nKiitos!

    Anna luku: 2\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nLuku on pienempi kuin 10\nKiitos!

    Anna luku: 1123\nKiitos!

    Totuusarvot

    Ehtorakenteessa käytettävä ehto saa totuusarvon True (tosi) tai False (epätosi). Esimerkiksi ehto a < 5 on tosi jos a on alle 5 ja epätosi jos a on 5 tai suurempi.

    Ohjelmoinnissa totuusarvoja kutsutaan usein boolean-arvoiksi matemaatikko George Boolen kehittämän algebrallisen rakenteen mukaan. Pythonissa totuusarvoja käsitellään bool-tietotyypin avulla, ja bool-tyyppisillä muuttujilla voi olla vain kaksi eri arvoa: True tai False.

    Voimme asettaa ehdon tuloksen muuttujan arvoksi samaan tapaan kuin laskutoimituksen tuloksen:

    a = 3\nehto = a < 5\nprint(ehto)\nif ehto:\n    print(\"a on pienempi kuin 5\")

    True\na on pienempi kuin 5

    Voimme käyttää koodissa myös sanoja True ja False. Esimerkiksi seuraava koodi suorittaa print-komennon aina, koska ehdon arvona on True:

    ehto = True\nif ehto:\n    print(\"Tänne tullaan aina\")

    Tänne tullaan aina

    Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa.

    Tee ohjelma, joka kysyy käyttäjältä ensin kaksi lukua ja sen jälkeen komennon. Jos komento on joko summa, tulo tai erotus, ohjelma laskee syötteille kyseisen operaation tuloksen. Muussa tapauksessa ohjelma ei tulosta mitään.

    Esimerkkitulostuksia:

    Luku 1: 10\nLuku 2: 17\nKomento: summa

    10 + 17 = 27

    Luku 1: 4\nLuku 2: 6\nKomento: tulo

    4 * 6 = 24

    Luku 1: 4\nLuku 2: 6\nKomento: erotus

    4 - 6 = -2

    Tee ohjelma, joka kysyy käyttäjältä lämpötilan fahrenheit-asteina, ja tulostaa sitten lämpötilan celsius-asteina. Jos lämpötila celsius-asteina on pienempi kuin 0, ohjelma tulostaa lisäksi viestin \"Paleltaa!\".

    Kaavan fahrenheit-asteiden muuntamiseksi celsius-asteiksi voit etsiä esimerkiksi googlaamalla.

    Kaksi esimerkkisuoritusta:

    Anna lämpötila (F): 101\n101 fahrenheit-astetta on 38.333333333333336 celsius-astetta

    Anna lämpötila (F): 21\n21 fahrenheit-astetta on -6.111111111111111 celsius-astetta\nPaleltaa!

    Tee ohjelma, joka kysyy tuntipalkkaa, työskenneltyjen tuntien määrää ja viikonpäivää. Ohjelma tulostaa palkan, joka on tuntipalkka kertaa tuntien määrä muina päivinä paitsi sunnuntaisin, jolloin tuntipalkka on kaksinkertainen.

    Tuntipalkka: 8.5\nTyötunnit: 3\nViikonpäivä: maanantai\nPalkka 25.5 euroa

    Tuntipalkka: 12.5\nTyötunnit: 10\nViikonpäivä: sunnuntai\nPalkka 250.0 euroa

    Ohjelmassa lasketaan bonuskortin saldoon vuoden lopussa lisättävä bonuspistemäärä seuraavan kaavan mukaisesti:

      \n
    • Jos bonuspisteitä on alle sata, korkona saa 10 % lisää pisteitä
    • \n
    • Muussa tapauksessa korkona saa 15 % lisää pisteitä
    • \n

    Ohjelma siis toimii esim. näin:

    Kuinka paljon pisteitä? 55\nSait 10 % bonusta\nPisteitä on nyt 60.5

    Ohjelma toimii kuitenkin jollain syötteillä oudosti:

    Kuinka paljon pisteitä? 95\nSait 10 % bonusta\nSait 15 % bonusta\nPisteitä on nyt 120.175

    Korjaa ohjelma niin, että bonusta tulee joko 10 % tai 15 %, ei koskaan molempia.

    Tee ohjelma, joka kysyy huomisen sääennusteen ja suosittelee sen mukaista pukeutumista.

    Suositus vaihtelee sen mukaan, onko lämpötila yli 20 astetta, yli 10 astetta vai yli 5 astetta. Myös sade vaikuttaa suositukseen.

    Ohjelma toimii seuraavasti:

    Kerro huominen sääennuste:\nLämpötila: 21\nSataako (kyllä/ei): ei\nPue housut ja t-paita

    Kerro huominen sääennuste:\nLämpötila: 11\nSataako (kyllä/ei): ei\nPue housut ja t-paita\nOta myös pitkähihainen paita

    Kerro huominen sääennuste:\nLämpötila: 7\nSataako (kyllä/ei): ei\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki

    Kerro huominen sääennuste:\nLämpötila: 3\nSataako (kyllä/ei): kyllä\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki\nSuosittelen lämmintä takkia\nKannattaa ottaa myös hanskat\nMuista sateenvarjo!

    Pythonin math-moduulissa on funktio sqrt, jolla voi laskea luvun neliöjuuren. Voit käyttää sitä ohjelmassa seuraavasti:

    from math import sqrt\n\nprint(sqrt(9))

    Ohjelma tulostaa:

    3.0

    Kirjoita ohjelma, joka ratkaisee toisen asteen yhtälön ax²+bx+c. Ohjelmalle annetaan arvot a, b ja c, ja sen tulee laskea juuret (eli ratkaisut) kaavalla

    x = (-b ± sqrt(b²-4ac))/(2a).

    Voit olettaa, että yhtälöllä on kaksi juurta, jolloin yllä oleva kaava toimii.

    Esimerkkituloste:

    Anna a: 1\nAnna b: 2\nAnna c: -8

    Juuret ovat 2.0 ja -4.0

    Kertauskysely tämän osan asioihin liittyen:

    Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:

    ","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/5-ehtorakenne.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää yksinkertaista ehtorakennetta ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan totuusarvoilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa ehtoja vertailuoperaattoreiden avulla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän mennessä kaikissa ohjelmissamme on suoritettu samat rivit samassa järjestyksessä.\nUsein on kuitenkin tarpeen määritellä ohjelmaan osia, jotka suoritetaan vain tietyissä tilanteissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi tarkastaa, onko henkilö täysi-ikäinen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kuinka vanha olet? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet täysi-ikäinen!\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tässä siis sinulle ikiomaksi GTA6.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Seuraava asiakas, kiitos!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää tältä, kun ikä on suurempi kuin 17:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"18"}]},{"type":"text","value":"\nOlet täysi-ikäinen!\nTässä siis sinulle ikiomaksi GTA6.\nSeuraava asiakas, kiitos!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kuitenkaan ikä ei ole suurempi kuin 17, käy näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"16"}]},{"type":"text","value":"\nSeuraava asiakas, kiitos!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä tarkastelemalla huomataan, että syötteenä annettu arvo vaikuttaa nyt siihen, mitkä osat ohjelmasta suoritetaan. Ohjelmassa on käytössä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehtorakenne"}]},{"type":"text","value":", jonka sisällä oleva koodi suoritetaan vain, kun annettu ehto on tosi."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 363px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 126.52173913043478%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB60lEQVQ4y5WVV6/CMAyF+/9/EM9IvCAkHtiILfbee/nq81VQGlIolqq6aXxy7OMkgcSw5/Op78PhIPf7PTTmWuAL5O3z5/O5XK/Xt/FIQHdlE/R4PPR7MBjIfr/3LvqRIQAEugzS6bTU6/U3AvbjBbxcLjIajdSnZtvtVvr9viyXS1ksFvrPt2AkQ+o0m81eadZqNcnn81KpVPTBbzab0ul0dN50OpXhcCibzUYCm66plQ3I+G63k8lkIuv1WlmOx2M5nU6hGDoA0QKf9C6gsUajoWA+YwHKETAhm81KoVCQarUqvV5PqcPIVTOXy2mqrhghQApODQCm2KTFT8aMIQCTM5mMLgp7ux9DgN9SxvAJMEYGELEBj8fjP+A3UTAmAlgqlVRZGLuAtBrZRfahy5Cx8/msi6E6LO0YFG6329F9aKu5Wq20pgTh03OkaMcwViwW3wHt7Wfv1dvt9uoAfHe+N+VPBwRGgHsgvIny6fgy3zCifslkUvsVgYyAsdrGXYCJsCNdFKaebg1/AmT/Ighbr9VqqU9w7L3sAqIsk1OplJ42tFEikdBOgC0Pu4x2igUIAOmSFrWEnTm5v14BUY0OS9Ll0MC3L6vIE/tbC9lt42ud2AxN4cvlcuhY812nwS/3crfbVcU/3ct/vS6flnKmxFEAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/94986ed527f8f4c5b0dc6a9053d071b7/a0b58/1_6.webp 230w","/static/94986ed527f8f4c5b0dc6a9053d071b7/2ed29/1_6.webp 363w"],"sizes":"(max-width: 363px) 100vw, 363px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/94986ed527f8f4c5b0dc6a9053d071b7/81c8e/1_6.png 230w","/static/94986ed527f8f4c5b0dc6a9053d071b7/4e786/1_6.png 363w"],"sizes":"(max-width: 363px) 100vw, 363px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/94986ed527f8f4c5b0dc6a9053d071b7/4e786/1_6.png","alt":"1 6","title":"1 6","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtorakenteessa avainsanaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" seuraa jokin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehto"}]},{"type":"text","value":", kuten kahden arvon vertailu. Tämän jälkeen tuleva koodi suoritetaan vain, jos ehto pitää paikkansa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että ehtorakenteen ensimmäisen rivin lopussa on kaksoispiste. Seuraavassa koodissa kaksoispiste on unohtunut:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaksoispiste unohtui seuraavan rivin lopusta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet täysi-ikäinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän seurauksena koodi antaa virheen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"File \"ohjelma.py\", line 3\n if ika > 17\n ^\nSyntaxError: invalid syntax\n"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"h2","properties":{"id":"vertailuoperaattorit","style":"position:relative;"},"children":[{"type":"text","value":"Vertailuoperaattorit"},{"type":"element","tagName":"a","properties":{"href":"#vertailuoperaattorit","ariaLabel":"vertailuoperaattorit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyypillinen ehto on kahden arvon vertailu. Pythonin vertailuoperaattorit ovat:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Merkitys"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Esimerkki"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Yhtä suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a == b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Eri suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a != b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Suurempi"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a > b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Suurempi tai yhtä suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a >= b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Pienempi"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a < b"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<="}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"Pienempi tai yhtä suuri"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a <= b"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöttämä luku negatiivinen, positiivinen vai nolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on positiivinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on nolla.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma suoritettuna kolme kertaa eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nLuku on positiivinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-18"}]},{"type":"text","value":"\nLuku on negatiivinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nLuku on nolla."}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisentaminen","style":"position:relative;"},"children":[{"type":"text","value":"Sisentäminen"},{"type":"element","tagName":"a","properties":{"href":"#sisentaminen","ariaLabel":"sisentaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tunnistaa ehtorakenteen sisällä olevan koodin siitä, että jokainen rivi on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sisennetty"}]},{"type":"text","value":" samalla tavalla. Tämä tarkoittaa, että ehtorakenteen sisällä olevan koodin alussa on tyhjää tilaa. Jokaisella rivillä tulee olla yhtä paljon tyhjää tilaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"salasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna salasana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" salasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kissa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiesit salasanan!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet siis joko oikea käyttäjä...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"...tai melkoinen hakkerivelho.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelman suoritus päättyi. Kiitos ja hei!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyhjä tila saadaan aikaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tabulaattorilla"}]},{"type":"text","value":", jonka saat Tab-näppäimestä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 537px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 67.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAEQklEQVQ4y4WT/TPbBxzHv39D7zZH57FDqdZQWykroYmQB/KAREhEHj0kCEHiKb6SSIR4SDwuw5W5YaImqnO7royutM1Zx7pq1TZ3G03cVrfK3Oqzy37aL7v99H7d+z6/vD+fzxsBgCMA2AeAg3/pf/H+/80iuy92v9VrW2eMBqN1espqNrQYFtr07WPWz2YGdGrdoqnTNDIzPWNBG9DFwb6PhsbHxofUKvXisGXYMj46PoI2oF+MjowODluGxzSodh65ab0JQX7BEBMVC0XC4mM3X4mMgWJhMfifDQBsIu5UWCACzzNeQCVRT3MZefDOW97AoDNPs6jZ4O3hA9xc7ht8cioE+gYBYn9of8rKYt2vlStXOg0dFj5HYFdW1y626dtv8Ni8DbSheUGLaj/hsPI39NrWebQB/ZTN5Ng7DB02RZVyKj+X+9DUaZorl8hmBFzhN8jdO3d/T8WTnQQi1alv61yiZ2Q5CViCs03fvsygMZw4TIqjRa1bFhaIHEkfJjubVepVaZH0l8Q4zG9oA/qoXCLbxsQnHTXWqTZKxJInyOSUFQLPeALeLwia8/mvos6Hg593IMgkssOIC5Hg7xUARYIiJyYOA95v+wCPzT8kppD+iZ3P4v6Rdj3txNfTD3IyWa9JeLIL2ZqadjZisNvl2azn1matzYBL2+bgST+bewdmuSzuJj0987nRYJwT8cTf0cj0HYOubb5YVGKnEKk/6jX6LyWF0hUKkbqnRbV3Kkorl5AHHw8dMNm8nRwmZzeDnvPEbDCuGcnUPTol64eB3gGbQq7Yyc3O3TYajLYauWKHnk5/ptPobU31TdsMGvOFBtUuqupUG1nU7J8aa1VLyESXGd6PvgqRoRHg5+EDUmkF5IRHQ5iXP5SVVjhxiTi4FBwOIp7Y4b6kOx43t8CRQaDAu96BwMnhHOEwKW98PHyBQWOeIF/1DRxdT6M4qemZh0QSzanXtj6TRccckvFkR19P/yo+OfUgJQn/sruje5VGph9gE3AOg67tXk4max8Tn3So0+gf5THZO0nxya9UdapNZGdick9LyVyr5InstTzRujGVZB9X1vcr65qsbEbeA3WTZs69NzaTvdZU3zTX3to+z80rWFdW1dq6O0zzfI5gTV5etWDqNH8u4onvIVbrLBAuXQbBB3GA9fSFi2cDQFxUusLKYv0aFnQRCDiiS1ggcrk5DUtwFQqKXO7HT7iaeFwilvzp9mMux/5VLpEdX4u5BsiCbeEoNjbhJQ5PdrwXccUZHhb1Wt3YfINKoq2HnAs9EXCFmzwO//sg32AXj8PfFBWIt84HhLgYNOaWpFC6GXIu9DiDQNmWSWWPIy5EHiFbm1tPy4rL7lfLqh4b9e23uo1dt+Tl8ts6tW7S3NWzUFOpWG1R62Z7Tb1zNZU1y9rmltv9Pf3TCrli2d1vy4Blqra67ut6ZcPiYN/gxN+K6mUiaF+/igAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/43a34a2e4b0bc023009954d6f7809f7c/a0b58/1_6_keyboard.webp 230w","/static/43a34a2e4b0bc023009954d6f7809f7c/bc10c/1_6_keyboard.webp 460w","/static/43a34a2e4b0bc023009954d6f7809f7c/27c24/1_6_keyboard.webp 537w"],"sizes":"(max-width: 537px) 100vw, 537px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/43a34a2e4b0bc023009954d6f7809f7c/81c8e/1_6_keyboard.png 230w","/static/43a34a2e4b0bc023009954d6f7809f7c/08a84/1_6_keyboard.png 460w","/static/43a34a2e4b0bc023009954d6f7809f7c/b1cde/1_6_keyboard.png 537w"],"sizes":"(max-width: 537px) 100vw, 537px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/43a34a2e4b0bc023009954d6f7809f7c/b1cde/1_6_keyboard.png","alt":"1 6 keyboard","title":"1 6 keyboard","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suurin osa editoreista osaa automaattisesti sisentää rivin, kun edellinen rivi päättyy kaksoispisteeseen. Voit lopettaa sisentämisen editorissa painamalla rivin alussa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Backspace"}]},{"type":"text","value":"-näppäintä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 293px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 96.08695652173913%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEtElEQVQ4y3WU6U+UVxSHSdMvbbWNSgXZh2FmGAYYdnBBERA6SsdWZYdgK4ggOyrKElBR6oYoaFllHdZhUQGRalkTo8QUqMFGwCVubfzWf+Bp3kuaNDF9k5O89+Te555zfvcck7DQMAb6Boj4PoLw78LxcvWmsb6JI5m5hG4PZkdAEGnJqRia29gVFELUnnB2BocyYOwnISoGfYiOwC3bKC4oRvpMtvj401B3Aw9nT6R/maWciovlREUkopBvRuMYQHTkQa5cq0ahCcLHT4dK7U9DUxtbg+Nx89mJQrGJtEO5K8DYyDgmJ6bQ63YTFvqtgN7sG6Awv4ygwDj8A6PIzjrJUGUVP3jq+EkfT5kumqe19ZRFprHPJZhtXjrKymtWgE8X/mDm0QzTU9NMjE/y6uUrJN+D6Wnuj4/x8pe7fGhqZLamlme3Bng6Mc785ARPJqdYvHuH2YZaxvOO8WHw9gqw6EQRjvZqtE5uOFgrMHYZ2Ru2BzuZI3q5mnMBwXQbOtF6+KFx8Uat0qJWuqJSOKNUadG4+iCXqenJy4eZGUwK8gpE/by1PqjlTrQ2txETEYuvmy/Zji7sCgmjtbWdiN37iI+ME+IFbNqOm9oNT40HXs6eKK3kGIZGYGoSk8zDWdhZyFDaqbBYZ0l9TT36b/Qigngza6I2bqOhowcbCxlySzlyCxkOlnIcrFZMYavCzMyWxoYmGPsVk672LqLDY8hOz+ZQYgpzs3OcO3OO/QlJnEjNYProcRa6ukmMjONAYgoH07JJTMkgMTWT5NRM0pNSSdHpeVRQBO/eYXJnaIT3799zs/8mfcY+UcOHDx6yvLiEob2L/p4+jCcKeVFTx9+Dg7xu7+BDXz9/Go0sNzYxejSP3sxs/lpcWhHFTeNFd2c3fh4bUdqq+PrL9STE7ud65c8orBVCsNVfmQl444XLaNdZoHP1Zq/fVrwsZKjtHDG3lIs6C2DA5u30dveiC96Jj7uvAKQmpVJXXYevu5+4SLbBDmNXD9U19ezYsYvomARCQsLQOLnj4eKF0kZB+79AF5Urbc1tQmnp2Ziu/prYiDguX6zAxtwWlcyRLz5dRfONZiorKvnsk89FJhoHZ7RqN9w1Hjj8F1h9rZo3r99QefkqZ0+d5VTxaYZuDbHwZIHTJaVCoNKSUpYWl1heWqbiYgUpiSloFP8DvFJ+lUvny7l04SrLS8/FoJCiO3/2PG0tBl48f0FlRZXYU3ryDI9nHjM6Morc2kHAPgIqbJTYWzmwfo09NddrOfhjMl5ab8zXbGCT12aRqnRYSn3dKlNyMnJFBpLPTeP+MVAq+kqXqDG0GIiLihebXB21oksMre3odXoCtwSJgyWFJQzfHhaNII06yaTLOto6VoDSQorSfK0FTTeahdqWplbYmtvh77uVlsYWnJUuODlohGDHcvLoN/azdpUpMgt7ZJb2wi86RQJ2GjrpMHSK6CRx7o3eE6pL6+HBYd6+eSvS6WzvFPD5ud9ZfLaINFSkmp4uLqXweBHzc/MrwKorVWJcZaVlk3k4k+QDhxkducfI8Ahph9KF/0jWUWF5uXkk7k9ioHeAsftjpKekk38sn5yMHGZ/mxXAfwDrwXYWIBU21wAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7f8b7a68350e9455732bc0462f21ccff/a0b58/1_6_keyboard2.webp 230w","/static/7f8b7a68350e9455732bc0462f21ccff/2b735/1_6_keyboard2.webp 293w"],"sizes":"(max-width: 293px) 100vw, 293px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7f8b7a68350e9455732bc0462f21ccff/81c8e/1_6_keyboard2.png 230w","/static/7f8b7a68350e9455732bc0462f21ccff/3cf3e/1_6_keyboard2.png 293w"],"sizes":"(max-width: 293px) 100vw, 293px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7f8b7a68350e9455732bc0462f21ccff/3cf3e/1_6_keyboard2.png","alt":"1 6 keyboard2","title":"1 6 keyboard2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"small","properties":{},"children":[{"type":"element","tagName":"center","properties":{},"children":[{"type":"text","value":"\nNäppäimistökuvien alkuperä:\n "},{"type":"element","tagName":"a","properties":{"href":"https://pixabay.com/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=311803"},"children":[{"type":"text","value":"Clker-Free-Vector-Images"}]},{"type":"text","value":" from "},{"type":"element","tagName":"a","properties":{"href":"https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=311803"},"children":[{"type":"text","value":"Pixabay"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Orwell","tmcname":"osa01-21_orwel"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun ja tulostaa merkkijonon \"Orwell\" jos luku on täsmälleen 1984. Muussa tapauksessa ohjelma ei tulosta mitään."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2020"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1984"}]},{"type":"text","value":"\nOrwell"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Itseisarvo","tmcname":"osa01-22_itseisarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka lukee käyttäjältä kokonaisluvun. Mikäli luku on pienempi kuin 0, ohjelma tulostaa luvun kerrottuna luvulla -1. Muulloin ohjelma tulostaa käyttäjän syöttämän luvun. Alla on muutamia esimerkkejä ohjelman odotetusta toiminnasta."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-7"}]},{"type":"text","value":"\nLuvun itseisarvo on 7"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLuvun itseisarvo on 1"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-99"}]},{"type":"text","value":"\nLuvun itseisarvo on 99"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Keittoa vai ei","tmcname":"osa01-23_keittoa_vai_ei"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy ensin käyttäjän nimen. Jos nimi on mikä tahansa muu kuin \"Jerry\", ohjelma kysyy keittoannosten lukumäärän ja kertoo sitten kokonaishinnan. Yksi annos maksaa 5,90."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkisuoritusta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kramer"}]},{"type":"text","value":"\nKuinka monta annosta keittoa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nKokonaishinta on 11.8\nSeuraava!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jerry"}]},{"type":"text","value":"\nSeuraava!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Luvun suuruusluokka","tmcname":"osa01-24_luvun_suuruusluokka"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä kokonaisluvun ja kertoo sitten sen suuruusluokan oheisten esimerkkisuoritusten mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"950"}]},{"type":"text","value":"\nLuku on pienempi kuin 1000\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"59"}]},{"type":"text","value":"\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nLuku on pienempi kuin 10\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1123"}]},{"type":"text","value":"\nKiitos!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"totuusarvot","style":"position:relative;"},"children":[{"type":"text","value":"Totuusarvot"},{"type":"element","tagName":"a","properties":{"href":"#totuusarvot","ariaLabel":"totuusarvot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtorakenteessa käytettävä ehto saa totuusarvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" (tosi) tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" (epätosi). Esimerkiksi ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a < 5"}]},{"type":"text","value":" on tosi jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" on alle 5 ja epätosi jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" on 5 tai suurempi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnissa totuusarvoja kutsutaan usein boolean-arvoiksi matemaatikko George Boolen kehittämän algebrallisen rakenteen mukaan. Pythonissa totuusarvoja käsitellään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":"-tietotyypin avulla, ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":"-tyyppisillä muuttujilla voi olla vain kaksi eri arvoa: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme asettaa ehdon tuloksen muuttujan arvoksi samaan tapaan kuin laskutoimituksen tuloksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nehto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ehto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ehto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a on pienempi kuin 5\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\na on pienempi kuin 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää koodissa myös sanoja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":". Esimerkiksi seuraava koodi suorittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon aina, koska ehdon arvona on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ehto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ehto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänne tullaan aina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tänne tullaan aina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Laskin","tmcname":"osa01-25_laskin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä ensin kaksi lukua ja sen jälkeen komennon. Jos komento on joko "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":", "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tulo"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"erotus"}]},{"type":"text","value":", ohjelma laskee syötteille kyseisen operaation tuloksen. Muussa tapauksessa ohjelma ei tulosta mitään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"17"}]},{"type":"text","value":"\nKomento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"summa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"10 + 17 = 27"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nKomento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tulo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4 * 6 = 24"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nLuku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nKomento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erotus"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4 - 6 = -2"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lämpötilat","tmcname":"osa01-26_lampotilat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lämpötilan fahrenheit-asteina, ja tulostaa sitten lämpötilan celsius-asteina. Jos lämpötila celsius-asteina on pienempi kuin 0, ohjelma tulostaa lisäksi viestin \"Paleltaa!\"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaavan fahrenheit-asteiden muuntamiseksi celsius-asteiksi voit etsiä esimerkiksi googlaamalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkisuoritusta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila (F): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"101"}]},{"type":"text","value":"\n101 fahrenheit-astetta on 38.333333333333336 celsius-astetta"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila (F): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\n21 fahrenheit-astetta on -6.111111111111111 celsius-astetta\nPaleltaa!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Palkka","tmcname":"osa01-27_palkka"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy tuntipalkkaa, työskenneltyjen tuntien määrää ja viikonpäivää. Ohjelma tulostaa palkan, joka on tuntipalkka kertaa tuntien määrä muina päivinä paitsi sunnuntaisin, jolloin tuntipalkka on kaksinkertainen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuntipalkka: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8.5"}]},{"type":"text","value":"\nTyötunnit: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nViikonpäivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"maanantai"}]},{"type":"text","value":"\nPalkka 25.5 euroa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuntipalkka: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12.5"}]},{"type":"text","value":"\nTyötunnit: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nViikonpäivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sunnuntai"}]},{"type":"text","value":"\nPalkka 250.0 euroa"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa ohjelma: Korkoa kortille","tmcname":"osa01-28_korjaaa_ohjelma_korkoa_kortille"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa lasketaan bonuskortin saldoon vuoden lopussa lisättävä bonuspistemäärä seuraavan kaavan mukaisesti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos bonuspisteitä on alle sata, korkona saa 10 % lisää pisteitä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Muussa tapauksessa korkona saa 15 % lisää pisteitä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma siis toimii esim. näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka paljon pisteitä? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"55"}]},{"type":"text","value":"\nSait 10 % bonusta\nPisteitä on nyt 60.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii kuitenkin jollain syötteillä oudosti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka paljon pisteitä? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"95"}]},{"type":"text","value":"\nSait 10 % bonusta\nSait 15 % bonusta\nPisteitä on nyt 120.175"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa ohjelma niin, että bonusta tulee joko 10 % tai 15 %, ei koskaan molempia."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Huomiset vaatteet","tmcname":"osa01-29_huomisen_vaatteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy huomisen sääennusteen ja suosittelee sen mukaista pukeutumista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suositus vaihtelee sen mukaan, onko lämpötila yli 20 astetta, yli 10 astetta vai yli 5 astetta. Myös sade vaikuttaa suositukseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nPue housut ja t-paita"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"11"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nPue housut ja t-paita\nOta myös pitkähihainen paita"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro huominen sääennuste:\nLämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nSataako (kyllä/ei): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kyllä"}]},{"type":"text","value":"\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki\nSuosittelen lämmintä takkia\nKannattaa ottaa myös hanskat\nMuista sateenvarjo!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Toisen asteen yhtälön ratkaiseminen","tmcname":"osa01-30_toisen_asteen_yhtalo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-moduulissa on funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":", jolla voi laskea luvun neliöjuuren. Voit käyttää sitä ohjelmassa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka ratkaisee toisen asteen yhtälön ax²+bx+c. Ohjelmalle annetaan arvot a, b ja c, ja sen tulee laskea juuret (eli ratkaisut) kaavalla"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"x = (-b ± sqrt(b²-4ac))/(2a)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että yhtälöllä on kaksi juurta, jolloin yllä oleva kaava toimii."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkituloste:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna a: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna b: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna c: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Juuret ovat 2.0 ja -4.0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertauskysely tämän osan asioihin liittyen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää yksinkertaista ehtorakennetta ohjelmoinnissa
    • \n
    • Tiedät, mitä tarkoitetaan totuusarvoilla
    • \n
    • Osaat muodostaa ehtoja vertailuoperaattoreiden avulla
    • \n

    Tähän mennessä kaikissa ohjelmissamme on suoritettu samat rivit samassa järjestyksessä.\nUsein on kuitenkin tarpeen määritellä ohjelmaan osia, jotka suoritetaan vain tietyissä tilanteissa.

    Esimerkiksi seuraava koodi tarkastaa, onko henkilö täysi-ikäinen:

    ika = int(input(\"Kuinka vanha olet? \"))\n\nif ika > 17:\n    print(\"Olet täysi-ikäinen!\"\n    print(\"Tässä siis sinulle ikiomaksi GTA6.\")\n\nprint(\"Seuraava asiakas, kiitos!\")

    Ohjelman suoritus näyttää tältä, kun ikä on suurempi kuin 17:

    Kuinka vanha olet? 18\nOlet täysi-ikäinen!\nTässä siis sinulle ikiomaksi GTA6.\nSeuraava asiakas, kiitos!

    Jos kuitenkaan ikä ei ole suurempi kuin 17, käy näin:

    Kuinka vanha olet? 16\nSeuraava asiakas, kiitos!

    Esimerkkejä tarkastelemalla huomataan, että syötteenä annettu arvo vaikuttaa nyt siihen, mitkä osat ohjelmasta suoritetaan. Ohjelmassa on käytössä ehtorakenne, jonka sisällä oleva koodi suoritetaan vain, kun annettu ehto on tosi.

    \n \n \n \n \n \"1\n \n

    Suurin osa editoreista osaa automaattisesti sisentää rivin, kun edellinen rivi päättyy kaksoispisteeseen. Voit lopettaa sisentämisen editorissa painamalla rivin alussa Backspace-näppäintä.

    \n \n \n \n \n \"1\n \n \n
    \nNäppäimistökuvien alkuperä:\n Clker-Free-Vector-Images from Pixabay\n

    Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun ja tulostaa merkkijonon \"Orwell\" jos luku on täsmälleen 1984. Muussa tapauksessa ohjelma ei tulosta mitään.

    Anna luku: 2020

    Anna luku: 1984\nOrwell

    Kirjoita ohjelma, joka lukee käyttäjältä kokonaisluvun. Mikäli luku on pienempi kuin 0, ohjelma tulostaa luvun kerrottuna luvulla -1. Muulloin ohjelma tulostaa käyttäjän syöttämän luvun. Alla on muutamia esimerkkejä ohjelman odotetusta toiminnasta.

    Anna luku: -7\nLuvun itseisarvo on 7

    Anna luku: 1\nLuvun itseisarvo on 1

    Anna luku: -99\nLuvun itseisarvo on 99

    Kirjoita ohjelma, joka kysyy ensin käyttäjän nimen. Jos nimi on mikä tahansa muu kuin \"Jerry\", ohjelma kysyy keittoannosten lukumäärän ja kertoo sitten kokonaishinnan. Yksi annos maksaa 5,90.

    Kaksi esimerkkisuoritusta:

    Mikä on nimesi: Kramer\nKuinka monta annosta keittoa: 2\nKokonaishinta on 11.8\nSeuraava!

    Mikä on nimesi: Jerry\nSeuraava!

    Tee ohjelma, joka lukee käyttäjältä kokonaisluvun ja kertoo sitten sen suuruusluokan oheisten esimerkkisuoritusten mukaisesti:

    Anna luku: 950\nLuku on pienempi kuin 1000\nKiitos!

    Anna luku: 59\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nKiitos!

    Anna luku: 2\nLuku on pienempi kuin 1000\nLuku on pienempi kuin 100\nLuku on pienempi kuin 10\nKiitos!

    Anna luku: 1123\nKiitos!

    Totuusarvot

    Ehtorakenteessa käytettävä ehto saa totuusarvon True (tosi) tai False (epätosi). Esimerkiksi ehto a < 5 on tosi jos a on alle 5 ja epätosi jos a on 5 tai suurempi.

    Ohjelmoinnissa totuusarvoja kutsutaan usein boolean-arvoiksi matemaatikko George Boolen kehittämän algebrallisen rakenteen mukaan. Pythonissa totuusarvoja käsitellään bool-tietotyypin avulla, ja bool-tyyppisillä muuttujilla voi olla vain kaksi eri arvoa: True tai False.

    Voimme asettaa ehdon tuloksen muuttujan arvoksi samaan tapaan kuin laskutoimituksen tuloksen:

    a = 3\nehto = a < 5\nprint(ehto)\nif ehto:\n    print(\"a on pienempi kuin 5\")

    True\na on pienempi kuin 5

    Voimme käyttää koodissa myös sanoja True ja False. Esimerkiksi seuraava koodi suorittaa print-komennon aina, koska ehdon arvona on True:

    ehto = True\nif ehto:\n    print(\"Tänne tullaan aina\")

    Tänne tullaan aina

    Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa.

    Tee ohjelma, joka kysyy käyttäjältä ensin kaksi lukua ja sen jälkeen komennon. Jos komento on joko summa, tulo tai erotus, ohjelma laskee syötteille kyseisen operaation tuloksen. Muussa tapauksessa ohjelma ei tulosta mitään.

    Esimerkkitulostuksia:

    Luku 1: 10\nLuku 2: 17\nKomento: summa

    10 + 17 = 27

    Luku 1: 4\nLuku 2: 6\nKomento: tulo

    4 * 6 = 24

    Luku 1: 4\nLuku 2: 6\nKomento: erotus

    4 - 6 = -2

    Tee ohjelma, joka kysyy käyttäjältä lämpötilan fahrenheit-asteina, ja tulostaa sitten lämpötilan celsius-asteina. Jos lämpötila celsius-asteina on pienempi kuin 0, ohjelma tulostaa lisäksi viestin \"Paleltaa!\".

    Kaavan fahrenheit-asteiden muuntamiseksi celsius-asteiksi voit etsiä esimerkiksi googlaamalla.

    Kaksi esimerkkisuoritusta:

    Anna lämpötila (F): 101\n101 fahrenheit-astetta on 38.333333333333336 celsius-astetta

    Anna lämpötila (F): 21\n21 fahrenheit-astetta on -6.111111111111111 celsius-astetta\nPaleltaa!

    Tee ohjelma, joka kysyy tuntipalkkaa, työskenneltyjen tuntien määrää ja viikonpäivää. Ohjelma tulostaa palkan, joka on tuntipalkka kertaa tuntien määrä muina päivinä paitsi sunnuntaisin, jolloin tuntipalkka on kaksinkertainen.

    Tuntipalkka: 8.5\nTyötunnit: 3\nViikonpäivä: maanantai\nPalkka 25.5 euroa

    Tuntipalkka: 12.5\nTyötunnit: 10\nViikonpäivä: sunnuntai\nPalkka 250.0 euroa

    Ohjelmassa lasketaan bonuskortin saldoon vuoden lopussa lisättävä bonuspistemäärä seuraavan kaavan mukaisesti:

      \n
    • Jos bonuspisteitä on alle sata, korkona saa 10 % lisää pisteitä
    • \n
    • Muussa tapauksessa korkona saa 15 % lisää pisteitä
    • \n

    Ohjelma siis toimii esim. näin:

    Kuinka paljon pisteitä? 55\nSait 10 % bonusta\nPisteitä on nyt 60.5

    Ohjelma toimii kuitenkin jollain syötteillä oudosti:

    Kuinka paljon pisteitä? 95\nSait 10 % bonusta\nSait 15 % bonusta\nPisteitä on nyt 120.175

    Korjaa ohjelma niin, että bonusta tulee joko 10 % tai 15 %, ei koskaan molempia.

    Tee ohjelma, joka kysyy huomisen sääennusteen ja suosittelee sen mukaista pukeutumista.

    Suositus vaihtelee sen mukaan, onko lämpötila yli 20 astetta, yli 10 astetta vai yli 5 astetta. Myös sade vaikuttaa suositukseen.

    Ohjelma toimii seuraavasti:

    Kerro huominen sääennuste:\nLämpötila: 21\nSataako (kyllä/ei): ei\nPue housut ja t-paita

    Kerro huominen sääennuste:\nLämpötila: 11\nSataako (kyllä/ei): ei\nPue housut ja t-paita\nOta myös pitkähihainen paita

    Kerro huominen sääennuste:\nLämpötila: 7\nSataako (kyllä/ei): ei\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki

    Kerro huominen sääennuste:\nLämpötila: 3\nSataako (kyllä/ei): kyllä\nPue housut ja t-paita\nOta myös pitkähihainen paita\nPue päälle takki\nSuosittelen lämmintä takkia\nKannattaa ottaa myös hanskat\nMuista sateenvarjo!

    Pythonin math-moduulissa on funktio sqrt, jolla voi laskea luvun neliöjuuren. Voit käyttää sitä ohjelmassa seuraavasti:

    from math import sqrt\n\nprint(sqrt(9))

    Ohjelma tulostaa:

    3.0

    Kirjoita ohjelma, joka ratkaisee toisen asteen yhtälön ax²+bx+c. Ohjelmalle annetaan arvot a, b ja c, ja sen tulee laskea juuret (eli ratkaisut) kaavalla

    x = (-b ± sqrt(b²-4ac))/(2a).

    Voit olettaa, että yhtälöllä on kaksi juurta, jolloin yllä oleva kaava toimii.

    Esimerkkituloste:

    Anna a: 1\nAnna b: 2\nAnna c: -8

    Juuret ovat 2.0 ja -4.0

    Kertauskysely tämän osan asioihin liittyen:

    Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:

    ","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/5-ehtorakenne.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-1/page-data.json b/page-data/osa-1/page-data.json index 9bdd188cd..d3d3a8245 100644 --- a/page-data/osa-1/page-data.json +++ b/page-data/osa-1/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-1", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-1","title":"Osa 1"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-1","title":"Osa 1"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-1/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-10/1-luokkahierarkiat/page-data.json b/page-data/osa-10/1-luokkahierarkiat/page-data.json index b0ba8f155..fe51942b9 100644 --- a/page-data/osa-10/1-luokkahierarkiat/page-data.json +++ b/page-data/osa-10/1-luokkahierarkiat/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-10/1-luokkahierarkiat", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan perinnällä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa luokkia jotka perivät jonkin toisen luokan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät miten eri piirteet periytyvät"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"luokkien-erikoistaminen","style":"position:relative;"},"children":[{"type":"text","value":"Luokkien erikoistaminen"},{"type":"element","tagName":"a","properties":{"href":"#luokkien-erikoistaminen","ariaLabel":"luokkien erikoistaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus tulee vastaan tilanne, jossa luokan toimintaa olisi hyvä pyrkiä erikoistamaan, mutta vain osalle olioista. Tarkastellaan esimerkkinä tilannetta, jossa meillä on kaksi luokkaa - Opiskelija ja Opettaja. Yksinkertaistuksen vuoksi luokista on jätetty pois kaikki asetus- ja havainnointimetodit."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opnro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opnro\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opettaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opetusvuosia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huone\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opetusvuosia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opetusvuosia\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertaistetustakin esimerkistä huomataan, että luokilla on yhteisiä piirteitä - tässä tapauksessa nimi ja sähköpostiosoite. Monessa tilanteessa olisi hyvä, jos yhteisiä piirteitä voitaisin käsitellä yhdellä operaatiolla: oletetaan tilanne, jossa koulun sähköpostitunnus muuttuu. Toki voitaisiin kirjoittaa kaksi käsittelyfunktiota..."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"korjaa_email"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".edu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"korjaa_email2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opettaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".edu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...mutta saman koodin toistaminen kahteen kertaan tuntuu turhalta työltä, ja lisää virheiden mahdollisuutta. Olisi siis hyvä, jos molempien luokkien mukaisia olioita voitaisiin käsitellä samalla metodilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokat kuitenkin sisältävät myös piirteitä, joita toisella luokalla ei ole. Sen takia luokkien yhdistäminen ei tunnu järkevältä."}]},{"type":"element","tagName":"h2","properties":{"id":"perinta","style":"position:relative;"},"children":[{"type":"text","value":"Perintä"},{"type":"element","tagName":"a","properties":{"href":"#perinta","ariaLabel":"perinta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ratkaisu löytyy olio-ohjelmoinnin tekniikasta nimeltä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perintä"}]},{"type":"text","value":". Perinnällä tarkoitetaan sitä, että luokka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perii"}]},{"type":"text","value":" piirteet joltain toiselta luokalta. Näiden perittyjen piirteiden rinnalle luokka voi sitten toteuttaa uusia piirteitä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opettaja- ja Opiskelija-luokilla voisi olla yhteinen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"yliluokka"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa on toteutettu siis henkilöön liittyvät piirteet. Nyt luokat Opiskelija ja Opettaja voivat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"periä"}]},{"type":"text","value":" luokan ja lisätä perittyjen ominaisuuksien rinnalle uusia piirteitä:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perintä tapahtuu kirjoittamalla luokan nimen perään perittävän luokan nimi sulkuihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vaihda_spostitunniste"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" uusi_tunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanha "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"@\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vanha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" uusi_tunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opnro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opnro\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opettaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opetusvuosia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huone\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opetusvuosia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opetusvuosia\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n olli "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olli@example.com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaihda_spostitunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"example.edu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n outi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opettaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Ope\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"outi@example.fi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"A123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n outi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaihda_spostitunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"example.ex\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"outi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska sekä Opiskelija että Opettaja perivät luokan Henkilo, molemmilla on käytössään Henkilo-luokassa määritellyt piirteet, mukaanlukien metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaihda_spostitunniste"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä, jossa luokka Kirjahylly perii luokan Laatikko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjalaatikko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa laatikkoa, johon voidaan tallentaa kirjoja \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"listaa_kirjat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kirjalaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yksinkertaista kirjahyllyä \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"insert"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa Kirjahylly on määritelty metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"text","value":". Samanniminen metodi on määritelty myös yliluokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirjalaatikko"}]},{"type":"text","value":". Tällaisessa tapauksessa puhutaan metodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"uudelleenmäärittelystä"}]},{"type":"text","value":" tai ylikirjoituksesta (overwriting): aliluokan samanniminen metodi korvaa yliluokan vastaavan metodin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissämme idea on, että kirjalaatikossa kirja asetetaan aina laatikossa päällimmäiseksi, mutta kirjahyllyssä voidaan määritellä asetuspaikka. Sen sijaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"listaa_kirjat"}]},{"type":"text","value":" uudelleenmäärittelyä ei ole nähty tarpeelliseksi - sama kirjojen listaus toimii niin laatikossa kuin hyllyssäkin (ainakin esimerkissämme)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä luokkien käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan pari kirjaa testiksi"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7 veljestä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aleksis Kivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sinuhe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mika Waltari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntematon sotilas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väinö Linna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan kirjalaatikko ja lisätään kirjat sinne"}]},{"type":"text","value":"\n laatikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjalaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan kirjahylly ja lisätään kirjat sinne (aina hyllyn alkupäähän)"}]},{"type":"text","value":"\n hylly "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjahylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Laatikossa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"listaa_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hyllyssä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"listaa_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"text","value":" "},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laatikossa:\n7 veljestä (Aleksis Kivi)\nSinuhe (Mika Waltari)\nTuntematon sotilas (Väinö Linna)"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyllyssä:\nTuntematon sotilas (Väinö Linna)\nSinuhe (Mika Waltari)\n7 veljestä (Aleksis Kivi)"}]},{"type":"text","value":" "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös Kirjahylly-luokasta muodostettujen olioiden kautta voidaan käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"listaa_kirjat"}]},{"type":"text","value":", koska perinnän ansiosta se on olemassa myös luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"text","value":" aliluokissa."}]},{"type":"element","tagName":"h2","properties":{"id":"piirteiden-periytyminen","style":"position:relative;"},"children":[{"type":"text","value":"Piirteiden periytyminen"},{"type":"element","tagName":"a","properties":{"href":"#piirteiden-periytyminen","ariaLabel":"piirteiden periytyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aliluokka perii yliluokalta kaikki piirteet. Aliluokasta voidaan viitata suoraan yliluokan piirteisiin, paitsi jos yliluokassa on määritelty piirteet yksityisiksi (käyttämällä kahta alaviivaa muuttujan nimen edessä)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niinpä esimerkiksi Kirjahylly-luokasta voitaisiin viitata yliluokan konstruktoriin sen sijaan että kirjoitettaisiin toiminnallisuus uudestaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kirjalaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yliluokan konstuktoriin (tai yliluokkaan muutenkin) viitataan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"super()"}]},{"type":"text","value":" avulla. Huomaa, että tässäkin tapauksessa parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" lisätään automaattisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan toisena esimerkkinä luokkaa Gradu, joka perii luokan Kirja. Aliluokasta kutsutaan yliluokan konstruktoria:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Gradu"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa gradua eli ylemmän korkeakoulututkinnon lopputyötä \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvosana\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt Gradu-luokan konstruktorista kutsutaan yliluokan (eli luokan Kirja) konstruktoria, jossa asetetaan attribuuttien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjailija"}]},{"type":"text","value":" arvot. Sen jälkeen aliluokan konstruktorissa asetetaan attribuutin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosana"}]},{"type":"text","value":" arvo - tätä luonnollisesti ei voida tehdä yliluokan konstruktorissa, koska yliluokalla ei tällaista attribuuttia ole."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa voidaan käyttää esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n gradu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python ja maailmankaikkeus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kenttien arvot"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python ja maailmankaikkeus\nPekka Python\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska aliluokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Gradu"}]},{"type":"text","value":" perii kaikki yliluokan piirteet, se perii myös attribuutit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjailija"}]},{"type":"text","value":". Arvot osalle attribuuteista annetaan yliluokan sisältä löytyvässä konstruktorissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aliluokka voi myös viitata yliluokan metodiin, vaikka metodi olisikin määritelty uudestaan aliluokassa. Seuraavassa esimerkissä luokasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Platinakortti"}]},{"type":"text","value":" kutsutaan uudelleenmääritellyssä metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bonuspisteet"}]},{"type":"text","value":" yliluokan vastaavaa metodia."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Bonuskortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ostetut_tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ostetut_tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_bonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ostetut_tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.05"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" bonus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Platinakortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Bonuskortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_bonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan yliluokan metodia..."}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laske_bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja lisätään vielä viisi prosenttia päälle"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.05"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" bonus\n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt platinakortin bonus lasketaan hyödyntämällä aluksi yliluokan vastaavaa metodia ja lisäämällä sitten ylimääräiset 5 prosenttia tähän bonukseen. Esimerkki luokkien käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Bonuskortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mandariinit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laske_bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kortti2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Platinakortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mandariinit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n bonus2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laske_bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"bonus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0.7225\n0.7586250000000001"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kannettava tietokone","tmcname":"osa10-01_kannettava_tietokone"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tietokone"}]},{"type":"text","value":", jolla on attribuutit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"malli"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nopeus"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"KannettavaTietokone"}]},{"type":"text","value":", joka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perii luokan Tietokone"}]},{"type":"text","value":". Luokka saa konstruktorissa luokan Tietokone attribuuttien lisäksi kolmannen kokonaislukutyyppisen attribuutin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paino"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokkaan lisäksi metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", jonka avulla voi tulostaa esimerkkisuorituksen mukaisen tulosteen olion tilasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ipm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" KannettavaTietokone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IPM MikroMauri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ipm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"IPM MikroMauri, 1500 MHz, 2 kg"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pelimuseo","tmcname":"osa10-02_pelimuseo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tietokonepeli"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pelivarasto"}]},{"type":"text","value":". Pelivarastoon voidaan säilöä tietokonepelejä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustu luokkien ohjelmakoodiin ja kirjoita sitten uusi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pelimuseo"}]},{"type":"text","value":", joka perii luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pelivarasto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelimuseo-luokassa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"uudelleentoteutetaan"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anna_pelit()"}]},{"type":"text","value":" niin, että se palauttaa listassa ainoastaan ne pelit, jotka on tehty ennen vuotta 1990."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokassa tulee olla konstruktori, josta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kutsutaan yliluokan Pelivarasto konstruktoria"}]},{"type":"text","value":". Konstruktorilla ei ole parametreja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"museo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pelimuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tietokonepeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pacman\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Namco\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1980"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tietokonepeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"GTA 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rockstar\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1999"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tietokonepeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Bubble Bobble\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Taito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1986"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" peli "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" museo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_pelit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pacman\nBubble Bobble"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pinta-alat","tmcname":"osa10-03_pinta_alat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"text","value":" joka nimensä mukaisesti mallintaa "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Suorakulmio","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"suorakulmiota"}]},{"type":"text","value":". Luokkaa käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pinta-ala:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pinta_ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suorakulmio 2x3\npinta-ala: 6"}]}]},{"type":"element","tagName":"h2","properties":{"id":"nelio","style":"position:relative;"},"children":[{"type":"text","value":"Neliö"},{"type":"element","tagName":"a","properties":{"href":"#nelio","ariaLabel":"nelio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Nelio"}]},{"type":"text","value":" joka perii luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"text","value":". Suorakulmiosta poiketen "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Neli%C3%B6_(geometria)","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"neliön"}]},{"type":"text","value":" kaikki sivut ovat saman pituisia, eli neliö on eräänlainen yksinkertaisempi erikoistapaus suorakulmiosta. Luokka ei saa määritellä uusia attribuutteja!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nelio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pinta-ala:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pinta_ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"neliö 4x4\npinta-ala: 16"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sanapeli","tmcname":"osa10-04_sanapeli"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohja sisältää valmiin luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sanapeli"}]},{"type":"text","value":", joka tarjoaa perustoiminnallisuuden erilaisten sanapelien pelaamiseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" random\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanapeli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierrokset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kierrokset\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kierroksen_voittaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja1_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja2_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# arvotaan voittaja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" random"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pelaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sanapeli:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"kierros "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n vastaus1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja1: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n vastaus2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja2: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierroksen_voittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja 1 voitti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierroksen_voittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja 2 voitti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tasapeli"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"peli päättyi, voitot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"pelaaja 1: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"pelaaja 2: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Peliä käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sanapeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanapeli:\nkierros 1\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pitkäsana"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"??"}]},{"type":"text","value":"\npelaaja 2 voitti\nkierros 2\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"olen paras"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"mitä?"}]},{"type":"text","value":"\npelaaja 1 voitti\nkierros 3\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kuka voittaa"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"minä"}]},{"type":"text","value":"\npelaaja 1 voitti\npeli päättyi voitot:\npelaaja 1: 2\npelaaja 2: 1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä pelin \"perusversiossa\" voittaja ratkaistaan arpomalla, pelaajien antamilla syötteillä ei ole tulokseen vaikutusta."}]},{"type":"element","tagName":"h2","properties":{"id":"pisin-sana-voittaa","style":"position:relative;"},"children":[{"type":"text","value":"Pisin sana voittaa"},{"type":"element","tagName":"a","properties":{"href":"#pisin-sana-voittaa","ariaLabel":"pisin sana voittaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PisinSana"}]},{"type":"text","value":" eli pelin versio, missä kunkin kierroksen voittaja on sen kierroksen aikana pidemmän sanan syöttänyt käyttäjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi versio toteuteaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perimällä"}]},{"type":"text","value":" luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sanapeli"}]},{"type":"text","value":" ja ylikirjoittamalla sen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kierroksen_voittaja"}]},{"type":"text","value":" sopivalla tavalla. Uuden luokan runko on siis seuraavanlainen"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PisinSana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Sanapeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kierroksen_voittaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja1_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja2_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne voittajan ratkaiseva koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PisinSana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanapeli:\nkierros 1\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"lyhyt"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pitkäsana"}]},{"type":"text","value":"\npelaaja 2 voitti\nkierros 2\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"vat?"}]},{"type":"text","value":"\nkierros 3\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"olen paras"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"minäpäs"}]},{"type":"text","value":"\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 1\npelaaja 2: 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"eniten-vokaaleja-voittaa","style":"position:relative;"},"children":[{"type":"text","value":"Eniten vokaaleja voittaa"},{"type":"element","tagName":"a","properties":{"href":"#eniten-vokaaleja-voittaa","ariaLabel":"eniten vokaaleja voittaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"EnitenVokaaleja"}]},{"type":"text","value":" eli pelin versio, missä kunkin kierroksen voittaja on se pelaaja, jonka sanassa oli enemmän vokaaleja."}]},{"type":"element","tagName":"h2","properties":{"id":"kivi-paperi-sakset","style":"position:relative;"},"children":[{"type":"text","value":"Kivi, paperi, sakset"},{"type":"element","tagName":"a","properties":{"href":"#kivi-paperi-sakset","ariaLabel":"kivi paperi sakset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"KiviPaperiSakset"}]},{"type":"text","value":" joka mallintaa nimensä mukaisesti "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Kivi,_paperi_ja_sakset","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"kivi, paperi ja sakset"}]},{"type":"text","value":" -peliä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin säännöt ovat seuraavat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kivi voittaa sakset (kivellä voi rikkoa sakset eikä saksilla voi leikata kiveä)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"paperi voittaa kiven (kiven voi peittää paperilla)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"sakset voittaa paperin (saksilla voi leikata paperia)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos pelaajan syöte on epäkelpo, eli se ei ole mikään sanoista "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kivi, paperi, sakset"}]},{"type":"text","value":" pelaaja häviää kierroksen, ellei molempien syöte ole epäkelpo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" KiviPaperiSakset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanapeli:\nkierros 1\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kivi"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kivi"}]},{"type":"text","value":"\nkierros 2\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kivi"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"paperi"}]},{"type":"text","value":"\npelaaja 2 voitti\nkierros 3\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sakset"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"paperi"}]},{"type":"text","value":"\npelaaja 1 voitti\nkierros 4\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"paperi"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"dynamiitti"}]},{"type":"text","value":"\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 2\npelaaja 2: 1"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan perinnällä
    • \n
    • Osaat kirjoittaa luokkia jotka perivät jonkin toisen luokan
    • \n
    • Tiedät miten eri piirteet periytyvät
    • \n

    Luokkien erikoistaminen

    Joskus tulee vastaan tilanne, jossa luokan toimintaa olisi hyvä pyrkiä erikoistamaan, mutta vain osalle olioista. Tarkastellaan esimerkkinä tilannetta, jossa meillä on kaksi luokkaa - Opiskelija ja Opettaja. Yksinkertaistuksen vuoksi luokista on jätetty pois kaikki asetus- ja havainnointimetodit.

    \nclass Opiskelija:\n\n    def __init__(self, nimi: str, opnro: str, sposti: str, opintopisteet: str):\n        self.nimi = nimi\n        self.opnro = opnro\n        self.sposti = sposti\n        self.opintopisteet = opintopisteet\n\nclass Opettaja:\n\n    def __init__(self, nimi: str, sposti: str, huone: str, opetusvuosia: int):\n        self.nimi = nimi\n        self.sposti = sposti\n        self.huone = huone\n        self.opetusvuosia = opetusvuosia\n

    Yksinkertaistetustakin esimerkistä huomataan, että luokilla on yhteisiä piirteitä - tässä tapauksessa nimi ja sähköpostiosoite. Monessa tilanteessa olisi hyvä, jos yhteisiä piirteitä voitaisin käsitellä yhdellä operaatiolla: oletetaan tilanne, jossa koulun sähköpostitunnus muuttuu. Toki voitaisiin kirjoittaa kaksi käsittelyfunktiota...

    \ndef korjaa_email(o: Opiskelija):\n    o.sposti = o.sposti.replace(\".com\", \".edu\")\n\ndef korjaa_email2(o: Opettaja):\n    o.sposti = o.sposti.replace(\".com\", \".edu\")\n

    ...mutta saman koodin toistaminen kahteen kertaan tuntuu turhalta työltä, ja lisää virheiden mahdollisuutta. Olisi siis hyvä, jos molempien luokkien mukaisia olioita voitaisiin käsitellä samalla metodilla.

    Luokat kuitenkin sisältävät myös piirteitä, joita toisella luokalla ei ole. Sen takia luokkien yhdistäminen ei tunnu järkevältä.

    Perintä

    Ratkaisu löytyy olio-ohjelmoinnin tekniikasta nimeltä perintä. Perinnällä tarkoitetaan sitä, että luokka perii piirteet joltain toiselta luokalta. Näiden perittyjen piirteiden rinnalle luokka voi sitten toteuttaa uusia piirteitä.

    Opettaja- ja Opiskelija-luokilla voisi olla yhteinen yliluokka Henkilo:

    \nclass Henkilo:\n\n   def __init__(self, nimi: str, sposti: str):\n       self.nimi = nimi\n       self.sposti = sposti\n

    Luokassa on toteutettu siis henkilöön liittyvät piirteet. Nyt luokat Opiskelija ja Opettaja voivat periä luokan ja lisätä perittyjen ominaisuuksien rinnalle uusia piirteitä:

    Perintä tapahtuu kirjoittamalla luokan nimen perään perittävän luokan nimi sulkuihin:

    \nclass Henkilo:\n\n   def __init__(self, nimi: str, sposti: str):\n       self.nimi = nimi\n       self.sposti = sposti\n\n   def vaihda_spostitunniste(self, uusi_tunniste: str):\n       vanha = self.sposti.split(\"@\")[1]\n       self.sposti = self.sposti.replace(vanha, uusi_tunniste)\n\nclass Opiskelija(Henkilo):\n\n   def __init__(self, nimi: str, opnro: str, sposti: str, opintopisteet: str):\n       self.nimi = nimi\n       self.opnro = opnro\n       self.sposti = sposti\n       self.opintopisteet = opintopisteet\n\nclass Opettaja(Henkilo):\n\n   def __init__(self, nimi: str, sposti: str, huone: str, opetusvuosia: int):\n       self.nimi = nimi\n       self.sposti = sposti\n       self.huone = huone\n       self.opetusvuosia = opetusvuosia\n\n# Testi\nif __name__ == \"__main__\":\n   olli = Opiskelija(\"Olli Opiskelija\", \"1234\", \"olli@example.com\", 0)\n   olli.vaihda_spostitunniste(\"example.edu\")\n   print(olli.sposti)\n\n   outi = Opettaja(\"Outi Ope\", \"outi@example.fi\", \"A123\", 2)\n   outi.vaihda_spostitunniste(\"example.ex\")\n   print(outi.sposti)\n

    Koska sekä Opiskelija että Opettaja perivät luokan Henkilo, molemmilla on käytössään Henkilo-luokassa määritellyt piirteet, mukaanlukien metodi vaihda_spostitunniste.

    Tarkastellaan vielä toista esimerkkiä, jossa luokka Kirjahylly perii luokan Laatikko:

    class Kirja:\n   \"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\"\n   def __init__(self, nimi: str, kirjailija: str):\n       self.nimi = nimi\n       self.kirjailija = kirjailija\n\n\nclass Kirjalaatikko:\n   \"\"\" Luokka mallintaa laatikkoa, johon voidaan tallentaa kirjoja \"\"\"\n\n   def __init__(self):\n       self.kirjat = []\n\n   def lisaa_kirja(self, kirja: Kirja):\n       self.kirjat.append(kirja)\n\n   def listaa_kirjat(self):\n       for kirja in self.kirjat:\n           print(f\"{kirja.nimi} ({kirja.kirjailija})\")\n\nclass Kirjahylly(Kirjalaatikko):\n   \"\"\" Luokka mallintaa yksinkertaista kirjahyllyä \"\"\"\n\n   def __init__(self):\n       super().__init__()\n\n   def lisaa_kirja(self, kirja: Kirja, paikka: int):\n       self.kirjat.insert(paikka, kirja)\n\n

    Luokassa Kirjahylly on määritelty metodi lisaa_kirja. Samanniminen metodi on määritelty myös yliluokassa Kirjalaatikko. Tällaisessa tapauksessa puhutaan metodin uudelleenmäärittelystä tai ylikirjoituksesta (overwriting): aliluokan samanniminen metodi korvaa yliluokan vastaavan metodin.

    Esimerkissämme idea on, että kirjalaatikossa kirja asetetaan aina laatikossa päällimmäiseksi, mutta kirjahyllyssä voidaan määritellä asetuspaikka. Sen sijaan metodin listaa_kirjat uudelleenmäärittelyä ei ole nähty tarpeelliseksi - sama kirjojen listaus toimii niin laatikossa kuin hyllyssäkin (ainakin esimerkissämme).

    Tarkastellaan esimerkkiä luokkien käyttämisestä:

    \nif __name__ == \"__main__\":\n   # Luodaan pari kirjaa testiksi\n   k1 = Kirja(\"7 veljestä\", \"Aleksis Kivi\")\n   k2 = Kirja(\"Sinuhe\", \"Mika Waltari\")\n   k3 = Kirja(\"Tuntematon sotilas\", \"Väinö Linna\")\n\n   # Luodaan kirjalaatikko ja lisätään kirjat sinne\n   laatikko = Kirjalaatikko()\n   laatikko.lisaa_kirja(k1)\n   laatikko.lisaa_kirja(k2)\n   laatikko.lisaa_kirja(k3)\n\n   # Luodaan kirjahylly ja lisätään kirjat sinne (aina hyllyn alkupäähän)\n   hylly = Kirjahylly()\n   hylly.lisaa_kirja(k1, 0)\n   hylly.lisaa_kirja(k2, 0)\n   hylly.lisaa_kirja(k3, 0)\n\n\n   # Tulostetaan\n   print(\"Laatikossa:\")\n   laatikko.listaa_kirjat()\n\n   print()\n\n   print(\"Hyllyssä:\")\n   hylly.listaa_kirjat()\n

    Laatikossa:\n7 veljestä (Aleksis Kivi)\nSinuhe (Mika Waltari)\nTuntematon sotilas (Väinö Linna)

    Hyllyssä:\nTuntematon sotilas (Väinö Linna)\nSinuhe (Mika Waltari)\n7 veljestä (Aleksis Kivi)

    Myös Kirjahylly-luokasta muodostettujen olioiden kautta voidaan käyttää metodia listaa_kirjat, koska perinnän ansiosta se on olemassa myös luokan Kirjahylly aliluokissa.

    Piirteiden periytyminen

    Aliluokka perii yliluokalta kaikki piirteet. Aliluokasta voidaan viitata suoraan yliluokan piirteisiin, paitsi jos yliluokassa on määritelty piirteet yksityisiksi (käyttämällä kahta alaviivaa muuttujan nimen edessä).

    Niinpä esimerkiksi Kirjahylly-luokasta voitaisiin viitata yliluokan konstruktoriin sen sijaan että kirjoitettaisiin toiminnallisuus uudestaan:

    \nclass Kirjahylly(Kirjalaatikko):\n\n   def __init__(self):\n       super().__init__()\n

    Yliluokan konstuktoriin (tai yliluokkaan muutenkin) viitataan funktion super() avulla. Huomaa, että tässäkin tapauksessa parametri self lisätään automaattisesti.

    Tarkastellaan toisena esimerkkinä luokkaa Gradu, joka perii luokan Kirja. Aliluokasta kutsutaan yliluokan konstruktoria:

    \nclass Kirja:\n    \"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\"\n\n    def __init__(self, nimi: str, kirjailija: str):\n        self.nimi = nimi\n        self.kirjailija = kirjailija\n\n\nclass Gradu(Kirja):\n    \"\"\" Luokka mallintaa gradua eli ylemmän korkeakoulututkinnon lopputyötä \"\"\"\n\n    def __init__(self, nimi: str, kirjailija: str, arvosana: int):\n        super().__init__(nimi, kirjailija)\n        self.arvosana = arvosana\n

    Nyt Gradu-luokan konstruktorista kutsutaan yliluokan (eli luokan Kirja) konstruktoria, jossa asetetaan attribuuttien nimi ja kirjailija arvot. Sen jälkeen aliluokan konstruktorissa asetetaan attribuutin arvosana arvo - tätä luonnollisesti ei voida tehdä yliluokan konstruktorissa, koska yliluokalla ei tällaista attribuuttia ole.

    Luokkaa voidaan käyttää esimerkiksi näin:

    \n# Testataan\nif __name__ == \"__main__\":\n    gradu = Gradu(\"Python ja maailmankaikkeus\", \"Pekka Python\", 3)\n\n    # Tulostetaan kenttien arvot\n    print(gradu.nimi)\n    print(gradu.kirjailija)\n    print(gradu.arvosana)\n

    Python ja maailmankaikkeus\nPekka Python\n3

    Koska aliluokka Gradu perii kaikki yliluokan piirteet, se perii myös attribuutit nimi ja kirjailija. Arvot osalle attribuuteista annetaan yliluokan sisältä löytyvässä konstruktorissa.

    Aliluokka voi myös viitata yliluokan metodiin, vaikka metodi olisikin määritelty uudestaan aliluokassa. Seuraavassa esimerkissä luokasta Platinakortti kutsutaan uudelleenmääritellyssä metodissa bonuspisteet yliluokan vastaavaa metodia.

    \nclass Tuote:\n\n    def __init__(self, nimi: str, hinta: float):\n        self.nimi = nimi\n        self.hinta = hinta\n\nclass Bonuskortti:\n\n    def __init__(self):\n        self.ostetut_tuotteet = []\n\n    def lisaa_tuote(self, tuote: Tuote):\n        self.ostetut_tuotteet.append(tuote)\n\n    def laske_bonus(self):\n        bonus = 0\n        for tuote in self.ostetut_tuotteet:\n            bonus += tuote.hinta * 0.05\n\n        return bonus\n\nclass Platinakortti(Bonuskortti):\n\n    def __init__(self):\n        super().__init__()\n\n    def laske_bonus(self):\n        # Kutsutaan yliluokan metodia...\n        bonus = super().laske_bonus()\n\n        # ...ja lisätään vielä viisi prosenttia päälle\n        bonus = bonus * 1.05\n        return bonus\n\n

    Nyt platinakortin bonus lasketaan hyödyntämällä aluksi yliluokan vastaavaa metodia ja lisäämällä sitten ylimääräiset 5 prosenttia tähän bonukseen. Esimerkki luokkien käytöstä:

    if __name__ == \"__main__\":\n    kortti = Bonuskortti()\n    kortti.lisaa_tuote(Tuote(\"Banaanit\", 6.50))\n    kortti.lisaa_tuote(Tuote(\"Mandariinit\", 7.95))\n    bonus = kortti.laske_bonus()\n\n    kortti2 = Platinakortti()\n    kortti2.lisaa_tuote(Tuote(\"Banaanit\", 6.50))\n    kortti2.lisaa_tuote(Tuote(\"Mandariinit\", 7.95))\n    bonus2 = kortti2.laske_bonus()\n\n    print(bonus)\n    print(bonus2)

    0.7225\n0.7586250000000001

    Tehtäväpohjassa on määritelty luokka Tietokone, jolla on attribuutit malli ja nopeus.

    Kirjoita luokka KannettavaTietokone, joka perii luokan Tietokone. Luokka saa konstruktorissa luokan Tietokone attribuuttien lisäksi kolmannen kokonaislukutyyppisen attribuutin paino.

    Kirjoita luokkaan lisäksi metodi __str__, jonka avulla voi tulostaa esimerkkisuorituksen mukaisen tulosteen olion tilasta.

    Esimerkki:

    ipm = KannettavaTietokone(\"IPM MikroMauri\", 1500, 2)\nprint(ipm)

    IPM MikroMauri, 1500 MHz, 2 kg

    Tehtäväpohjassa on määritelty luokat Tietokonepeli ja Pelivarasto. Pelivarastoon voidaan säilöä tietokonepelejä.

    Tutustu luokkien ohjelmakoodiin ja kirjoita sitten uusi luokka Pelimuseo, joka perii luokan Pelivarasto.

    Pelimuseo-luokassa uudelleentoteutetaan metodi anna_pelit() niin, että se palauttaa listassa ainoastaan ne pelit, jotka on tehty ennen vuotta 1990.

    Lisäksi luokassa tulee olla konstruktori, josta kutsutaan yliluokan Pelivarasto konstruktoria. Konstruktorilla ei ole parametreja.

    Esimerkiksi:

    museo = Pelimuseo()\nmuseo.lisaa_peli(Tietokonepeli(\"Pacman\", \"Namco\", 1980))\nmuseo.lisaa_peli(Tietokonepeli(\"GTA 2\", \"Rockstar\", 1999))\nmuseo.lisaa_peli(Tietokonepeli(\"Bubble Bobble\", \"Taito\", 1986))\nfor peli in museo.anna_pelit():\n    print(peli.nimi)

    Pacman\nBubble Bobble

    Tehtäväpohjan mukana tulee luokka Suorakulmio joka nimensä mukaisesti mallintaa suorakulmiota. Luokkaa käytetään seuraavasti:

    suorakulmio = Suorakulmio(2, 3)\nprint(suorakulmio)\nprint(\"pinta-ala:\", suorakulmio.pinta_ala())

    suorakulmio 2x3\npinta-ala: 6

    Neliö

    Toteuta luokka Nelio joka perii luokan Suorakulmio. Suorakulmiosta poiketen neliön kaikki sivut ovat saman pituisia, eli neliö on eräänlainen yksinkertaisempi erikoistapaus suorakulmiosta. Luokka ei saa määritellä uusia attribuutteja!

    Luokkaa käytetään seuraavasti:

    nelio = Nelio(4)\nprint(nelio)\nprint(\"pinta-ala:\", nelio.pinta_ala())

    neliö 4x4\npinta-ala: 16

    Tehtäväpohja sisältää valmiin luokan Sanapeli, joka tarjoaa perustoiminnallisuuden erilaisten sanapelien pelaamiseen:

    import random\n\nclass Sanapeli():\n    def __init__(self, kierrokset: int):\n        self.voitot1 = 0\n        self.voitot2 = 0\n        self.kierrokset = kierrokset\n\n    def kierroksen_voittaja(self, pelaaja1_sana: str, pelaaja2_sana: str):\n        # arvotaan voittaja\n        return random.randint(1, 2)\n\n    def pelaa(self):\n        print(\"Sanapeli:\")\n        for i in range(1, self.kierrokset+1):\n            print(f\"kierros {i}\")\n            vastaus1 = input(\"pelaaja1: \")\n            vastaus2 = input(\"pelaaja2: \")\n\n            if self.kierroksen_voittaja(vastaus1, vastaus2) == 1:\n                self.voitot1 += 1\n                print(\"pelaaja 1 voitti\")\n            elif self.kierroksen_voittaja(vastaus1, vastaus2) == 2:\n                self.voitot2 += 1\n                print(\"pelaaja 2 voitti\")\n            else:\n                pass # tasapeli\n\n        print(\"peli päättyi, voitot:\")\n        print(f\"pelaaja 1: {self.voitot1}\")\n        print(f\"pelaaja 2: {self.voitot2}\")

    Peliä käytetään seuraavasti:

    p = Sanapeli(3)\np.pelaa()

    Esimerkkitulostus

    Sanapeli:\nkierros 1\npelaaja1: pitkäsana\npelaaja2: ??\npelaaja 2 voitti\nkierros 2\npelaaja1: olen paras\npelaaja2: mitä?\npelaaja 1 voitti\nkierros 3\npelaaja1: kuka voittaa\npelaaja2: minä\npelaaja 1 voitti\npeli päättyi voitot:\npelaaja 1: 2\npelaaja 2: 1

    Tässä pelin \"perusversiossa\" voittaja ratkaistaan arpomalla, pelaajien antamilla syötteillä ei ole tulokseen vaikutusta.

    Pisin sana voittaa

    Tee nyt luokka PisinSana eli pelin versio, missä kunkin kierroksen voittaja on sen kierroksen aikana pidemmän sanan syöttänyt käyttäjä.

    Uusi versio toteuteaan perimällä luokka Sanapeli ja ylikirjoittamalla sen metodi kierroksen_voittaja sopivalla tavalla. Uuden luokan runko on siis seuraavanlainen

    class PisinSana(Sanapeli):\n    def __init__(self, kierrokset: int):\n        super().__init__(kierrokset)\n\n    def kierroksen_voittaja(self, pelaaja1_sana: str, pelaaja2_sana: str):\n        # tänne voittajan ratkaiseva koodi

    Esimerkki toiminnasta:

    p = PisinSana(3)\np.pelaa()

    Sanapeli:\nkierros 1\npelaaja1: lyhyt\npelaaja2: pitkäsana\npelaaja 2 voitti\nkierros 2\npelaaja1: sana\npelaaja2: vat?\nkierros 3\npelaaja1: olen paras\npelaaja2: minäpäs\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 1\npelaaja 2: 1

    Eniten vokaaleja voittaa

    Tee nyt luokka EnitenVokaaleja eli pelin versio, missä kunkin kierroksen voittaja on se pelaaja, jonka sanassa oli enemmän vokaaleja.

    Kivi, paperi, sakset

    Tee nyt luokka KiviPaperiSakset joka mallintaa nimensä mukaisesti kivi, paperi ja sakset -peliä.

    Pelin säännöt ovat seuraavat:

      \n
    • kivi voittaa sakset (kivellä voi rikkoa sakset eikä saksilla voi leikata kiveä)
    • \n
    • paperi voittaa kiven (kiven voi peittää paperilla)
    • \n
    • sakset voittaa paperin (saksilla voi leikata paperia)
    • \n

    Jos pelaajan syöte on epäkelpo, eli se ei ole mikään sanoista kivi, paperi, sakset pelaaja häviää kierroksen, ellei molempien syöte ole epäkelpo.

    Esimerkki toiminnasta:

    p = KiviPaperiSakset(4)\np.pelaa()

    Sanapeli:\nkierros 1\npelaaja1: kivi\npelaaja2: kivi\nkierros 2\npelaaja1: kivi\npelaaja2: paperi\npelaaja 2 voitti\nkierros 3\npelaaja1: sakset\npelaaja2: paperi\npelaaja 1 voitti\nkierros 4\npelaaja1: paperi\npelaaja2: dynamiitti\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 2\npelaaja 2: 1

    ","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/1-luokkahierarkiat.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan perinnällä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa luokkia jotka perivät jonkin toisen luokan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät miten eri piirteet periytyvät"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"luokkien-erikoistaminen","style":"position:relative;"},"children":[{"type":"text","value":"Luokkien erikoistaminen"},{"type":"element","tagName":"a","properties":{"href":"#luokkien-erikoistaminen","ariaLabel":"luokkien erikoistaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus tulee vastaan tilanne, jossa luokan toimintaa olisi hyvä pyrkiä erikoistamaan, mutta vain osalle olioista. Tarkastellaan esimerkkinä tilannetta, jossa meillä on kaksi luokkaa - Opiskelija ja Opettaja. Yksinkertaistuksen vuoksi luokista on jätetty pois kaikki asetus- ja havainnointimetodit."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opnro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opnro\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opettaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opetusvuosia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huone\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opetusvuosia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opetusvuosia\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertaistetustakin esimerkistä huomataan, että luokilla on yhteisiä piirteitä - tässä tapauksessa nimi ja sähköpostiosoite. Monessa tilanteessa olisi hyvä, jos yhteisiä piirteitä voitaisin käsitellä yhdellä operaatiolla: oletetaan tilanne, jossa koulun sähköpostitunnus muuttuu. Toki voitaisiin kirjoittaa kaksi käsittelyfunktiota..."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"korjaa_email"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".edu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"korjaa_email2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opettaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" o"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".edu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...mutta saman koodin toistaminen kahteen kertaan tuntuu turhalta työltä, ja lisää virheiden mahdollisuutta. Olisi siis hyvä, jos molempien luokkien mukaisia olioita voitaisiin käsitellä samalla metodilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokat kuitenkin sisältävät myös piirteitä, joita toisella luokalla ei ole. Sen takia luokkien yhdistäminen ei tunnu järkevältä."}]},{"type":"element","tagName":"h2","properties":{"id":"perinta","style":"position:relative;"},"children":[{"type":"text","value":"Perintä"},{"type":"element","tagName":"a","properties":{"href":"#perinta","ariaLabel":"perinta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ratkaisu löytyy olio-ohjelmoinnin tekniikasta nimeltä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perintä"}]},{"type":"text","value":". Perinnällä tarkoitetaan sitä, että luokka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perii"}]},{"type":"text","value":" piirteet joltain toiselta luokalta. Näiden perittyjen piirteiden rinnalle luokka voi sitten toteuttaa uusia piirteitä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opettaja- ja Opiskelija-luokilla voisi olla yhteinen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"yliluokka"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa on toteutettu siis henkilöön liittyvät piirteet. Nyt luokat Opiskelija ja Opettaja voivat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"periä"}]},{"type":"text","value":" luokan ja lisätä perittyjen ominaisuuksien rinnalle uusia piirteitä:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perintä tapahtuu kirjoittamalla luokan nimen perään perittävän luokan nimi sulkuihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vaihda_spostitunniste"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" uusi_tunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanha "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"@\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vanha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" uusi_tunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opnro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opnro\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opettaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opetusvuosia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huone\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opetusvuosia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opetusvuosia\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n olli "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olli@example.com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaihda_spostitunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"example.edu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n outi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opettaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Ope\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"outi@example.fi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"A123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n outi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaihda_spostitunniste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"example.ex\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"outi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska sekä Opiskelija että Opettaja perivät luokan Henkilo, molemmilla on käytössään Henkilo-luokassa määritellyt piirteet, mukaanlukien metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaihda_spostitunniste"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä, jossa luokka Kirjahylly perii luokan Laatikko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjalaatikko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa laatikkoa, johon voidaan tallentaa kirjoja \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"listaa_kirjat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kirjalaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yksinkertaista kirjahyllyä \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"insert"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa Kirjahylly on määritelty metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"text","value":". Samanniminen metodi on määritelty myös yliluokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirjalaatikko"}]},{"type":"text","value":". Tällaisessa tapauksessa puhutaan metodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"uudelleenmäärittelystä"}]},{"type":"text","value":" tai ylikirjoituksesta (overwriting): aliluokan samanniminen metodi korvaa yliluokan vastaavan metodin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissämme idea on, että kirjalaatikossa kirja asetetaan aina laatikossa päällimmäiseksi, mutta kirjahyllyssä voidaan määritellä asetuspaikka. Sen sijaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"listaa_kirjat"}]},{"type":"text","value":" uudelleenmäärittelyä ei ole nähty tarpeelliseksi - sama kirjojen listaus toimii niin laatikossa kuin hyllyssäkin (ainakin esimerkissämme)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä luokkien käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan pari kirjaa testiksi"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7 veljestä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aleksis Kivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sinuhe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mika Waltari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntematon sotilas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väinö Linna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan kirjalaatikko ja lisätään kirjat sinne"}]},{"type":"text","value":"\n laatikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjalaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan kirjahylly ja lisätään kirjat sinne (aina hyllyn alkupäähän)"}]},{"type":"text","value":"\n hylly "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjahylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Laatikossa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"listaa_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hyllyssä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"listaa_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"text","value":" "},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laatikossa:\n7 veljestä (Aleksis Kivi)\nSinuhe (Mika Waltari)\nTuntematon sotilas (Väinö Linna)"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyllyssä:\nTuntematon sotilas (Väinö Linna)\nSinuhe (Mika Waltari)\n7 veljestä (Aleksis Kivi)"}]},{"type":"text","value":" "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös Kirjahylly-luokasta muodostettujen olioiden kautta voidaan käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"listaa_kirjat"}]},{"type":"text","value":", koska perinnän ansiosta se on olemassa myös luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"text","value":" aliluokissa."}]},{"type":"element","tagName":"h2","properties":{"id":"piirteiden-periytyminen","style":"position:relative;"},"children":[{"type":"text","value":"Piirteiden periytyminen"},{"type":"element","tagName":"a","properties":{"href":"#piirteiden-periytyminen","ariaLabel":"piirteiden periytyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aliluokka perii yliluokalta kaikki piirteet. Aliluokasta voidaan viitata suoraan yliluokan piirteisiin, paitsi jos yliluokassa on määritelty piirteet yksityisiksi (käyttämällä kahta alaviivaa muuttujan nimen edessä)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niinpä esimerkiksi Kirjahylly-luokasta voitaisiin viitata yliluokan konstruktoriin sen sijaan että kirjoitettaisiin toiminnallisuus uudestaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kirjalaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yliluokan konstuktoriin (tai yliluokkaan muutenkin) viitataan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"super()"}]},{"type":"text","value":" avulla. Huomaa, että tässäkin tapauksessa parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" lisätään automaattisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan toisena esimerkkinä luokkaa Gradu, joka perii luokan Kirja. Aliluokasta kutsutaan yliluokan konstruktoria:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Gradu"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa gradua eli ylemmän korkeakoulututkinnon lopputyötä \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvosana\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt Gradu-luokan konstruktorista kutsutaan yliluokan (eli luokan Kirja) konstruktoria, jossa asetetaan attribuuttien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjailija"}]},{"type":"text","value":" arvot. Sen jälkeen aliluokan konstruktorissa asetetaan attribuutin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosana"}]},{"type":"text","value":" arvo - tätä luonnollisesti ei voida tehdä yliluokan konstruktorissa, koska yliluokalla ei tällaista attribuuttia ole."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa voidaan käyttää esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n gradu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python ja maailmankaikkeus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kenttien arvot"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"gradu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python ja maailmankaikkeus\nPekka Python\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska aliluokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Gradu"}]},{"type":"text","value":" perii kaikki yliluokan piirteet, se perii myös attribuutit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjailija"}]},{"type":"text","value":". Arvot osalle attribuuteista annetaan yliluokan sisältä löytyvässä konstruktorissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aliluokka voi myös viitata yliluokan metodiin, vaikka metodi olisikin määritelty uudestaan aliluokassa. Seuraavassa esimerkissä luokasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Platinakortti"}]},{"type":"text","value":" kutsutaan uudelleenmääritellyssä metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bonuspisteet"}]},{"type":"text","value":" yliluokan vastaavaa metodia."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Bonuskortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ostetut_tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ostetut_tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_bonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ostetut_tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.05"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" bonus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Platinakortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Bonuskortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_bonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan yliluokan metodia..."}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laske_bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja lisätään vielä viisi prosenttia päälle"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.05"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" bonus\n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt platinakortin bonus lasketaan hyödyntämällä aluksi yliluokan vastaavaa metodia ja lisäämällä sitten ylimääräiset 5 prosenttia tähän bonukseen. Esimerkki luokkien käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Bonuskortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mandariinit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laske_bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kortti2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Platinakortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kortti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mandariinit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n bonus2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laske_bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"bonus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"bonus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0.7225\n0.7586250000000001"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kannettava tietokone","tmcname":"osa10-01_kannettava_tietokone"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tietokone"}]},{"type":"text","value":", jolla on attribuutit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"malli"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nopeus"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"KannettavaTietokone"}]},{"type":"text","value":", joka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perii luokan Tietokone"}]},{"type":"text","value":". Luokka saa konstruktorissa luokan Tietokone attribuuttien lisäksi kolmannen kokonaislukutyyppisen attribuutin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paino"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokkaan lisäksi metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", jonka avulla voi tulostaa esimerkkisuorituksen mukaisen tulosteen olion tilasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ipm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" KannettavaTietokone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IPM MikroMauri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ipm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"IPM MikroMauri, 1500 MHz, 2 kg"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pelimuseo","tmcname":"osa10-02_pelimuseo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tietokonepeli"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pelivarasto"}]},{"type":"text","value":". Pelivarastoon voidaan säilöä tietokonepelejä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustu luokkien ohjelmakoodiin ja kirjoita sitten uusi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pelimuseo"}]},{"type":"text","value":", joka perii luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pelivarasto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelimuseo-luokassa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"uudelleentoteutetaan"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anna_pelit()"}]},{"type":"text","value":" niin, että se palauttaa listassa ainoastaan ne pelit, jotka on tehty ennen vuotta 1990."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokassa tulee olla konstruktori, josta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kutsutaan yliluokan Pelivarasto konstruktoria"}]},{"type":"text","value":". Konstruktorilla ei ole parametreja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"museo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pelimuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tietokonepeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pacman\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Namco\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1980"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tietokonepeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"GTA 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rockstar\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1999"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuseo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tietokonepeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Bubble Bobble\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Taito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1986"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" peli "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" museo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_pelit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pacman\nBubble Bobble"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pinta-alat","tmcname":"osa10-03_pinta_alat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"text","value":" joka nimensä mukaisesti mallintaa "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Suorakulmio","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"suorakulmiota"}]},{"type":"text","value":". Luokkaa käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pinta-ala:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pinta_ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suorakulmio 2x3\npinta-ala: 6"}]}]},{"type":"element","tagName":"h2","properties":{"id":"nelio","style":"position:relative;"},"children":[{"type":"text","value":"Neliö"},{"type":"element","tagName":"a","properties":{"href":"#nelio","ariaLabel":"nelio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Nelio"}]},{"type":"text","value":" joka perii luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"text","value":". Suorakulmiosta poiketen "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Neli%C3%B6_(geometria)","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"neliön"}]},{"type":"text","value":" kaikki sivut ovat saman pituisia, eli neliö on eräänlainen yksinkertaisempi erikoistapaus suorakulmiosta. Luokka ei saa määritellä uusia attribuutteja!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nelio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pinta-ala:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pinta_ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"neliö 4x4\npinta-ala: 16"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sanapeli","tmcname":"osa10-04_sanapeli"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohja sisältää valmiin luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sanapeli"}]},{"type":"text","value":", joka tarjoaa perustoiminnallisuuden erilaisten sanapelien pelaamiseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" random\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanapeli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierrokset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kierrokset\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kierroksen_voittaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja1_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja2_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# arvotaan voittaja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" random"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pelaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sanapeli:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"kierros "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n vastaus1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja1: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n vastaus2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja2: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierroksen_voittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja 1 voitti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kierroksen_voittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pelaaja 2 voitti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tasapeli"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"peli päättyi, voitot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"pelaaja 1: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"pelaaja 2: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"voitot2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Peliä käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sanapeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanapeli:\nkierros 1\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pitkäsana"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"??"}]},{"type":"text","value":"\npelaaja 2 voitti\nkierros 2\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"olen paras"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"mitä?"}]},{"type":"text","value":"\npelaaja 1 voitti\nkierros 3\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kuka voittaa"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"minä"}]},{"type":"text","value":"\npelaaja 1 voitti\npeli päättyi voitot:\npelaaja 1: 2\npelaaja 2: 1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä pelin \"perusversiossa\" voittaja ratkaistaan arpomalla, pelaajien antamilla syötteillä ei ole tulokseen vaikutusta."}]},{"type":"element","tagName":"h2","properties":{"id":"pisin-sana-voittaa","style":"position:relative;"},"children":[{"type":"text","value":"Pisin sana voittaa"},{"type":"element","tagName":"a","properties":{"href":"#pisin-sana-voittaa","ariaLabel":"pisin sana voittaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PisinSana"}]},{"type":"text","value":" eli pelin versio, missä kunkin kierroksen voittaja on sen kierroksen aikana pidemmän sanan syöttänyt käyttäjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi versio toteuteaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"perimällä"}]},{"type":"text","value":" luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sanapeli"}]},{"type":"text","value":" ja ylikirjoittamalla sen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kierroksen_voittaja"}]},{"type":"text","value":" sopivalla tavalla. Uuden luokan runko on siis seuraavanlainen"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PisinSana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Sanapeli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kierrokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kierroksen_voittaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja1_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja2_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne voittajan ratkaiseva koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PisinSana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanapeli:\nkierros 1\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"lyhyt"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pitkäsana"}]},{"type":"text","value":"\npelaaja 2 voitti\nkierros 2\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sana"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"vat?"}]},{"type":"text","value":"\nkierros 3\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"olen paras"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"minäpäs"}]},{"type":"text","value":"\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 1\npelaaja 2: 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"eniten-vokaaleja-voittaa","style":"position:relative;"},"children":[{"type":"text","value":"Eniten vokaaleja voittaa"},{"type":"element","tagName":"a","properties":{"href":"#eniten-vokaaleja-voittaa","ariaLabel":"eniten vokaaleja voittaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"EnitenVokaaleja"}]},{"type":"text","value":" eli pelin versio, missä kunkin kierroksen voittaja on se pelaaja, jonka sanassa oli enemmän vokaaleja."}]},{"type":"element","tagName":"h2","properties":{"id":"kivi-paperi-sakset","style":"position:relative;"},"children":[{"type":"text","value":"Kivi, paperi, sakset"},{"type":"element","tagName":"a","properties":{"href":"#kivi-paperi-sakset","ariaLabel":"kivi paperi sakset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"KiviPaperiSakset"}]},{"type":"text","value":" joka mallintaa nimensä mukaisesti "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Kivi,_paperi_ja_sakset","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"kivi, paperi ja sakset"}]},{"type":"text","value":" -peliä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin säännöt ovat seuraavat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kivi voittaa sakset (kivellä voi rikkoa sakset eikä saksilla voi leikata kiveä)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"paperi voittaa kiven (kiven voi peittää paperilla)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"sakset voittaa paperin (saksilla voi leikata paperia)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos pelaajan syöte on epäkelpo, eli se ei ole mikään sanoista "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kivi, paperi, sakset"}]},{"type":"text","value":" pelaaja häviää kierroksen, ellei molempien syöte ole epäkelpo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" KiviPaperiSakset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanapeli:\nkierros 1\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kivi"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kivi"}]},{"type":"text","value":"\nkierros 2\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kivi"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"paperi"}]},{"type":"text","value":"\npelaaja 2 voitti\nkierros 3\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sakset"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"paperi"}]},{"type":"text","value":"\npelaaja 1 voitti\nkierros 4\npelaaja1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"paperi"}]},{"type":"text","value":"\npelaaja2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"dynamiitti"}]},{"type":"text","value":"\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 2\npelaaja 2: 1"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan perinnällä
    • \n
    • Osaat kirjoittaa luokkia jotka perivät jonkin toisen luokan
    • \n
    • Tiedät miten eri piirteet periytyvät
    • \n

    Luokkien erikoistaminen

    Joskus tulee vastaan tilanne, jossa luokan toimintaa olisi hyvä pyrkiä erikoistamaan, mutta vain osalle olioista. Tarkastellaan esimerkkinä tilannetta, jossa meillä on kaksi luokkaa - Opiskelija ja Opettaja. Yksinkertaistuksen vuoksi luokista on jätetty pois kaikki asetus- ja havainnointimetodit.

    \nclass Opiskelija:\n\n    def __init__(self, nimi: str, opnro: str, sposti: str, opintopisteet: str):\n        self.nimi = nimi\n        self.opnro = opnro\n        self.sposti = sposti\n        self.opintopisteet = opintopisteet\n\nclass Opettaja:\n\n    def __init__(self, nimi: str, sposti: str, huone: str, opetusvuosia: int):\n        self.nimi = nimi\n        self.sposti = sposti\n        self.huone = huone\n        self.opetusvuosia = opetusvuosia\n

    Yksinkertaistetustakin esimerkistä huomataan, että luokilla on yhteisiä piirteitä - tässä tapauksessa nimi ja sähköpostiosoite. Monessa tilanteessa olisi hyvä, jos yhteisiä piirteitä voitaisin käsitellä yhdellä operaatiolla: oletetaan tilanne, jossa koulun sähköpostitunnus muuttuu. Toki voitaisiin kirjoittaa kaksi käsittelyfunktiota...

    \ndef korjaa_email(o: Opiskelija):\n    o.sposti = o.sposti.replace(\".com\", \".edu\")\n\ndef korjaa_email2(o: Opettaja):\n    o.sposti = o.sposti.replace(\".com\", \".edu\")\n

    ...mutta saman koodin toistaminen kahteen kertaan tuntuu turhalta työltä, ja lisää virheiden mahdollisuutta. Olisi siis hyvä, jos molempien luokkien mukaisia olioita voitaisiin käsitellä samalla metodilla.

    Luokat kuitenkin sisältävät myös piirteitä, joita toisella luokalla ei ole. Sen takia luokkien yhdistäminen ei tunnu järkevältä.

    Perintä

    Ratkaisu löytyy olio-ohjelmoinnin tekniikasta nimeltä perintä. Perinnällä tarkoitetaan sitä, että luokka perii piirteet joltain toiselta luokalta. Näiden perittyjen piirteiden rinnalle luokka voi sitten toteuttaa uusia piirteitä.

    Opettaja- ja Opiskelija-luokilla voisi olla yhteinen yliluokka Henkilo:

    \nclass Henkilo:\n\n   def __init__(self, nimi: str, sposti: str):\n       self.nimi = nimi\n       self.sposti = sposti\n

    Luokassa on toteutettu siis henkilöön liittyvät piirteet. Nyt luokat Opiskelija ja Opettaja voivat periä luokan ja lisätä perittyjen ominaisuuksien rinnalle uusia piirteitä:

    Perintä tapahtuu kirjoittamalla luokan nimen perään perittävän luokan nimi sulkuihin:

    \nclass Henkilo:\n\n   def __init__(self, nimi: str, sposti: str):\n       self.nimi = nimi\n       self.sposti = sposti\n\n   def vaihda_spostitunniste(self, uusi_tunniste: str):\n       vanha = self.sposti.split(\"@\")[1]\n       self.sposti = self.sposti.replace(vanha, uusi_tunniste)\n\nclass Opiskelija(Henkilo):\n\n   def __init__(self, nimi: str, opnro: str, sposti: str, opintopisteet: str):\n       self.nimi = nimi\n       self.opnro = opnro\n       self.sposti = sposti\n       self.opintopisteet = opintopisteet\n\nclass Opettaja(Henkilo):\n\n   def __init__(self, nimi: str, sposti: str, huone: str, opetusvuosia: int):\n       self.nimi = nimi\n       self.sposti = sposti\n       self.huone = huone\n       self.opetusvuosia = opetusvuosia\n\n# Testi\nif __name__ == \"__main__\":\n   olli = Opiskelija(\"Olli Opiskelija\", \"1234\", \"olli@example.com\", 0)\n   olli.vaihda_spostitunniste(\"example.edu\")\n   print(olli.sposti)\n\n   outi = Opettaja(\"Outi Ope\", \"outi@example.fi\", \"A123\", 2)\n   outi.vaihda_spostitunniste(\"example.ex\")\n   print(outi.sposti)\n

    Koska sekä Opiskelija että Opettaja perivät luokan Henkilo, molemmilla on käytössään Henkilo-luokassa määritellyt piirteet, mukaanlukien metodi vaihda_spostitunniste.

    Tarkastellaan vielä toista esimerkkiä, jossa luokka Kirjahylly perii luokan Laatikko:

    class Kirja:\n   \"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\"\n   def __init__(self, nimi: str, kirjailija: str):\n       self.nimi = nimi\n       self.kirjailija = kirjailija\n\n\nclass Kirjalaatikko:\n   \"\"\" Luokka mallintaa laatikkoa, johon voidaan tallentaa kirjoja \"\"\"\n\n   def __init__(self):\n       self.kirjat = []\n\n   def lisaa_kirja(self, kirja: Kirja):\n       self.kirjat.append(kirja)\n\n   def listaa_kirjat(self):\n       for kirja in self.kirjat:\n           print(f\"{kirja.nimi} ({kirja.kirjailija})\")\n\nclass Kirjahylly(Kirjalaatikko):\n   \"\"\" Luokka mallintaa yksinkertaista kirjahyllyä \"\"\"\n\n   def __init__(self):\n       super().__init__()\n\n   def lisaa_kirja(self, kirja: Kirja, paikka: int):\n       self.kirjat.insert(paikka, kirja)\n\n

    Luokassa Kirjahylly on määritelty metodi lisaa_kirja. Samanniminen metodi on määritelty myös yliluokassa Kirjalaatikko. Tällaisessa tapauksessa puhutaan metodin uudelleenmäärittelystä tai ylikirjoituksesta (overwriting): aliluokan samanniminen metodi korvaa yliluokan vastaavan metodin.

    Esimerkissämme idea on, että kirjalaatikossa kirja asetetaan aina laatikossa päällimmäiseksi, mutta kirjahyllyssä voidaan määritellä asetuspaikka. Sen sijaan metodin listaa_kirjat uudelleenmäärittelyä ei ole nähty tarpeelliseksi - sama kirjojen listaus toimii niin laatikossa kuin hyllyssäkin (ainakin esimerkissämme).

    Tarkastellaan esimerkkiä luokkien käyttämisestä:

    \nif __name__ == \"__main__\":\n   # Luodaan pari kirjaa testiksi\n   k1 = Kirja(\"7 veljestä\", \"Aleksis Kivi\")\n   k2 = Kirja(\"Sinuhe\", \"Mika Waltari\")\n   k3 = Kirja(\"Tuntematon sotilas\", \"Väinö Linna\")\n\n   # Luodaan kirjalaatikko ja lisätään kirjat sinne\n   laatikko = Kirjalaatikko()\n   laatikko.lisaa_kirja(k1)\n   laatikko.lisaa_kirja(k2)\n   laatikko.lisaa_kirja(k3)\n\n   # Luodaan kirjahylly ja lisätään kirjat sinne (aina hyllyn alkupäähän)\n   hylly = Kirjahylly()\n   hylly.lisaa_kirja(k1, 0)\n   hylly.lisaa_kirja(k2, 0)\n   hylly.lisaa_kirja(k3, 0)\n\n\n   # Tulostetaan\n   print(\"Laatikossa:\")\n   laatikko.listaa_kirjat()\n\n   print()\n\n   print(\"Hyllyssä:\")\n   hylly.listaa_kirjat()\n

    Laatikossa:\n7 veljestä (Aleksis Kivi)\nSinuhe (Mika Waltari)\nTuntematon sotilas (Väinö Linna)

    Hyllyssä:\nTuntematon sotilas (Väinö Linna)\nSinuhe (Mika Waltari)\n7 veljestä (Aleksis Kivi)

    Myös Kirjahylly-luokasta muodostettujen olioiden kautta voidaan käyttää metodia listaa_kirjat, koska perinnän ansiosta se on olemassa myös luokan Kirjahylly aliluokissa.

    Piirteiden periytyminen

    Aliluokka perii yliluokalta kaikki piirteet. Aliluokasta voidaan viitata suoraan yliluokan piirteisiin, paitsi jos yliluokassa on määritelty piirteet yksityisiksi (käyttämällä kahta alaviivaa muuttujan nimen edessä).

    Niinpä esimerkiksi Kirjahylly-luokasta voitaisiin viitata yliluokan konstruktoriin sen sijaan että kirjoitettaisiin toiminnallisuus uudestaan:

    \nclass Kirjahylly(Kirjalaatikko):\n\n   def __init__(self):\n       super().__init__()\n

    Yliluokan konstuktoriin (tai yliluokkaan muutenkin) viitataan funktion super() avulla. Huomaa, että tässäkin tapauksessa parametri self lisätään automaattisesti.

    Tarkastellaan toisena esimerkkinä luokkaa Gradu, joka perii luokan Kirja. Aliluokasta kutsutaan yliluokan konstruktoria:

    \nclass Kirja:\n    \"\"\" Luokka mallintaa yksinkertaista kirjaa \"\"\"\n\n    def __init__(self, nimi: str, kirjailija: str):\n        self.nimi = nimi\n        self.kirjailija = kirjailija\n\n\nclass Gradu(Kirja):\n    \"\"\" Luokka mallintaa gradua eli ylemmän korkeakoulututkinnon lopputyötä \"\"\"\n\n    def __init__(self, nimi: str, kirjailija: str, arvosana: int):\n        super().__init__(nimi, kirjailija)\n        self.arvosana = arvosana\n

    Nyt Gradu-luokan konstruktorista kutsutaan yliluokan (eli luokan Kirja) konstruktoria, jossa asetetaan attribuuttien nimi ja kirjailija arvot. Sen jälkeen aliluokan konstruktorissa asetetaan attribuutin arvosana arvo - tätä luonnollisesti ei voida tehdä yliluokan konstruktorissa, koska yliluokalla ei tällaista attribuuttia ole.

    Luokkaa voidaan käyttää esimerkiksi näin:

    \n# Testataan\nif __name__ == \"__main__\":\n    gradu = Gradu(\"Python ja maailmankaikkeus\", \"Pekka Python\", 3)\n\n    # Tulostetaan kenttien arvot\n    print(gradu.nimi)\n    print(gradu.kirjailija)\n    print(gradu.arvosana)\n

    Python ja maailmankaikkeus\nPekka Python\n3

    Koska aliluokka Gradu perii kaikki yliluokan piirteet, se perii myös attribuutit nimi ja kirjailija. Arvot osalle attribuuteista annetaan yliluokan sisältä löytyvässä konstruktorissa.

    Aliluokka voi myös viitata yliluokan metodiin, vaikka metodi olisikin määritelty uudestaan aliluokassa. Seuraavassa esimerkissä luokasta Platinakortti kutsutaan uudelleenmääritellyssä metodissa bonuspisteet yliluokan vastaavaa metodia.

    \nclass Tuote:\n\n    def __init__(self, nimi: str, hinta: float):\n        self.nimi = nimi\n        self.hinta = hinta\n\nclass Bonuskortti:\n\n    def __init__(self):\n        self.ostetut_tuotteet = []\n\n    def lisaa_tuote(self, tuote: Tuote):\n        self.ostetut_tuotteet.append(tuote)\n\n    def laske_bonus(self):\n        bonus = 0\n        for tuote in self.ostetut_tuotteet:\n            bonus += tuote.hinta * 0.05\n\n        return bonus\n\nclass Platinakortti(Bonuskortti):\n\n    def __init__(self):\n        super().__init__()\n\n    def laske_bonus(self):\n        # Kutsutaan yliluokan metodia...\n        bonus = super().laske_bonus()\n\n        # ...ja lisätään vielä viisi prosenttia päälle\n        bonus = bonus * 1.05\n        return bonus\n\n

    Nyt platinakortin bonus lasketaan hyödyntämällä aluksi yliluokan vastaavaa metodia ja lisäämällä sitten ylimääräiset 5 prosenttia tähän bonukseen. Esimerkki luokkien käytöstä:

    if __name__ == \"__main__\":\n    kortti = Bonuskortti()\n    kortti.lisaa_tuote(Tuote(\"Banaanit\", 6.50))\n    kortti.lisaa_tuote(Tuote(\"Mandariinit\", 7.95))\n    bonus = kortti.laske_bonus()\n\n    kortti2 = Platinakortti()\n    kortti2.lisaa_tuote(Tuote(\"Banaanit\", 6.50))\n    kortti2.lisaa_tuote(Tuote(\"Mandariinit\", 7.95))\n    bonus2 = kortti2.laske_bonus()\n\n    print(bonus)\n    print(bonus2)

    0.7225\n0.7586250000000001

    Tehtäväpohjassa on määritelty luokka Tietokone, jolla on attribuutit malli ja nopeus.

    Kirjoita luokka KannettavaTietokone, joka perii luokan Tietokone. Luokka saa konstruktorissa luokan Tietokone attribuuttien lisäksi kolmannen kokonaislukutyyppisen attribuutin paino.

    Kirjoita luokkaan lisäksi metodi __str__, jonka avulla voi tulostaa esimerkkisuorituksen mukaisen tulosteen olion tilasta.

    Esimerkki:

    ipm = KannettavaTietokone(\"IPM MikroMauri\", 1500, 2)\nprint(ipm)

    IPM MikroMauri, 1500 MHz, 2 kg

    Tehtäväpohjassa on määritelty luokat Tietokonepeli ja Pelivarasto. Pelivarastoon voidaan säilöä tietokonepelejä.

    Tutustu luokkien ohjelmakoodiin ja kirjoita sitten uusi luokka Pelimuseo, joka perii luokan Pelivarasto.

    Pelimuseo-luokassa uudelleentoteutetaan metodi anna_pelit() niin, että se palauttaa listassa ainoastaan ne pelit, jotka on tehty ennen vuotta 1990.

    Lisäksi luokassa tulee olla konstruktori, josta kutsutaan yliluokan Pelivarasto konstruktoria. Konstruktorilla ei ole parametreja.

    Esimerkiksi:

    museo = Pelimuseo()\nmuseo.lisaa_peli(Tietokonepeli(\"Pacman\", \"Namco\", 1980))\nmuseo.lisaa_peli(Tietokonepeli(\"GTA 2\", \"Rockstar\", 1999))\nmuseo.lisaa_peli(Tietokonepeli(\"Bubble Bobble\", \"Taito\", 1986))\nfor peli in museo.anna_pelit():\n    print(peli.nimi)

    Pacman\nBubble Bobble

    Tehtäväpohjan mukana tulee luokka Suorakulmio joka nimensä mukaisesti mallintaa suorakulmiota. Luokkaa käytetään seuraavasti:

    suorakulmio = Suorakulmio(2, 3)\nprint(suorakulmio)\nprint(\"pinta-ala:\", suorakulmio.pinta_ala())

    suorakulmio 2x3\npinta-ala: 6

    Neliö

    Toteuta luokka Nelio joka perii luokan Suorakulmio. Suorakulmiosta poiketen neliön kaikki sivut ovat saman pituisia, eli neliö on eräänlainen yksinkertaisempi erikoistapaus suorakulmiosta. Luokka ei saa määritellä uusia attribuutteja!

    Luokkaa käytetään seuraavasti:

    nelio = Nelio(4)\nprint(nelio)\nprint(\"pinta-ala:\", nelio.pinta_ala())

    neliö 4x4\npinta-ala: 16

    Tehtäväpohja sisältää valmiin luokan Sanapeli, joka tarjoaa perustoiminnallisuuden erilaisten sanapelien pelaamiseen:

    import random\n\nclass Sanapeli():\n    def __init__(self, kierrokset: int):\n        self.voitot1 = 0\n        self.voitot2 = 0\n        self.kierrokset = kierrokset\n\n    def kierroksen_voittaja(self, pelaaja1_sana: str, pelaaja2_sana: str):\n        # arvotaan voittaja\n        return random.randint(1, 2)\n\n    def pelaa(self):\n        print(\"Sanapeli:\")\n        for i in range(1, self.kierrokset+1):\n            print(f\"kierros {i}\")\n            vastaus1 = input(\"pelaaja1: \")\n            vastaus2 = input(\"pelaaja2: \")\n\n            if self.kierroksen_voittaja(vastaus1, vastaus2) == 1:\n                self.voitot1 += 1\n                print(\"pelaaja 1 voitti\")\n            elif self.kierroksen_voittaja(vastaus1, vastaus2) == 2:\n                self.voitot2 += 1\n                print(\"pelaaja 2 voitti\")\n            else:\n                pass # tasapeli\n\n        print(\"peli päättyi, voitot:\")\n        print(f\"pelaaja 1: {self.voitot1}\")\n        print(f\"pelaaja 2: {self.voitot2}\")

    Peliä käytetään seuraavasti:

    p = Sanapeli(3)\np.pelaa()

    Esimerkkitulostus

    Sanapeli:\nkierros 1\npelaaja1: pitkäsana\npelaaja2: ??\npelaaja 2 voitti\nkierros 2\npelaaja1: olen paras\npelaaja2: mitä?\npelaaja 1 voitti\nkierros 3\npelaaja1: kuka voittaa\npelaaja2: minä\npelaaja 1 voitti\npeli päättyi voitot:\npelaaja 1: 2\npelaaja 2: 1

    Tässä pelin \"perusversiossa\" voittaja ratkaistaan arpomalla, pelaajien antamilla syötteillä ei ole tulokseen vaikutusta.

    Pisin sana voittaa

    Tee nyt luokka PisinSana eli pelin versio, missä kunkin kierroksen voittaja on sen kierroksen aikana pidemmän sanan syöttänyt käyttäjä.

    Uusi versio toteuteaan perimällä luokka Sanapeli ja ylikirjoittamalla sen metodi kierroksen_voittaja sopivalla tavalla. Uuden luokan runko on siis seuraavanlainen

    class PisinSana(Sanapeli):\n    def __init__(self, kierrokset: int):\n        super().__init__(kierrokset)\n\n    def kierroksen_voittaja(self, pelaaja1_sana: str, pelaaja2_sana: str):\n        # tänne voittajan ratkaiseva koodi

    Esimerkki toiminnasta:

    p = PisinSana(3)\np.pelaa()

    Sanapeli:\nkierros 1\npelaaja1: lyhyt\npelaaja2: pitkäsana\npelaaja 2 voitti\nkierros 2\npelaaja1: sana\npelaaja2: vat?\nkierros 3\npelaaja1: olen paras\npelaaja2: minäpäs\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 1\npelaaja 2: 1

    Eniten vokaaleja voittaa

    Tee nyt luokka EnitenVokaaleja eli pelin versio, missä kunkin kierroksen voittaja on se pelaaja, jonka sanassa oli enemmän vokaaleja.

    Kivi, paperi, sakset

    Tee nyt luokka KiviPaperiSakset joka mallintaa nimensä mukaisesti kivi, paperi ja sakset -peliä.

    Pelin säännöt ovat seuraavat:

      \n
    • kivi voittaa sakset (kivellä voi rikkoa sakset eikä saksilla voi leikata kiveä)
    • \n
    • paperi voittaa kiven (kiven voi peittää paperilla)
    • \n
    • sakset voittaa paperin (saksilla voi leikata paperia)
    • \n

    Jos pelaajan syöte on epäkelpo, eli se ei ole mikään sanoista kivi, paperi, sakset pelaaja häviää kierroksen, ellei molempien syöte ole epäkelpo.

    Esimerkki toiminnasta:

    p = KiviPaperiSakset(4)\np.pelaa()

    Sanapeli:\nkierros 1\npelaaja1: kivi\npelaaja2: kivi\nkierros 2\npelaaja1: kivi\npelaaja2: paperi\npelaaja 2 voitti\nkierros 3\npelaaja1: sakset\npelaaja2: paperi\npelaaja 1 voitti\nkierros 4\npelaaja1: paperi\npelaaja2: dynamiitti\npelaaja 1 voitti\npeli päättyi, voitot:\npelaaja 1: 2\npelaaja 2: 1

    ","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/1-luokkahierarkiat.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-10/2-nakyvyysmaareet/page-data.json b/page-data/osa-10/2-nakyvyysmaareet/page-data.json index b00027ab2..dc7f7f20e 100644 --- a/page-data/osa-10/2-nakyvyysmaareet/page-data.json +++ b/page-data/osa-10/2-nakyvyysmaareet/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-10/2-nakyvyysmaareet", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä eroa on näkyvyysmääreillä yksityinen ja suojattu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten piirteiden näkyvyys määritetään Pythonissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin mainittiin, että yliluokassa yksityiseksi määritettyihin piirteisiin ei pääse käsiksi aliluokassa. Tarkastellaan esimerkkinä luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"text","value":", jossa muistiinpanojen säilyttämiseen käytettävä lista-attribuutti on piilotettu asiakkailta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# yksityinen attribuutti"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"palauta_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kaikki_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan sisäisen eheyden kannalta tietorakenteena toimivan listan piilottaminen asiakkaalta on sinänsä järkevää, koska luokka tarjoaa itse sopivat operaatiot muistiinpanojen lisäämiseksi ja selaamiseksi. Ongelmalliseksi tilanne muodostuu, jos yritetään kirjoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"text","value":"-luokan perivä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ProMuistikirja"}]},{"type":"text","value":", johon halutaan lisätä muistiinpanojen etsiminen ja järjestäminen. Piilotettu attribuutti ei ole käytettävissä myöskään aliluokissa; metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_muistiinpanot"}]},{"type":"text","value":" antaa kutsuttaessa virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"MuistikirjaPro"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Muistikirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä on ok, koska luokan Muistikirja konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# on julkinen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä antaa virheen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hakusana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutti __muistiinpanot on yksityinen, eikä näy"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# aliluokalle"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" muistiinpano "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" hakusana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" loydetty\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AttributeError: 'MuistikirjaPro' object has no attribute '_MuistikirjaPro__muistiinpanot'"}]}]},{"type":"element","tagName":"h2","properties":{"id":"suojatut-piirteet","style":"position:relative;"},"children":[{"type":"text","value":"Suojatut piirteet"},{"type":"element","tagName":"a","properties":{"href":"#suojatut-piirteet","ariaLabel":"suojatut piirteet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisin kuin joistain muista ohjelmointikielistä, Pythonista ei suoraan löydy ominaisuutta joka piilottaa piirteet asiakkailta mutta samaan aikaan avaa ne mahdollisille aliluokille. Ratkaisuksi Python-yhteisö onkin päätynyt "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"konventioon"}]},{"type":"text","value":" eli yleisesti ymmärrettyyn merkintätapaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"suojatuille"}]},{"type":"text","value":" (eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"protected"}]},{"type":"text","value":") piirteille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska piirre voidaan piilottaa kirjoittamalla sen tunnisteen (eli nimen) eteen kaksi alaviivaa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"on yleisesti sovittu että yhdellä alaviivalla alkavat piirteet ovat tarkoitettu ainoastaan luokan ja sen aliluokkien käyttöön, eikä niitä tulisi käyttää suoraan sen ulkopuolelta."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alla on esitetty koko muistikirjaesimerkki uudestaan niin, että muistiinpanot on merkitty suojatuiksi yliluokassa yksityisen sijasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# suojattu attribuutti"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"palauta_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kaikki_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"MuistikirjaPro"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Muistikirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä on ok, koska luokan Muistikirja konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# on julkinen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nyt metodi toimii, koska suojattu attribuutti näkyy"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# aliluokalle"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hakusana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" muistiinpano "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" hakusana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" loydetty\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa taulukossa on vielä esitetty piirteiden näkyvyys kaikkien eri suojausmääreiden tapauksessa:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Näkyvyysmääre"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Esimerkki"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Näkyy asiakkaalle"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Näkyy aliluokalle"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Julkinen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.nimi"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"kyllä"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"kyllä"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Suojattu"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self._nimi"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"ei"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"kyllä"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Yksityinen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.__nimi"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"ei"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"ei"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näkyvyysmääreet toimivat vastaavasti kaikkien piirteiden kanssa. Luokassa Henkilo oleva metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"isot_alkukirjaimet"}]},{"type":"text","value":" on suojattu, joten sitä voi käyttää myös aliluokassa Jalkapalloilija:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_isot_alkukirjaimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"_isot_alkukirjaimet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi_isoilla "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi_isoilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"capitalize"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi_isoilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Jalkapalloilija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelipaikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodia voi kutsua, koska se on suojattu yliluokassa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__lempinimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_isot_alkukirjaimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelipaikka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelipaikka\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n r "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jalkapalloilija - nimi:"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", lempinimi: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n r "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\", pelipaikka: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelipaikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" r\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n jp "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Jalkapalloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"petri pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pyttis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hyökkääjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jp"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jalkapalloilija - nimi:Petri Pythonen, lempinimi: Pyttis, pelipaikka: hyökkääjä"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Superryhmä","tmcname":"osa10-05_superryhma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SuperSankari"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SuperRyhma"}]},{"type":"text","value":", joka mallintaa supersankareista koostuvaa ryhmää. Luokalla pitää olla seuraava piirteet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Suojatut"}]},{"type":"text","value":" attribuutit nimi (merkkijono), kotipaikka (merkkijono) ja jasenet (lista)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Konstruktori, joka saa parametrikseen tässä järjestyksessä nimen ja kotipaikan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Havainnointimetodit nimelle ja kotipaikalle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_jasen(sankari: SuperSankari)"}]},{"type":"text","value":", joka lisää uuden jäsenen ryhmään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_ryhma"}]},{"type":"text","value":", joka tulostaa ryhmän ja sen jäsenten tiedot alla olevan esimerkin mukaisesti"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"supermiekkonen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SuperSankari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Supermiekkonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Supernopeus, supervoimakkuus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnakymaton "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SuperSankari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Näkymätön Makkonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Näkymättömyys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nryhma_z "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SuperRyhma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ryhmä Z\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kälviä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nryhma_z"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_jasen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"supermiekkonen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nryhma_z"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_jasen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nakymaton"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nryhma_z"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_ryhma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ryhmä Z, Kälviä\nJäsenet:\nSupermiekkonen, superkyvyt: Supernopeus, supervoimakkuus\nNäkymätön Makkonen, superkyvyt: Näkymättömyys"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/osa-9/3-kapselointi#asetus--ja-havainnointimetodit"},"children":[{"type":"text","value":"Tämän"}]},{"type":"text","value":" luvun kertaaminen voi olla hyödyksi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Salainen taikajuoma","tmcname":"osa10-06_salainen_taikajuoma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Taikajuoma"}]},{"type":"text","value":", johon käyttäjä voi tallentaa reseptin. Luokasta löytyy konstruktorin lisäksi metodit"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_aines(ainesosa: str, maara: float)"}]},{"type":"text","value":" ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_resepti()"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Taikajuoma"}]},{"type":"text","value":"-luokan perivä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SalainenTaikajuoma"}]},{"type":"text","value":", jolla resepti voidaan suojata salasanalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi luokka saa konstruktorissa taikajuoman nimen lisäksi salasanan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokalla on metodit"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_aines(ainesosa: str, maara: float, salasana: str)"}]},{"type":"text","value":" ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_resepti(salasana: str)"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos metodeja kutsutaan väärällä salasanalla, ne antavat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"-poikkeuksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uudet metodit kutsuvat perityn luokan metodeja, jos salasana on oikein! Älä siis leikkaa ja liimaa toteutuksia luokasta Taikajuoma."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kutistus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SalainenTaikajuoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kutistus maksimus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_aines"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kärpässieni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_aines"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Taikahiekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_aines"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sammakonkutu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pokkushokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# VÄÄRÄ SALASANA!"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Kutistus maksimus:\nKärpässieni 1.5 grammaa\nTaikahiekka 3.0 grammaa\nSammakonkutu 4.0 grammaa\nTraceback (most recent call last):\nFile \"salaiset_taikajuomat.py\", line 98, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nraise ValueError(\"Väärä salasana!\")\nValueError: Väärä salasana!"}]}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä eroa on näkyvyysmääreillä yksityinen ja suojattu
    • \n
    • Tiedät, miten piirteiden näkyvyys määritetään Pythonissa
    • \n

    Aikaisemmin mainittiin, että yliluokassa yksityiseksi määritettyihin piirteisiin ei pääse käsiksi aliluokassa. Tarkastellaan esimerkkinä luokkaa Muistikirja, jossa muistiinpanojen säilyttämiseen käytettävä lista-attribuutti on piilotettu asiakkailta:

    \nclass Muistikirja:\n    \"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\"\n\n    def __init__(self):\n        # yksityinen attribuutti\n        self.__muistiinpanot = []\n\n    def lisaa_muistiinpano(self, muistiinpano):\n        self.__muistiinpanot.append(muistiinpano)\n\n    def palauta_muistiinpano(self, indeksi):\n        return self.__muistiinpanot[indeksi]\n\n    def kaikki_muistiinpanot(self):\n        return \",\".join(self.__muistiinpanot)\n

    Luokan sisäisen eheyden kannalta tietorakenteena toimivan listan piilottaminen asiakkaalta on sinänsä järkevää, koska luokka tarjoaa itse sopivat operaatiot muistiinpanojen lisäämiseksi ja selaamiseksi. Ongelmalliseksi tilanne muodostuu, jos yritetään kirjoittaa Muistikirja-luokan perivä luokka ProMuistikirja, johon halutaan lisätä muistiinpanojen etsiminen ja järjestäminen. Piilotettu attribuutti ei ole käytettävissä myöskään aliluokissa; metodi etsi_muistiinpanot antaa kutsuttaessa virheen:

    class MuistikirjaPro(Muistikirja):\n    \"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\"\n    def __init__(self):\n        # Tämä on ok, koska luokan Muistikirja konstruktori\n        # on julkinen\n        super().__init__()\n\n    # Tämä antaa virheen\n    def etsi_muistiinpanot(self, hakusana):\n        loydetty = []\n        # Attribuutti __muistiinpanot on yksityinen, eikä näy\n        # aliluokalle\n        for muistiinpano in self.__muistiinpanot:\n            if hakusana in muistiinpano:\n                loydetty.append(muistiinpano)\n\n        return loydetty\n

    AttributeError: 'MuistikirjaPro' object has no attribute '_MuistikirjaPro__muistiinpanot'

    Suojatut piirteet

    Toisin kuin joistain muista ohjelmointikielistä, Pythonista ei suoraan löydy ominaisuutta joka piilottaa piirteet asiakkailta mutta samaan aikaan avaa ne mahdollisille aliluokille. Ratkaisuksi Python-yhteisö onkin päätynyt konventioon eli yleisesti ymmärrettyyn merkintätapaan suojatuille (eli protected) piirteille.

    Koska piirre voidaan piilottaa kirjoittamalla sen tunnisteen (eli nimen) eteen kaksi alaviivaa

    \ndef __init__(self):\n    self.__muistiinpanot = []\n

    on yleisesti sovittu että yhdellä alaviivalla alkavat piirteet ovat tarkoitettu ainoastaan luokan ja sen aliluokkien käyttöön, eikä niitä tulisi käyttää suoraan sen ulkopuolelta.

    \ndef __init__(self):\n    self._muistiinpanot = []\n

    Alla on esitetty koko muistikirjaesimerkki uudestaan niin, että muistiinpanot on merkitty suojatuiksi yliluokassa yksityisen sijasta:

    \nclass Muistikirja:\n    \"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\"\n\n    def __init__(self):\n        # suojattu attribuutti\n        self._muistiinpanot = []\n\n    def lisaa_muistiinpano(self, muistiinpano):\n        self._muistiinpanot.append(muistiinpano)\n\n    def palauta_muistiinpano(self, indeksi):\n        return self._muistiinpanot[indeksi]\n\n    def kaikki_muistiinpanot(self):\n        return \",\".join(self._muistiinpanot)\n\nclass MuistikirjaPro(Muistikirja):\n    \"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\"\n    def __init__(self):\n        # Tämä on ok, koska luokan Muistikirja konstruktori\n        # on julkinen\n        super().__init__()\n\n    # Nyt metodi toimii, koska suojattu attribuutti näkyy\n    # aliluokalle\n    def etsi_muistiinpanot(self, hakusana):\n        loydetty = []\n        for muistiinpano in self._muistiinpanot:\n            if hakusana in muistiinpano:\n                loydetty.append(muistiinpano)\n\n        return loydetty\n

    Seuraavassa taulukossa on vielä esitetty piirteiden näkyvyys kaikkien eri suojausmääreiden tapauksessa:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    NäkyvyysmääreEsimerkkiNäkyy asiakkaalleNäkyy aliluokalle
    Julkinenself.nimikylläkyllä
    Suojattuself._nimieikyllä
    Yksityinenself.__nimieiei

    Näkyvyysmääreet toimivat vastaavasti kaikkien piirteiden kanssa. Luokassa Henkilo oleva metodi isot_alkukirjaimet on suojattu, joten sitä voi käyttää myös aliluokassa Jalkapalloilija:

    \nclass Henkilo:\n    def __init__(self, nimi: str):\n        self._nimi = self._isot_alkukirjaimet(nimi)\n\n    def _isot_alkukirjaimet(self, nimi):\n        nimi_isoilla = []\n        for n in nimi.split(\" \"):\n            nimi_isoilla.append(n.capitalize())\n\n        return \" \".join(nimi_isoilla)\n\n    def __repr__(self):\n        return self.__nimi\n\nclass Jalkapalloilija(Henkilo):\n\n    def __init__(self, nimi: str, lempinimi: str, pelipaikka: str):\n        super().__init__(nimi)\n        # metodia voi kutsua, koska se on suojattu yliluokassa\n        self.__lempinimi = self._isot_alkukirjaimet(lempinimi)\n        self.__pelipaikka = pelipaikka\n\n    def __repr__(self):\n        r =  f\"Jalkapalloilija - nimi:{self._nimi}, lempinimi: {self.__lempinimi}\"\n        r += f\", pelipaikka: {self.__pelipaikka}\"\n        return r\n\n# Testataan\nif __name__ == \"__main__\":\n    jp = Jalkapalloilija(\"petri pythonen\", \"pyttis\", \"hyökkääjä\")\n    print(jp)\n

    Jalkapalloilija - nimi:Petri Pythonen, lempinimi: Pyttis, pelipaikka: hyökkääjä

    Tehtäväpohjassa on valmiina luokka SuperSankari.

    Kirjoita luokka SuperRyhma, joka mallintaa supersankareista koostuvaa ryhmää. Luokalla pitää olla seuraava piirteet:

      \n
    • Suojatut attribuutit nimi (merkkijono), kotipaikka (merkkijono) ja jasenet (lista)
    • \n
    • Konstruktori, joka saa parametrikseen tässä järjestyksessä nimen ja kotipaikan
    • \n
    • Havainnointimetodit nimelle ja kotipaikalle
    • \n
    • Metodi lisaa_jasen(sankari: SuperSankari), joka lisää uuden jäsenen ryhmään
    • \n
    • Metodi tulosta_ryhma, joka tulostaa ryhmän ja sen jäsenten tiedot alla olevan esimerkin mukaisesti
    • \n

    Esimerkki luokan käytöstä:

    supermiekkonen = SuperSankari(\"Supermiekkonen\", \"Supernopeus, supervoimakkuus\")\nnakymaton = SuperSankari(\"Näkymätön Makkonen\", \"Näkymättömyys\")\nryhma_z = SuperRyhma(\"Ryhmä Z\", \"Kälviä\")\n\nryhma_z.lisaa_jasen(supermiekkonen)\nryhma_z.lisaa_jasen(nakymaton)\nryhma_z.tulosta_ryhma()

    Ryhmä Z, Kälviä\nJäsenet:\nSupermiekkonen, superkyvyt: Supernopeus, supervoimakkuus\nNäkymätön Makkonen, superkyvyt: Näkymättömyys

    Tämän luvun kertaaminen voi olla hyödyksi.

    Tehtäväpohjassa on luokka Taikajuoma, johon käyttäjä voi tallentaa reseptin. Luokasta löytyy konstruktorin lisäksi metodit

      \n
    • lisaa_aines(ainesosa: str, maara: float) ja
    • \n
    • tulosta_resepti()
    • \n

    Kirjoita Taikajuoma-luokan perivä luokka SalainenTaikajuoma, jolla resepti voidaan suojata salasanalla.

    Uusi luokka saa konstruktorissa taikajuoman nimen lisäksi salasanan.

    Lisäksi luokalla on metodit

      \n
    • lisaa_aines(ainesosa: str, maara: float, salasana: str) ja
    • \n
    • tulosta_resepti(salasana: str)
    • \n

    Jos metodeja kutsutaan väärällä salasanalla, ne antavat ValueError-poikkeuksen.

    Uudet metodit kutsuvat perityn luokan metodeja, jos salasana on oikein! Älä siis leikkaa ja liimaa toteutuksia luokasta Taikajuoma.

    Esimerkki luokan käytöstä:

    kutistus = SalainenTaikajuoma(\"Kutistus maksimus\", \"hokkuspokkus\")\nkutistus.lisaa_aines(\"Kärpässieni\", 1.5, \"hokkuspokkus\")\nkutistus.lisaa_aines(\"Taikahiekka\", 3.0, \"hokkuspokkus\")\nkutistus.lisaa_aines(\"Sammakonkutu\", 4.0, \"hokkuspokkus\")\nkutistus.tulosta_resepti(\"hokkuspokkus\")\n\nkutistus.tulosta_resepti(\"pokkushokkus\") # VÄÄRÄ SALASANA!
    Kutistus maksimus:\nKärpässieni 1.5 grammaa\nTaikahiekka 3.0 grammaa\nSammakonkutu 4.0 grammaa\nTraceback (most recent call last):\nFile \"salaiset_taikajuomat.py\", line 98, in \nraise ValueError(\"Väärä salasana!\")\nValueError: Väärä salasana!
    ","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/2-nakyvyysmaareet.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä eroa on näkyvyysmääreillä yksityinen ja suojattu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten piirteiden näkyvyys määritetään Pythonissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin mainittiin, että yliluokassa yksityiseksi määritettyihin piirteisiin ei pääse käsiksi aliluokassa. Tarkastellaan esimerkkinä luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"text","value":", jossa muistiinpanojen säilyttämiseen käytettävä lista-attribuutti on piilotettu asiakkailta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# yksityinen attribuutti"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"palauta_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kaikki_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan sisäisen eheyden kannalta tietorakenteena toimivan listan piilottaminen asiakkaalta on sinänsä järkevää, koska luokka tarjoaa itse sopivat operaatiot muistiinpanojen lisäämiseksi ja selaamiseksi. Ongelmalliseksi tilanne muodostuu, jos yritetään kirjoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"text","value":"-luokan perivä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ProMuistikirja"}]},{"type":"text","value":", johon halutaan lisätä muistiinpanojen etsiminen ja järjestäminen. Piilotettu attribuutti ei ole käytettävissä myöskään aliluokissa; metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_muistiinpanot"}]},{"type":"text","value":" antaa kutsuttaessa virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"MuistikirjaPro"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Muistikirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä on ok, koska luokan Muistikirja konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# on julkinen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä antaa virheen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hakusana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutti __muistiinpanot on yksityinen, eikä näy"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# aliluokalle"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" muistiinpano "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" hakusana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" loydetty\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AttributeError: 'MuistikirjaPro' object has no attribute '_MuistikirjaPro__muistiinpanot'"}]}]},{"type":"element","tagName":"h2","properties":{"id":"suojatut-piirteet","style":"position:relative;"},"children":[{"type":"text","value":"Suojatut piirteet"},{"type":"element","tagName":"a","properties":{"href":"#suojatut-piirteet","ariaLabel":"suojatut piirteet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisin kuin joistain muista ohjelmointikielistä, Pythonista ei suoraan löydy ominaisuutta joka piilottaa piirteet asiakkailta mutta samaan aikaan avaa ne mahdollisille aliluokille. Ratkaisuksi Python-yhteisö onkin päätynyt "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"konventioon"}]},{"type":"text","value":" eli yleisesti ymmärrettyyn merkintätapaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"suojatuille"}]},{"type":"text","value":" (eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"protected"}]},{"type":"text","value":") piirteille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska piirre voidaan piilottaa kirjoittamalla sen tunnisteen (eli nimen) eteen kaksi alaviivaa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"on yleisesti sovittu että yhdellä alaviivalla alkavat piirteet ovat tarkoitettu ainoastaan luokan ja sen aliluokkien käyttöön, eikä niitä tulisi käyttää suoraan sen ulkopuolelta."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alla on esitetty koko muistikirjaesimerkki uudestaan niin, että muistiinpanot on merkitty suojatuiksi yliluokassa yksityisen sijasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Muistikirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# suojattu attribuutti"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"palauta_muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"indeksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kaikki_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"MuistikirjaPro"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Muistikirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä on ok, koska luokan Muistikirja konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# on julkinen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nyt metodi toimii, koska suojattu attribuutti näkyy"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# aliluokalle"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hakusana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" muistiinpano "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" hakusana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n loydetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" loydetty\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa taulukossa on vielä esitetty piirteiden näkyvyys kaikkien eri suojausmääreiden tapauksessa:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Näkyvyysmääre"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Esimerkki"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Näkyy asiakkaalle"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Näkyy aliluokalle"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Julkinen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.nimi"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"kyllä"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"kyllä"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Suojattu"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self._nimi"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"ei"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"kyllä"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Yksityinen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.__nimi"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"ei"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"ei"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näkyvyysmääreet toimivat vastaavasti kaikkien piirteiden kanssa. Luokassa Henkilo oleva metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"isot_alkukirjaimet"}]},{"type":"text","value":" on suojattu, joten sitä voi käyttää myös aliluokassa Jalkapalloilija:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_isot_alkukirjaimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"_isot_alkukirjaimet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi_isoilla "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi_isoilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"capitalize"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi_isoilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Jalkapalloilija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelipaikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"super"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__init__"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodia voi kutsua, koska se on suojattu yliluokassa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__lempinimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_isot_alkukirjaimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelipaikka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelipaikka\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n r "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jalkapalloilija - nimi:"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", lempinimi: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__lempinimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n r "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\", pelipaikka: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelipaikka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" r\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n jp "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Jalkapalloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"petri pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pyttis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hyökkääjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jp"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jalkapalloilija - nimi:Petri Pythonen, lempinimi: Pyttis, pelipaikka: hyökkääjä"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Superryhmä","tmcname":"osa10-05_superryhma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SuperSankari"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SuperRyhma"}]},{"type":"text","value":", joka mallintaa supersankareista koostuvaa ryhmää. Luokalla pitää olla seuraava piirteet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Suojatut"}]},{"type":"text","value":" attribuutit nimi (merkkijono), kotipaikka (merkkijono) ja jasenet (lista)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Konstruktori, joka saa parametrikseen tässä järjestyksessä nimen ja kotipaikan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Havainnointimetodit nimelle ja kotipaikalle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_jasen(sankari: SuperSankari)"}]},{"type":"text","value":", joka lisää uuden jäsenen ryhmään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_ryhma"}]},{"type":"text","value":", joka tulostaa ryhmän ja sen jäsenten tiedot alla olevan esimerkin mukaisesti"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"supermiekkonen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SuperSankari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Supermiekkonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Supernopeus, supervoimakkuus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnakymaton "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SuperSankari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Näkymätön Makkonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Näkymättömyys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nryhma_z "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SuperRyhma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ryhmä Z\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kälviä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nryhma_z"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_jasen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"supermiekkonen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nryhma_z"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_jasen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nakymaton"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nryhma_z"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_ryhma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ryhmä Z, Kälviä\nJäsenet:\nSupermiekkonen, superkyvyt: Supernopeus, supervoimakkuus\nNäkymätön Makkonen, superkyvyt: Näkymättömyys"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/osa-9/3-kapselointi#asetus--ja-havainnointimetodit"},"children":[{"type":"text","value":"Tämän"}]},{"type":"text","value":" luvun kertaaminen voi olla hyödyksi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Salainen taikajuoma","tmcname":"osa10-06_salainen_taikajuoma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Taikajuoma"}]},{"type":"text","value":", johon käyttäjä voi tallentaa reseptin. Luokasta löytyy konstruktorin lisäksi metodit"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_aines(ainesosa: str, maara: float)"}]},{"type":"text","value":" ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_resepti()"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Taikajuoma"}]},{"type":"text","value":"-luokan perivä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SalainenTaikajuoma"}]},{"type":"text","value":", jolla resepti voidaan suojata salasanalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi luokka saa konstruktorissa taikajuoman nimen lisäksi salasanan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokalla on metodit"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_aines(ainesosa: str, maara: float, salasana: str)"}]},{"type":"text","value":" ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_resepti(salasana: str)"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos metodeja kutsutaan väärällä salasanalla, ne antavat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"-poikkeuksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uudet metodit kutsuvat perityn luokan metodeja, jos salasana on oikein! Älä siis leikkaa ja liimaa toteutuksia luokasta Taikajuoma."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kutistus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" SalainenTaikajuoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kutistus maksimus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_aines"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kärpässieni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_aines"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Taikahiekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_aines"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sammakonkutu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hokkuspokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkutistus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pokkushokkus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# VÄÄRÄ SALASANA!"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Kutistus maksimus:\nKärpässieni 1.5 grammaa\nTaikahiekka 3.0 grammaa\nSammakonkutu 4.0 grammaa\nTraceback (most recent call last):\nFile \"salaiset_taikajuomat.py\", line 98, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nraise ValueError(\"Väärä salasana!\")\nValueError: Väärä salasana!"}]}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä eroa on näkyvyysmääreillä yksityinen ja suojattu
    • \n
    • Tiedät, miten piirteiden näkyvyys määritetään Pythonissa
    • \n

    Aikaisemmin mainittiin, että yliluokassa yksityiseksi määritettyihin piirteisiin ei pääse käsiksi aliluokassa. Tarkastellaan esimerkkinä luokkaa Muistikirja, jossa muistiinpanojen säilyttämiseen käytettävä lista-attribuutti on piilotettu asiakkailta:

    \nclass Muistikirja:\n    \"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\"\n\n    def __init__(self):\n        # yksityinen attribuutti\n        self.__muistiinpanot = []\n\n    def lisaa_muistiinpano(self, muistiinpano):\n        self.__muistiinpanot.append(muistiinpano)\n\n    def palauta_muistiinpano(self, indeksi):\n        return self.__muistiinpanot[indeksi]\n\n    def kaikki_muistiinpanot(self):\n        return \",\".join(self.__muistiinpanot)\n

    Luokan sisäisen eheyden kannalta tietorakenteena toimivan listan piilottaminen asiakkaalta on sinänsä järkevää, koska luokka tarjoaa itse sopivat operaatiot muistiinpanojen lisäämiseksi ja selaamiseksi. Ongelmalliseksi tilanne muodostuu, jos yritetään kirjoittaa Muistikirja-luokan perivä luokka ProMuistikirja, johon halutaan lisätä muistiinpanojen etsiminen ja järjestäminen. Piilotettu attribuutti ei ole käytettävissä myöskään aliluokissa; metodi etsi_muistiinpanot antaa kutsuttaessa virheen:

    class MuistikirjaPro(Muistikirja):\n    \"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\"\n    def __init__(self):\n        # Tämä on ok, koska luokan Muistikirja konstruktori\n        # on julkinen\n        super().__init__()\n\n    # Tämä antaa virheen\n    def etsi_muistiinpanot(self, hakusana):\n        loydetty = []\n        # Attribuutti __muistiinpanot on yksityinen, eikä näy\n        # aliluokalle\n        for muistiinpano in self.__muistiinpanot:\n            if hakusana in muistiinpano:\n                loydetty.append(muistiinpano)\n\n        return loydetty\n

    AttributeError: 'MuistikirjaPro' object has no attribute '_MuistikirjaPro__muistiinpanot'

    Suojatut piirteet

    Toisin kuin joistain muista ohjelmointikielistä, Pythonista ei suoraan löydy ominaisuutta joka piilottaa piirteet asiakkailta mutta samaan aikaan avaa ne mahdollisille aliluokille. Ratkaisuksi Python-yhteisö onkin päätynyt konventioon eli yleisesti ymmärrettyyn merkintätapaan suojatuille (eli protected) piirteille.

    Koska piirre voidaan piilottaa kirjoittamalla sen tunnisteen (eli nimen) eteen kaksi alaviivaa

    \ndef __init__(self):\n    self.__muistiinpanot = []\n

    on yleisesti sovittu että yhdellä alaviivalla alkavat piirteet ovat tarkoitettu ainoastaan luokan ja sen aliluokkien käyttöön, eikä niitä tulisi käyttää suoraan sen ulkopuolelta.

    \ndef __init__(self):\n    self._muistiinpanot = []\n

    Alla on esitetty koko muistikirjaesimerkki uudestaan niin, että muistiinpanot on merkitty suojatuiksi yliluokassa yksityisen sijasta:

    \nclass Muistikirja:\n    \"\"\" Muistikirjaan voidaan tallentaa muistiinpanoja merkkijonoina \"\"\"\n\n    def __init__(self):\n        # suojattu attribuutti\n        self._muistiinpanot = []\n\n    def lisaa_muistiinpano(self, muistiinpano):\n        self._muistiinpanot.append(muistiinpano)\n\n    def palauta_muistiinpano(self, indeksi):\n        return self._muistiinpanot[indeksi]\n\n    def kaikki_muistiinpanot(self):\n        return \",\".join(self._muistiinpanot)\n\nclass MuistikirjaPro(Muistikirja):\n    \"\"\" Parempi muistikirja haku- ja järjestystoiminnoilla \"\"\"\n    def __init__(self):\n        # Tämä on ok, koska luokan Muistikirja konstruktori\n        # on julkinen\n        super().__init__()\n\n    # Nyt metodi toimii, koska suojattu attribuutti näkyy\n    # aliluokalle\n    def etsi_muistiinpanot(self, hakusana):\n        loydetty = []\n        for muistiinpano in self._muistiinpanot:\n            if hakusana in muistiinpano:\n                loydetty.append(muistiinpano)\n\n        return loydetty\n

    Seuraavassa taulukossa on vielä esitetty piirteiden näkyvyys kaikkien eri suojausmääreiden tapauksessa:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    NäkyvyysmääreEsimerkkiNäkyy asiakkaalleNäkyy aliluokalle
    Julkinenself.nimikylläkyllä
    Suojattuself._nimieikyllä
    Yksityinenself.__nimieiei

    Näkyvyysmääreet toimivat vastaavasti kaikkien piirteiden kanssa. Luokassa Henkilo oleva metodi isot_alkukirjaimet on suojattu, joten sitä voi käyttää myös aliluokassa Jalkapalloilija:

    \nclass Henkilo:\n    def __init__(self, nimi: str):\n        self._nimi = self._isot_alkukirjaimet(nimi)\n\n    def _isot_alkukirjaimet(self, nimi):\n        nimi_isoilla = []\n        for n in nimi.split(\" \"):\n            nimi_isoilla.append(n.capitalize())\n\n        return \" \".join(nimi_isoilla)\n\n    def __repr__(self):\n        return self.__nimi\n\nclass Jalkapalloilija(Henkilo):\n\n    def __init__(self, nimi: str, lempinimi: str, pelipaikka: str):\n        super().__init__(nimi)\n        # metodia voi kutsua, koska se on suojattu yliluokassa\n        self.__lempinimi = self._isot_alkukirjaimet(lempinimi)\n        self.__pelipaikka = pelipaikka\n\n    def __repr__(self):\n        r =  f\"Jalkapalloilija - nimi:{self._nimi}, lempinimi: {self.__lempinimi}\"\n        r += f\", pelipaikka: {self.__pelipaikka}\"\n        return r\n\n# Testataan\nif __name__ == \"__main__\":\n    jp = Jalkapalloilija(\"petri pythonen\", \"pyttis\", \"hyökkääjä\")\n    print(jp)\n

    Jalkapalloilija - nimi:Petri Pythonen, lempinimi: Pyttis, pelipaikka: hyökkääjä

    Tehtäväpohjassa on valmiina luokka SuperSankari.

    Kirjoita luokka SuperRyhma, joka mallintaa supersankareista koostuvaa ryhmää. Luokalla pitää olla seuraava piirteet:

      \n
    • Suojatut attribuutit nimi (merkkijono), kotipaikka (merkkijono) ja jasenet (lista)
    • \n
    • Konstruktori, joka saa parametrikseen tässä järjestyksessä nimen ja kotipaikan
    • \n
    • Havainnointimetodit nimelle ja kotipaikalle
    • \n
    • Metodi lisaa_jasen(sankari: SuperSankari), joka lisää uuden jäsenen ryhmään
    • \n
    • Metodi tulosta_ryhma, joka tulostaa ryhmän ja sen jäsenten tiedot alla olevan esimerkin mukaisesti
    • \n

    Esimerkki luokan käytöstä:

    supermiekkonen = SuperSankari(\"Supermiekkonen\", \"Supernopeus, supervoimakkuus\")\nnakymaton = SuperSankari(\"Näkymätön Makkonen\", \"Näkymättömyys\")\nryhma_z = SuperRyhma(\"Ryhmä Z\", \"Kälviä\")\n\nryhma_z.lisaa_jasen(supermiekkonen)\nryhma_z.lisaa_jasen(nakymaton)\nryhma_z.tulosta_ryhma()

    Ryhmä Z, Kälviä\nJäsenet:\nSupermiekkonen, superkyvyt: Supernopeus, supervoimakkuus\nNäkymätön Makkonen, superkyvyt: Näkymättömyys

    Tämän luvun kertaaminen voi olla hyödyksi.

    Tehtäväpohjassa on luokka Taikajuoma, johon käyttäjä voi tallentaa reseptin. Luokasta löytyy konstruktorin lisäksi metodit

      \n
    • lisaa_aines(ainesosa: str, maara: float) ja
    • \n
    • tulosta_resepti()
    • \n

    Kirjoita Taikajuoma-luokan perivä luokka SalainenTaikajuoma, jolla resepti voidaan suojata salasanalla.

    Uusi luokka saa konstruktorissa taikajuoman nimen lisäksi salasanan.

    Lisäksi luokalla on metodit

      \n
    • lisaa_aines(ainesosa: str, maara: float, salasana: str) ja
    • \n
    • tulosta_resepti(salasana: str)
    • \n

    Jos metodeja kutsutaan väärällä salasanalla, ne antavat ValueError-poikkeuksen.

    Uudet metodit kutsuvat perityn luokan metodeja, jos salasana on oikein! Älä siis leikkaa ja liimaa toteutuksia luokasta Taikajuoma.

    Esimerkki luokan käytöstä:

    kutistus = SalainenTaikajuoma(\"Kutistus maksimus\", \"hokkuspokkus\")\nkutistus.lisaa_aines(\"Kärpässieni\", 1.5, \"hokkuspokkus\")\nkutistus.lisaa_aines(\"Taikahiekka\", 3.0, \"hokkuspokkus\")\nkutistus.lisaa_aines(\"Sammakonkutu\", 4.0, \"hokkuspokkus\")\nkutistus.tulosta_resepti(\"hokkuspokkus\")\n\nkutistus.tulosta_resepti(\"pokkushokkus\") # VÄÄRÄ SALASANA!
    Kutistus maksimus:\nKärpässieni 1.5 grammaa\nTaikahiekka 3.0 grammaa\nSammakonkutu 4.0 grammaa\nTraceback (most recent call last):\nFile \"salaiset_taikajuomat.py\", line 98, in \nraise ValueError(\"Väärä salasana!\")\nValueError: Väärä salasana!
    ","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/2-nakyvyysmaareet.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-10/3-olio-ohjelmoinnin-tekniikoita/page-data.json b/page-data/osa-10/3-olio-ohjelmoinnin-tekniikoita/page-data.json index a8c18c6a2..f8dc39085 100644 --- a/page-data/osa-10/3-olio-ohjelmoinnin-tekniikoita/page-data.json +++ b/page-data/osa-10/3-olio-ohjelmoinnin-tekniikoita/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-10/3-olio-ohjelmoinnin-tekniikoita", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet muuttujan self eri käyttötarkoituksia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat ylikuormittaa operaattoreita omissa luokissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät miten muodostaa iteroitavan luokan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka voi palauttaa metodista myös sen itsensä tyyppisen olion. Luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alennustuote"}]},{"type":"text","value":" palauttaa uuden tuotteen, jolla on sama nimi kuin nykyisellä tuotteella, mutta 25% halvempi hinta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alennustuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alennettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.75"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alennettu"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"omena1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nomena2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omena1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alennustuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"omena1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"omena2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omena (hinta 2.99)\nOmena (hinta 2.2425)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrataan vielä muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" merkitys: luokan sisällä se viittaa nykyiseen olioon. Tyypillinen tapa käyttää muuttujaa onkin viitata olion omiin piirteisiin, esimerkiksi attribuuttien arvoihin. Muuttujaa voidaan käyttää myös palauttamaan koko olio (vaikka tälle onkin selvästi harvemmin tarvetta). Esimerkkiluokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"halvempi"}]},{"type":"text","value":" osaa palauttaa halvemman tuotteen, kun sille annetaan parametriksi toinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":"-luokan olio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"halvempi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" tuote"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"omena "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nappelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nbanaani "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"appelsiini"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"halvempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"omena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"appelsiini"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"halvempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"banaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omena (2.99)\nAppelsiini (3.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkin vertailun toteutus vaikuttaa kuitenkin melko kömpelöltä - paljon parempi olisi, jos voisimme vertailla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":"-olioita suoraan Pythonin vertailuoperaattoreilla."}]},{"type":"element","tagName":"h2","properties":{"id":"operaattorien-ylikuormitus","style":"position:relative;"},"children":[{"type":"text","value":"Operaattorien ylikuormitus"},{"type":"element","tagName":"a","properties":{"href":"#operaattorien-ylikuormitus","ariaLabel":"operaattorien ylikuormitus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin lasku- ja vertailuoperaattorien käyttö omien olioiden kanssa on onneksi mahdollista. Tähän käytetään tekniikkaa, jonka nimi on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"operaattorien ylikuormitus"}]},{"type":"text","value":". Kun halutaan, että tietty operaattori toimii myös omasta luokasta muodostettujen olioiden kanssa, luokkaan kirjoitetaan vastaava metodi joka palauttaa oikean lopputuloksen. Periaate on vastaava kuin metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" kanssa: Python osaa käyttää tietyllä tapaa nimettyjä metodeja tietyissä operaatioissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ensin esimerkkiä, jossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":"-luokkaan on toteutettu metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"text","value":" (lyhenne sanoista "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"g"}]},{"type":"text","value":"reater "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"t"}]},{"type":"text","value":"han) joka toteuttaa suurempi kuin -operaattorin. Tarkemmin sanottuna metodi palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos nykyinen olio on suurempi kuin parametrina annettu olio."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"text","value":" palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos nykyisen tuotteen hinta on suurempi kuin parametrina annetun tuotteen, ja muuten arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt luokan olioita voidaan vertailla käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"-operaattoria samalla tavalla kuin vaikkapa kokonaislukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.90"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nomena "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" omena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Appelsiini on suurempi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olioiden suuruusluokan vertailua toteuttaessa täytyy päättää, millä perusteella suuruusjärjestys määritetään. Voisimme myös haluta, että tuotteet järjestetään hinnan sijasta nimen mukaiseen aakkosjärjestykseen. Tällöin omena olisikin appelsiinia \"suurempi\":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.90"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nomena "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" omena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omena on suurempi"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-operaattoreita","style":"position:relative;"},"children":[{"type":"text","value":"Lisää operaattoreita"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-operaattoreita","ariaLabel":"lisaa operaattoreita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tavalliset vertailuoperaattorit ja näitä vastaavat metodit on esitetty seuraavassa taulukossa:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Merkitys perinteisesti"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Metodin nimi"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Pienempi kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__lt__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Suurempi kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__gt__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Yhtä suuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__eq__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Eri suuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__ne__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Pienempi tai yhtäsuuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__le__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Suurempi tai yhtäsuuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__ge__(self, toinen)"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokissa voidaan toteuttaa tiettyjä muita operaattoreita, esimerkiksi:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Merkitys perinteisesti"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Metodin nimi"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Yhdistäminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__add__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Vähentäminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__sub__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Monistaminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__mul__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"/"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Jakaminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__truediv__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Kokonaisjakaminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__floordiv__(self, toinen)"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää operaattoreita ja metodien nimien vastineita löydät helposti Googlella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että vain hyvin harvoin on tarvetta toteuttaa kaikkia operaatioita omassa luokassa. Esimerkiksi jakaminen on operaatio, jolle on hankalaa keksiä luontevaa käyttöä useimmissa luokissa (mitä tulee, kun jaetaan opiskelija kolmella saati toisella opiskelijalla?). Tiettyjen operaattoreiden toteuttamisesta voi kuitenkin olla hyötyä, mikäli vastaavat operaatiot ovat loogisia luokalle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä luokkaa joka mallintaa yhtä muistiinpanoa. Kahden muistiinpanon yhdistäminen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattorilla tuottaa uuden, yhdistetyn muistiinpanon, kun on toteutettu metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__add__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pvm\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__add__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Uuden muistiinpanon ajaksi nykyinen aika"}]},{"type":"text","value":"\n uusi_muistiinpano "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n uusi_muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ja \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" uusi_muistiinpano"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"merkinta1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2016"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muista ostaa lahjoja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmerkinta2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2016"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muista hakea kuusi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nyt voidaan yhdistää plussalla - tämä kutsuu metodia __add__ luokassa Muistiipano"}]},{"type":"text","value":"\nmolemmat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkinta1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" merkinta2\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"molemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2020-09-09 14:13:02.163170: Muista ostaa lahjoja ja Muista hakea kuusi"}]}]},{"type":"element","tagName":"h2","properties":{"id":"olion-esitys-merkkijonona","style":"position:relative;"},"children":[{"type":"text","value":"Olion esitys merkkijonona"},{"type":"element","tagName":"a","properties":{"href":"#olion-esitys-merkkijonona","ariaLabel":"olion esitys merkkijonona permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme toteuttaneet luokkiin usein metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka antaa merkkijonoesityksen olion sisällöstä. Toinen melko samanlainen metodi on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":", joka antaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"teknisen"}]},{"type":"text","value":" esityksen olion sisällöstä. Usein metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" toteutetaan niin, että se antaa koodin, joka muodostaa olion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"repr"}]},{"type":"text","value":" antaa olion teknisen merkkijonoesityksen, ja lisäksi tätä esitystä käytetään, jos oliossa ei ole määritelty "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":"-metodia. Seuraava luokka esittelee asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n \n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Henkilo("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"repr"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python3"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python3"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python3"]},"children":[{"type":"text","value":"henkilo1 = Henkilo(\"Anna\", 25)\nhenkilo2 = Henkilo(\"Pekka\", 99)\nprint(henkilo1)\nprint(henkilo2)"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilo('Anna', 25)\nHenkilo('Pekka', 99)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" haetaan nimen tekninen esitys metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"repr"}]},{"type":"text","value":", jolloin tässä tapauksessa nimen ympärille tulee "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"'"}]},{"type":"text","value":"-merkit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa luokassa on toteutettu sekä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n \n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Henkilo("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"repr"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" vuotta)\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python3"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python3"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python3"]},"children":[{"type":"text","value":"henkilo = Henkilo(\"Anna\", 25)\nprint(henkilo)\nprint(repr(henkilo))"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna (25 vuotta)\nHenkilo('Anna', 25)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun tietorakenteessa (kuten listassa) on olioita, Python käyttää vähän epäloogisesti metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" olioiden merkkijonoesityksen muodostamiseen, kun lista tulostetaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python3"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python3"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python3"]},"children":[{"type":"text","value":"henkilot = []\nhenkilot.append(Henkilo(\"Anna\", 25))\nhenkilot.append(Henkilo(\"Pekka\", 99))\nhenkilot.append(Henkilo(\"Maija\", 55))\nprint(henkilot)"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[Henkilo('Anna', 25), Henkilo('Pekka', 99), Henkilo('Maija', 55)]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Raha","tmcname":"osa10-07_raha"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Raha"}]},{"type":"text","value":" runko. Tässä tehtävässä laajennetaan runkoa muutamilla operaattoreilla, ja korjataan pari rungossa olevaa pientä ongelmaa"}]},{"type":"element","tagName":"h2","properties":{"id":"korjaa-merkkijonoesitys","style":"position:relative;"},"children":[{"type":"text","value":"Korjaa merkkijonoesitys"},{"type":"element","tagName":"a","properties":{"href":"#korjaa-merkkijonoesitys","ariaLabel":"korjaa merkkijonoesitys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rahan merkkijonoesityksen muodostava metodi ei ole nyt ihan kunnossa. Seuraavassa esimerkissä muodostetaan kaksi raha-olioa, joista jälkimmäinen ei tulostu oikein:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaksi euroa ja viisi senttiä"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10\n2.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa luokan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__(self)"}]},{"type":"text","value":" siten, että tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10 eur\n2.05 eur"}]}]},{"type":"element","tagName":"h2","properties":{"id":"yhtasuuruus","style":"position:relative;"},"children":[{"type":"text","value":"Yhtäsuuruus"},{"type":"element","tagName":"a","properties":{"href":"#yhtasuuruus","ariaLabel":"yhtasuuruus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrittele raha-oliolle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__eq__(self, toinen)"}]},{"type":"text","value":", jonka avulla rahan yhtäsuuruusvertailu saadaan toimimaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" e3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10 eur\n2.05 eur\n4.10 eur\nFalse\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"muut-vertailut","style":"position:relative;"},"children":[{"type":"text","value":"Muut vertailut"},{"type":"element","tagName":"a","properties":{"href":"#muut-vertailut","ariaLabel":"muut vertailut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta rahalle myös seuraavat vertailuoperaattorit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"plus-ja-miinus","style":"position:relative;"},"children":[{"type":"text","value":"Plus ja miinus"},{"type":"element","tagName":"a","properties":{"href":"#plus-ja-miinus","ariaLabel":"plus ja miinus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta rahalle yhteen- ja vähennyslaskuoperaatiot. Molempien operaatioiden tulee palauttaa uusi rahaolio, ja ne eivät saa muuttaa olioa itseään tai parametrina olevaa olioa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että rahan arvo ei voi olla negatiivinen. Negatiiviseen tulokseen päätyvän vähennyslaskuyrityksen tulee aiheuttaa ValueError-tyyppinen poikkeus."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ne3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" e2\ne4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" e2\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ne5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"e1"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"7.00 eur\n1.10 eur\nTraceback (most recent call last):\nFile \"tiedosto.py\", line 416, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\ne5 = e2-e1\nFile \"tiedosto.py\", line 404, in "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sub"}]},{"type":"text","value":"\nraise ValueError(f\"negatiivinen tulos ei sallittu\")\nValueError: negatiivinen tulos ei sallittu"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"arvoa-ei-voi-muuttaa","style":"position:relative;"},"children":[{"type":"text","value":"Arvoa ei voi muuttaa"},{"type":"element","tagName":"a","properties":{"href":"#arvoa-ei-voi-muuttaa","ariaLabel":"arvoa ei voi muuttaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa on tällä hetkellä vielä pieni ongelma, koska käyttäjä voi \"huijaamalla\" muuttaa rahan arvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eurot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.05 eur\n1000.05 eur"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta luokan toteutus "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/3-kapselointi#kapselointi"},"children":[{"type":"text","value":"kapseloiduksi"}]},{"type":"text","value":" siten, että yllä oleva huijaus ei onnistu. Luokalla ei siis saa olla kapseloimattomia attribuutteja eikä asetus- tai havainnointimetodeita euroille tai senteille!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Päiväys","tmcname":"osa10-08_paivays"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Paivays"}]},{"type":"text","value":", jonka avulla on mahdollista käsitellä päivämääriä. Oletetaan tässä tehtävässä yksinkertaisuuden vuoksi, että "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jokaisessa kuussa on 30 päivää"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Edellisestä johtuen tehtävässä ei poikkeuksellisesti kannata käyttää Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"datetime"}]},{"type":"text","value":"-moduulia, vaan toteutetaan luokka itse."}]},{"type":"element","tagName":"h2","properties":{"id":"vertailut","style":"position:relative;"},"children":[{"type":"text","value":"Vertailut"},{"type":"element","tagName":"a","properties":{"href":"#vertailut","ariaLabel":"vertailut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokan runko ja sille vertailuoperaattorit <, >, == ja !=. Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" p3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10.2020\n28.12.1985\nFalse\nTrue\nFalse\nFalse\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kasvatus","style":"position:relative;"},"children":[{"type":"text","value":"Kasvatus"},{"type":"element","tagName":"a","properties":{"href":"#kasvatus","ariaLabel":"kasvatus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta päiväykselle operaattori +. Operaattori luo uuden päivämäärän joka on lisättävän lukeman päiviä verran suurempi kuin alkuperäinen päivämäärä. Alkuperäinen päivä ei saa muuttua."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\np3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\np4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" p2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"400"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10.2020\n28.12.1985\n7.10.2020\n8.2.1987"}]}]},{"type":"element","tagName":"h2","properties":{"id":"erotus","style":"position:relative;"},"children":[{"type":"text","value":"Erotus"},{"type":"element","tagName":"a","properties":{"href":"#erotus","ariaLabel":"erotus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta päiväykselle operaattori -, joka palauttaa päivämäärien eron päivissä laskettuna. Huomaa, että koska oletamme jokaisessa kuukaudessa olevan 30 päivää, tässä tehtävässä vuosien päivien lukumäärä on 12*30 eli 360."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattori toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"p3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"28\n28\n12516"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"iteraattorit","style":"position:relative;"},"children":[{"type":"text","value":"Iteraattorit"},{"type":"element","tagName":"a","properties":{"href":"#iteraattorit","ariaLabel":"iteraattorit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme aikaisemmin käyttäneet for-lausetta erilaisten tietorakenteiden ja tiedostojen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iterointiin"}]},{"type":"text","value":" eli läpikäyntiin. Tyypillinen tapaus olisi vaikkapa seuraavanlainen funktio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_positiiviset"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio käy läpi listan alkio kerrallaan ja laskee positiivisten alkioiden määärän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Iterointi on mahdollista toteuttaa myös omiin luokkiin. Hyödyllistä tämä on silloin, kun luokasta muodostetut oliot tallentavat kokoelman alkioita. Esimerkiksi aikaisemmin kirjoitettiin luokka, joka mallintaa kirjahyllyä – olisi näppärä, jos kaikki kirjahyllyn kirjat voisi käydä läpi yhdessä silmukassa. Samalla tavalla opiskelijarekisterin kaikkien opiskelijoiden läpikäynti for-lauseella olisi kätevää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Iterointi mahdollistuu toteuttamalla luokkaan iteraattorimetodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__next__"}]},{"type":"text","value":". Käsitellään metodien toimintaa tarkemmin, kun on ensin tarkasteltu esimerkkinä kirjahyllyluokkaa, joka mahdollistaa kirjojen läpikäynnin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sivuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sivuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sivuja\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Iteraattorin alustusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa viittauksen olioon itseensä, koska"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# iteraattori on toteutettu samassa luokassa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa seuraavan alkion"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos ei ole enempää alkioita, heitetään tapahtuma"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# StopIteration"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__next__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poimitaan listasta nykyinen"}]},{"type":"text","value":"\n kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan laskuria yhdellä"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja palautetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kirja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Ei enempää kirjoja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" StopIteration\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"text","value":" siis alustetaan iteroinnissa tarvittava muuttuja tai muuttujat - tässä tapauksessa riittää, että meillä on laskuri joka osoittaa listan nykyiseen alkioon. Lisäksi tarvitaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__next__"}]},{"type":"text","value":", joka palauttaa seuraavan alkion. Esimerkkitapauksessa palautetaan listasta alkio muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kohdalta ja kasvatetaan muuttujan arvoa yhdellä. Jos listassa ei ole enempää alkiota, \"nostetaan\" poikkeus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"StopIteration"}]},{"type":"text","value":", joka kertoo iteroijalle (esim. for-silmukalle), että kaikki alkiot on käyty läpi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt voidaan käydä kirjahyllyn kirjat läpi esimerkiksi for-silmukassa näppärästi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Elämäni Pythoniassa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"123"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Hemingjava\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"204"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C-itsemän veljestä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n hylly "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjahylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikkien kirjojen nimet"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Elämäni Pythoniassa\nVanhus ja Java\nC-itsemän veljestä"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Iteroitava kauppalista","tmcname":"osa10-09_iteroitava_kauppalista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on "},{"type":"element","tagName":"a","properties":{"href":"/osa-8/2-luokat-ja-oliot#programming-exercise-kauppalista"},"children":[{"type":"text","value":"osan 8 tehtävästä "}]},{"type":"text","value":" tuttu luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":". Tee luokasta iteroitava, siten että sitä voi käyttää seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omenat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ananas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"banaanit: 10 kpl\nomenat: 5 kpl\nananas: 1 kpl"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Iteraattorin metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__next__"}]},{"type":"text","value":" tulee palauttaa tupleja, joiden ensimmäinen alkio on tuotteen nimi ja toisen listalla olevan tuotteen lukumäärä."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet muuttujan self eri käyttötarkoituksia
    • \n
    • Osaat ylikuormittaa operaattoreita omissa luokissa
    • \n
    • Tiedät miten muodostaa iteroitavan luokan
    • \n

    Luokka voi palauttaa metodista myös sen itsensä tyyppisen olion. Luokan Tuote metodi alennustuote palauttaa uuden tuotteen, jolla on sama nimi kuin nykyisellä tuotteella, mutta 25% halvempi hinta:

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    def alennustuote(self):\n        alennettu = Tuote(self.__nimi, self.__hinta * 0.75)\n        return alennettu
    omena1 = Tuote(\"Omena\", 2.99)\nomena2 = omena1.alennustuote()\nprint(omena1)\nprint(omena2)

    Omena (hinta 2.99)\nOmena (hinta 2.2425)

    Kerrataan vielä muuttujan self merkitys: luokan sisällä se viittaa nykyiseen olioon. Tyypillinen tapa käyttää muuttujaa onkin viitata olion omiin piirteisiin, esimerkiksi attribuuttien arvoihin. Muuttujaa voidaan käyttää myös palauttamaan koko olio (vaikka tälle onkin selvästi harvemmin tarvetta). Esimerkkiluokan Tuote metodi halvempi osaa palauttaa halvemman tuotteen, kun sille annetaan parametriksi toinen Tuote-luokan olio:

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    @property\n    def hinta(self):\n        return self.__hinta\n\n    def halvempi(self, tuote):\n        if self.__hinta < tuote.hinta:\n            return self\n        else:\n            return tuote
    omena = Tuote(\"Omena\", 2.99)\nappelsiini = Tuote(\"Appelsiini\", 3.95)\nbanaani = Tuote(\"Banaani\", 5.25)\n\nprint(appelsiini.halvempi(omena))\nprint(appelsiini.halvempi(banaani))

    Omena (2.99)\nAppelsiini (3.95)

    Esimerkin vertailun toteutus vaikuttaa kuitenkin melko kömpelöltä - paljon parempi olisi, jos voisimme vertailla Tuote-olioita suoraan Pythonin vertailuoperaattoreilla.

    Operaattorien ylikuormitus

    Pythonin lasku- ja vertailuoperaattorien käyttö omien olioiden kanssa on onneksi mahdollista. Tähän käytetään tekniikkaa, jonka nimi on operaattorien ylikuormitus. Kun halutaan, että tietty operaattori toimii myös omasta luokasta muodostettujen olioiden kanssa, luokkaan kirjoitetaan vastaava metodi joka palauttaa oikean lopputuloksen. Periaate on vastaava kuin metodin __str__ kanssa: Python osaa käyttää tietyllä tapaa nimettyjä metodeja tietyissä operaatioissa.

    Tarkastellaan ensin esimerkkiä, jossa Tuote-luokkaan on toteutettu metodi __gt__ (lyhenne sanoista greater than) joka toteuttaa suurempi kuin -operaattorin. Tarkemmin sanottuna metodi palauttaa arvon True, jos nykyinen olio on suurempi kuin parametrina annettu olio.

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    @property\n    def hinta(self):\n        return self.__hinta\n\n    def __gt__(self, toinen_tuote):\n        return self.hinta > toinen_tuote.hinta

    Metodi __gt__ palauttaa arvon True, jos nykyisen tuotteen hinta on suurempi kuin parametrina annetun tuotteen, ja muuten arvon False.

    Nyt luokan olioita voidaan vertailla käyttäen >-operaattoria samalla tavalla kuin vaikkapa kokonaislukuja:

    appelsiini = Tuote(\"Appelsiini\", 4.90)\nomena = Tuote(\"Omena\", 3.95)\n\nif appelsiini > omena:\n    print(\"Appelsiini on suurempi\")\nelse:\n    print(\"Omena on suurempi\")

    Appelsiini on suurempi

    Olioiden suuruusluokan vertailua toteuttaessa täytyy päättää, millä perusteella suuruusjärjestys määritetään. Voisimme myös haluta, että tuotteet järjestetään hinnan sijasta nimen mukaiseen aakkosjärjestykseen. Tällöin omena olisikin appelsiinia \"suurempi\":

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    @property\n    def hinta(self):\n        return self.__hinta\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    def __gt__(self, toinen_tuote):\n        return self.nimi > toinen_tuote.nimi
    appelsiini = Tuote(\"Appelsiini\", 4.90)\nomena = Tuote(\"Omena\", 3.95)\n\nif appelsiini > omena:\n    print(\"Appelsiini on suurempi\")\nelse:\n    print(\"Omena on suurempi\")

    Omena on suurempi

    Lisää operaattoreita

    Tavalliset vertailuoperaattorit ja näitä vastaavat metodit on esitetty seuraavassa taulukossa:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OperaattoriMerkitys perinteisestiMetodin nimi
    <Pienempi kuin__lt__(self, toinen)
    >Suurempi kuin__gt__(self, toinen)
    ==Yhtä suuri kuin__eq__(self, toinen)
    !=Eri suuri kuin__ne__(self, toinen)
    <=Pienempi tai yhtäsuuri kuin__le__(self, toinen)
    >=Suurempi tai yhtäsuuri kuin__ge__(self, toinen)

    Lisäksi luokissa voidaan toteuttaa tiettyjä muita operaattoreita, esimerkiksi:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OperaattoriMerkitys perinteisestiMetodin nimi
    +Yhdistäminen__add__(self, toinen)
    -Vähentäminen__sub__(self, toinen)
    *Monistaminen__mul__(self, toinen)
    /Jakaminen__truediv__(self, toinen)
    //Kokonaisjakaminen__floordiv__(self, toinen)

    Lisää operaattoreita ja metodien nimien vastineita löydät helposti Googlella.

    Huomaa, että vain hyvin harvoin on tarvetta toteuttaa kaikkia operaatioita omassa luokassa. Esimerkiksi jakaminen on operaatio, jolle on hankalaa keksiä luontevaa käyttöä useimmissa luokissa (mitä tulee, kun jaetaan opiskelija kolmella saati toisella opiskelijalla?). Tiettyjen operaattoreiden toteuttamisesta voi kuitenkin olla hyötyä, mikäli vastaavat operaatiot ovat loogisia luokalle.

    Tarkastellaan esimerkkinä luokkaa joka mallintaa yhtä muistiinpanoa. Kahden muistiinpanon yhdistäminen +-operaattorilla tuottaa uuden, yhdistetyn muistiinpanon, kun on toteutettu metodi __add__:

    from datetime import datetime\n\nclass Muistiinpano:\n    def __init__(self, pvm: datetime, merkinta: str):\n        self.pvm = pvm\n        self.merkinta = merkinta\n\n    def __str__(self):\n        return f\"{self.pvm}: {self.merkinta}\"\n\n    def __add__(self, toinen):\n        # Uuden muistiinpanon ajaksi nykyinen aika\n        uusi_muistiinpano = Muistiinpano(datetime.now(), \"\")\n        uusi_muistiinpano.merkinta = self.merkinta + \" ja \" + toinen.merkinta\n        return uusi_muistiinpano
    merkinta1 = Muistiinpano(datetime(2016, 12, 17), \"Muista ostaa lahjoja\")\nmerkinta2 = Muistiinpano(datetime(2016, 12, 23), \"Muista hakea kuusi\")\n\n# Nyt voidaan yhdistää plussalla - tämä kutsuu metodia __add__ luokassa Muistiipano\nmolemmat = merkinta1 + merkinta2\nprint(molemmat)

    2020-09-09 14:13:02.163170: Muista ostaa lahjoja ja Muista hakea kuusi

    Olion esitys merkkijonona

    Olemme toteuttaneet luokkiin usein metodin __str__, joka antaa merkkijonoesityksen olion sisällöstä. Toinen melko samanlainen metodi on __repr__, joka antaa teknisen esityksen olion sisällöstä. Usein metodi __repr__ toteutetaan niin, että se antaa koodin, joka muodostaa olion.

    Funktio repr antaa olion teknisen merkkijonoesityksen, ja lisäksi tätä esitystä käytetään, jos oliossa ei ole määritelty __str__-metodia. Seuraava luokka esittelee asiaa:

    class Henkilo:\n    def __init__(self, nimi: str, ika: int):\n        self.nimi = nimi\n        self.ika = ika\n        \n    def __repr__(self):\n        return f\"Henkilo({repr(self.nimi)}, {self.ika})\"
    henkilo1 = Henkilo("Anna", 25)\nhenkilo2 = Henkilo("Pekka", 99)\nprint(henkilo1)\nprint(henkilo2)

    Henkilo('Anna', 25)\nHenkilo('Pekka', 99)

    Huomaa, että metodissa __repr__ haetaan nimen tekninen esitys metodilla repr, jolloin tässä tapauksessa nimen ympärille tulee '-merkit.

    Seuraavassa luokassa on toteutettu sekä metodi __repr__ että __str__:

    class Henkilo:\n    def __init__(self, nimi: str, ika: int):\n        self.nimi = nimi\n        self.ika = ika\n        \n    def __repr__(self):\n        return f\"Henkilo({repr(self.nimi)}, {self.ika})\"\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.ika} vuotta)\"
    henkilo = Henkilo("Anna", 25)\nprint(henkilo)\nprint(repr(henkilo))

    Anna (25 vuotta)\nHenkilo('Anna', 25)

    Kun tietorakenteessa (kuten listassa) on olioita, Python käyttää vähän epäloogisesti metodia __repr__ olioiden merkkijonoesityksen muodostamiseen, kun lista tulostetaan:

    henkilot = []\nhenkilot.append(Henkilo("Anna", 25))\nhenkilot.append(Henkilo("Pekka", 99))\nhenkilot.append(Henkilo("Maija", 55))\nprint(henkilot)

    [Henkilo('Anna', 25), Henkilo('Pekka', 99), Henkilo('Maija', 55)]

    Tehtäväpohjasta löytyy luokan Raha runko. Tässä tehtävässä laajennetaan runkoa muutamilla operaattoreilla, ja korjataan pari rungossa olevaa pientä ongelmaa

    Korjaa merkkijonoesitys

    Rahan merkkijonoesityksen muodostava metodi ei ole nyt ihan kunnossa. Seuraavassa esimerkissä muodostetaan kaksi raha-olioa, joista jälkimmäinen ei tulostu oikein:

    e1 = Raha(4, 10)\ne2 = Raha(2, 5)  # kaksi euroa ja viisi senttiä\n\nprint(e1)\nprint(e2)

    4.10\n2.5

    Korjaa luokan metodi __str__(self) siten, että tulostus on seuraava:

    4.10 eur\n2.05 eur

    Yhtäsuuruus

    Määrittele raha-oliolle metodi __eq__(self, toinen), jonka avulla rahan yhtäsuuruusvertailu saadaan toimimaan:

    e1 = Raha(4, 10)\ne2 = Raha(2, 5)\ne3 = Raha(4, 10)\n\nprint(e1)\nprint(e2)\nprint(e3)\nprint(e1 == e2)\nprint(e1 == e3)

    4.10 eur\n2.05 eur\n4.10 eur\nFalse\nTrue

    Muut vertailut

    Toteuta rahalle myös seuraavat vertailuoperaattorit <, >, !=.

    e1 = Raha(4, 10)\ne2 = Raha(2, 5)\n\nprint(e1 != e2)\nprint(e1 < e2)\nprint(e1 > e2)

    True\nFalse\nTrue

    Plus ja miinus

    Toteuta rahalle yhteen- ja vähennyslaskuoperaatiot. Molempien operaatioiden tulee palauttaa uusi rahaolio, ja ne eivät saa muuttaa olioa itseään tai parametrina olevaa olioa!

    Huomaa, että rahan arvo ei voi olla negatiivinen. Negatiiviseen tulokseen päätyvän vähennyslaskuyrityksen tulee aiheuttaa ValueError-tyyppinen poikkeus.

    e1 = Raha(4, 5)\ne2 = Raha(2, 95)\n\ne3 = e1 + e2\ne4 = e1 - e2\n\nprint(e3)\nprint(e4)\n\ne5 = e2-e1
    7.00 eur\n1.10 eur\nTraceback (most recent call last):\nFile \"tiedosto.py\", line 416, in \ne5 = e2-e1\nFile \"tiedosto.py\", line 404, in sub\nraise ValueError(f\"negatiivinen tulos ei sallittu\")\nValueError: negatiivinen tulos ei sallittu

    Arvoa ei voi muuttaa

    Luokassa on tällä hetkellä vielä pieni ongelma, koska käyttäjä voi \"huijaamalla\" muuttaa rahan arvoa:

    print(e1)\ne1.eurot = 1000\nprint(e1)

    4.05 eur\n1000.05 eur

    Muuta luokan toteutus kapseloiduksi siten, että yllä oleva huijaus ei onnistu. Luokalla ei siis saa olla kapseloimattomia attribuutteja eikä asetus- tai havainnointimetodeita euroille tai senteille!

    Tässä tehtävässä toteutetaan luokka Paivays, jonka avulla on mahdollista käsitellä päivämääriä. Oletetaan tässä tehtävässä yksinkertaisuuden vuoksi, että jokaisessa kuussa on 30 päivää.

    Huom! Edellisestä johtuen tehtävässä ei poikkeuksellisesti kannata käyttää Pythonin datetime-moduulia, vaan toteutetaan luokka itse.

    Vertailut

    Toteuta luokan runko ja sille vertailuoperaattorit <, >, == ja !=. Käyttöesimerkki:

    p1 = Paivays(4, 10, 2020)\np2 = Paivays(28, 12, 1985)\np3 = Paivays(28, 12, 1985)\n\nprint(p1)\nprint(p2)\nprint(p1 == p2)\nprint(p1 != p2)\nprint(p1 == p3)\nprint(p1 < p2)\nprint(p1 > p2)

    4.10.2020\n28.12.1985\nFalse\nTrue\nFalse\nFalse\nTrue

    Kasvatus

    Toteuta päiväykselle operaattori +. Operaattori luo uuden päivämäärän joka on lisättävän lukeman päiviä verran suurempi kuin alkuperäinen päivämäärä. Alkuperäinen päivä ei saa muuttua.

    p1 = Paivays(4, 10, 2020)\np2 = Paivays(28, 12, 1985)\n\np3 = p1 + 3\np4 = p2 + 400\n\nprint(p1)\nprint(p2)\nprint(p3)\nprint(p4)

    4.10.2020\n28.12.1985\n7.10.2020\n8.2.1987

    Erotus

    Toteuta päiväykselle operaattori -, joka palauttaa päivämäärien eron päivissä laskettuna. Huomaa, että koska oletamme jokaisessa kuukaudessa olevan 30 päivää, tässä tehtävässä vuosien päivien lukumäärä on 12*30 eli 360.

    Operaattori toimii seuraavasti

    p1 = Paivays(4, 10, 2020)\np2 = Paivays(2, 11, 2020)\np3 = Paivays(28, 12, 1985)\n\nprint(p2-p1)\nprint(p1-p2)\nprint(p1-p3)

    28\n28\n12516

    Iteraattorit

    Olemme aikaisemmin käyttäneet for-lausetta erilaisten tietorakenteiden ja tiedostojen iterointiin eli läpikäyntiin. Tyypillinen tapaus olisi vaikkapa seuraavanlainen funktio:

    \ndef laske_positiiviset(lista: list):\n    n = 0\n    for alkio in lista:\n        if alkio > 0:\n            n += 1\n    return n\n

    Funktio käy läpi listan alkio kerrallaan ja laskee positiivisten alkioiden määärän.

    Iterointi on mahdollista toteuttaa myös omiin luokkiin. Hyödyllistä tämä on silloin, kun luokasta muodostetut oliot tallentavat kokoelman alkioita. Esimerkiksi aikaisemmin kirjoitettiin luokka, joka mallintaa kirjahyllyä – olisi näppärä, jos kaikki kirjahyllyn kirjat voisi käydä läpi yhdessä silmukassa. Samalla tavalla opiskelijarekisterin kaikkien opiskelijoiden läpikäynti for-lauseella olisi kätevää.

    Iterointi mahdollistuu toteuttamalla luokkaan iteraattorimetodit __iter__ ja __next__. Käsitellään metodien toimintaa tarkemmin, kun on ensin tarkasteltu esimerkkinä kirjahyllyluokkaa, joka mahdollistaa kirjojen läpikäynnin:

    \nclass Kirja:\n    def __init__(self, nimi: str, kirjailija: str, sivuja: int):\n        self.nimi = nimi\n        self.kirjailija = kirjailija\n        self.sivuja = sivuja\n\nclass Kirjahylly:\n    def __init__(self):\n        self._kirjat = []\n\n    def lisaa_kirja(self, kirja: Kirja):\n        self._kirjat.append(kirja)\n\n    # Iteraattorin alustusmetodi\n    # Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)\n    def __iter__(self):\n        self.n = 0\n        # Metodi palauttaa viittauksen olioon itseensä, koska\n        # iteraattori on toteutettu samassa luokassa\n        return self\n\n    # Metodi palauttaa seuraavan alkion\n    # Jos ei ole enempää alkioita, heitetään tapahtuma\n    # StopIteration\n    def __next__(self):\n        if self.n < len(self._kirjat):\n            # Poimitaan listasta nykyinen\n            kirja = self._kirjat[self.n]\n            # Kasvatetaan laskuria yhdellä\n            self.n += 1\n            # ...ja palautetaan\n            return kirja\n        else:\n            # Ei enempää kirjoja\n            raise StopIteration\n

    Metodissa __iter__ siis alustetaan iteroinnissa tarvittava muuttuja tai muuttujat - tässä tapauksessa riittää, että meillä on laskuri joka osoittaa listan nykyiseen alkioon. Lisäksi tarvitaan metodi __next__, joka palauttaa seuraavan alkion. Esimerkkitapauksessa palautetaan listasta alkio muuttujan n kohdalta ja kasvatetaan muuttujan arvoa yhdellä. Jos listassa ei ole enempää alkiota, \"nostetaan\" poikkeus StopIteration, joka kertoo iteroijalle (esim. for-silmukalle), että kaikki alkiot on käyty läpi.

    Nyt voidaan käydä kirjahyllyn kirjat läpi esimerkiksi for-silmukassa näppärästi:

    \nif __name__ == \"__main__\":\n    k1 = Kirja(\"Elämäni Pythoniassa\", \"Pekka Python\", 123)\n    k2 = Kirja(\"Vanhus ja Java\", \"Ernest Hemingjava\", 204)\n    k3 = Kirja(\"C-itsemän veljestä\", \"Keijo Koodari\", 997)\n\n    hylly = Kirjahylly()\n    hylly.lisaa_kirja(k1)\n    hylly.lisaa_kirja(k2)\n    hylly.lisaa_kirja(k3)\n\n    # Tulostetaan kaikkien kirjojen nimet\n    for kirja in hylly:\n        print(kirja.nimi)\n

    Elämäni Pythoniassa\nVanhus ja Java\nC-itsemän veljestä

    Tehtäväpohjassa on osan 8 tehtävästä tuttu luokka Kauppalista. Tee luokasta iteroitava, siten että sitä voi käyttää seuraavasti:

    lista = Kauppalista()\nlista.lisaa(\"banaanit\", 10)\nlista.lisaa(\"omenat\", 5)\nlista.lisaa(\"ananas\", 1)\n\nfor tuote in lista:\n    print(f\"{tuote[0]}: {tuote[1]} kpl\")

    banaanit: 10 kpl\nomenat: 5 kpl\nananas: 1 kpl

    Iteraattorin metodin __next__ tulee palauttaa tupleja, joiden ensimmäinen alkio on tuotteen nimi ja toisen listalla olevan tuotteen lukumäärä.

    ","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/3-olio-ohjelmoinnin-tekniikoita.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet muuttujan self eri käyttötarkoituksia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat ylikuormittaa operaattoreita omissa luokissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät miten muodostaa iteroitavan luokan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka voi palauttaa metodista myös sen itsensä tyyppisen olion. Luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alennustuote"}]},{"type":"text","value":" palauttaa uuden tuotteen, jolla on sama nimi kuin nykyisellä tuotteella, mutta 25% halvempi hinta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alennustuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alennettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.75"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alennettu"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"omena1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nomena2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omena1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alennustuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"omena1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"omena2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omena (hinta 2.99)\nOmena (hinta 2.2425)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrataan vielä muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" merkitys: luokan sisällä se viittaa nykyiseen olioon. Tyypillinen tapa käyttää muuttujaa onkin viitata olion omiin piirteisiin, esimerkiksi attribuuttien arvoihin. Muuttujaa voidaan käyttää myös palauttamaan koko olio (vaikka tälle onkin selvästi harvemmin tarvetta). Esimerkkiluokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"halvempi"}]},{"type":"text","value":" osaa palauttaa halvemman tuotteen, kun sille annetaan parametriksi toinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":"-luokan olio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"halvempi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" tuote"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"omena "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nappelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nbanaani "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"appelsiini"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"halvempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"omena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"appelsiini"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"halvempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"banaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omena (2.99)\nAppelsiini (3.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkin vertailun toteutus vaikuttaa kuitenkin melko kömpelöltä - paljon parempi olisi, jos voisimme vertailla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":"-olioita suoraan Pythonin vertailuoperaattoreilla."}]},{"type":"element","tagName":"h2","properties":{"id":"operaattorien-ylikuormitus","style":"position:relative;"},"children":[{"type":"text","value":"Operaattorien ylikuormitus"},{"type":"element","tagName":"a","properties":{"href":"#operaattorien-ylikuormitus","ariaLabel":"operaattorien ylikuormitus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin lasku- ja vertailuoperaattorien käyttö omien olioiden kanssa on onneksi mahdollista. Tähän käytetään tekniikkaa, jonka nimi on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"operaattorien ylikuormitus"}]},{"type":"text","value":". Kun halutaan, että tietty operaattori toimii myös omasta luokasta muodostettujen olioiden kanssa, luokkaan kirjoitetaan vastaava metodi joka palauttaa oikean lopputuloksen. Periaate on vastaava kuin metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" kanssa: Python osaa käyttää tietyllä tapaa nimettyjä metodeja tietyissä operaatioissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ensin esimerkkiä, jossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"text","value":"-luokkaan on toteutettu metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"text","value":" (lyhenne sanoista "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"g"}]},{"type":"text","value":"reater "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"t"}]},{"type":"text","value":"han) joka toteuttaa suurempi kuin -operaattorin. Tarkemmin sanottuna metodi palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos nykyinen olio on suurempi kuin parametrina annettu olio."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hinta"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"text","value":" palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos nykyisen tuotteen hinta on suurempi kuin parametrina annetun tuotteen, ja muuten arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt luokan olioita voidaan vertailla käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"-operaattoria samalla tavalla kuin vaikkapa kokonaislukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.90"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nomena "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" omena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Appelsiini on suurempi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olioiden suuruusluokan vertailua toteuttaessa täytyy päättää, millä perusteella suuruusjärjestys määritetään. Voisimme myös haluta, että tuotteet järjestetään hinnan sijasta nimen mukaiseen aakkosjärjestykseen. Tällöin omena olisikin appelsiinia \"suurempi\":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (hinta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__hinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__gt__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" toinen_tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.90"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nomena "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" appelsiini "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" omena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Appelsiini on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omena on suurempi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omena on suurempi"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-operaattoreita","style":"position:relative;"},"children":[{"type":"text","value":"Lisää operaattoreita"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-operaattoreita","ariaLabel":"lisaa operaattoreita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tavalliset vertailuoperaattorit ja näitä vastaavat metodit on esitetty seuraavassa taulukossa:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Merkitys perinteisesti"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Metodin nimi"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Pienempi kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__lt__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Suurempi kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__gt__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Yhtä suuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__eq__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Eri suuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__ne__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Pienempi tai yhtäsuuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__le__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">="}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Suurempi tai yhtäsuuri kuin"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__ge__(self, toinen)"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokissa voidaan toteuttaa tiettyjä muita operaattoreita, esimerkiksi:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Operaattori"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Merkitys perinteisesti"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Metodin nimi"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Yhdistäminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__add__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Vähentäminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__sub__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Monistaminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__mul__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"/"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Jakaminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__truediv__(self, toinen)"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"Kokonaisjakaminen"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__floordiv__(self, toinen)"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää operaattoreita ja metodien nimien vastineita löydät helposti Googlella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että vain hyvin harvoin on tarvetta toteuttaa kaikkia operaatioita omassa luokassa. Esimerkiksi jakaminen on operaatio, jolle on hankalaa keksiä luontevaa käyttöä useimmissa luokissa (mitä tulee, kun jaetaan opiskelija kolmella saati toisella opiskelijalla?). Tiettyjen operaattoreiden toteuttamisesta voi kuitenkin olla hyötyä, mikäli vastaavat operaatiot ovat loogisia luokalle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä luokkaa joka mallintaa yhtä muistiinpanoa. Kahden muistiinpanon yhdistäminen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattorilla tuottaa uuden, yhdistetyn muistiinpanon, kun on toteutettu metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__add__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Muistiinpano"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pvm\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkinta\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__add__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Uuden muistiinpanon ajaksi nykyinen aika"}]},{"type":"text","value":"\n uusi_muistiinpano "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n uusi_muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ja \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkinta\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" uusi_muistiinpano"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"merkinta1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2016"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muista ostaa lahjoja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmerkinta2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Muistiinpano"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2016"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muista hakea kuusi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nyt voidaan yhdistää plussalla - tämä kutsuu metodia __add__ luokassa Muistiipano"}]},{"type":"text","value":"\nmolemmat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkinta1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" merkinta2\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"molemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2020-09-09 14:13:02.163170: Muista ostaa lahjoja ja Muista hakea kuusi"}]}]},{"type":"element","tagName":"h2","properties":{"id":"olion-esitys-merkkijonona","style":"position:relative;"},"children":[{"type":"text","value":"Olion esitys merkkijonona"},{"type":"element","tagName":"a","properties":{"href":"#olion-esitys-merkkijonona","ariaLabel":"olion esitys merkkijonona permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme toteuttaneet luokkiin usein metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka antaa merkkijonoesityksen olion sisällöstä. Toinen melko samanlainen metodi on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":", joka antaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"teknisen"}]},{"type":"text","value":" esityksen olion sisällöstä. Usein metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" toteutetaan niin, että se antaa koodin, joka muodostaa olion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"repr"}]},{"type":"text","value":" antaa olion teknisen merkkijonoesityksen, ja lisäksi tätä esitystä käytetään, jos oliossa ei ole määritelty "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":"-metodia. Seuraava luokka esittelee asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n \n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Henkilo("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"repr"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python3"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python3"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python3"]},"children":[{"type":"text","value":"henkilo1 = Henkilo(\"Anna\", 25)\nhenkilo2 = Henkilo(\"Pekka\", 99)\nprint(henkilo1)\nprint(henkilo2)"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilo('Anna', 25)\nHenkilo('Pekka', 99)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" haetaan nimen tekninen esitys metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"repr"}]},{"type":"text","value":", jolloin tässä tapauksessa nimen ympärille tulee "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"'"}]},{"type":"text","value":"-merkit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa luokassa on toteutettu sekä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n \n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Henkilo("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"repr"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" vuotta)\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python3"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python3"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python3"]},"children":[{"type":"text","value":"henkilo = Henkilo(\"Anna\", 25)\nprint(henkilo)\nprint(repr(henkilo))"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna (25 vuotta)\nHenkilo('Anna', 25)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun tietorakenteessa (kuten listassa) on olioita, Python käyttää vähän epäloogisesti metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":" olioiden merkkijonoesityksen muodostamiseen, kun lista tulostetaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python3"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python3"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python3"]},"children":[{"type":"text","value":"henkilot = []\nhenkilot.append(Henkilo(\"Anna\", 25))\nhenkilot.append(Henkilo(\"Pekka\", 99))\nhenkilot.append(Henkilo(\"Maija\", 55))\nprint(henkilot)"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[Henkilo('Anna', 25), Henkilo('Pekka', 99), Henkilo('Maija', 55)]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Raha","tmcname":"osa10-07_raha"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Raha"}]},{"type":"text","value":" runko. Tässä tehtävässä laajennetaan runkoa muutamilla operaattoreilla, ja korjataan pari rungossa olevaa pientä ongelmaa"}]},{"type":"element","tagName":"h2","properties":{"id":"korjaa-merkkijonoesitys","style":"position:relative;"},"children":[{"type":"text","value":"Korjaa merkkijonoesitys"},{"type":"element","tagName":"a","properties":{"href":"#korjaa-merkkijonoesitys","ariaLabel":"korjaa merkkijonoesitys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rahan merkkijonoesityksen muodostava metodi ei ole nyt ihan kunnossa. Seuraavassa esimerkissä muodostetaan kaksi raha-olioa, joista jälkimmäinen ei tulostu oikein:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaksi euroa ja viisi senttiä"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10\n2.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa luokan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__(self)"}]},{"type":"text","value":" siten, että tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10 eur\n2.05 eur"}]}]},{"type":"element","tagName":"h2","properties":{"id":"yhtasuuruus","style":"position:relative;"},"children":[{"type":"text","value":"Yhtäsuuruus"},{"type":"element","tagName":"a","properties":{"href":"#yhtasuuruus","ariaLabel":"yhtasuuruus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrittele raha-oliolle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__eq__(self, toinen)"}]},{"type":"text","value":", jonka avulla rahan yhtäsuuruusvertailu saadaan toimimaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" e3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10 eur\n2.05 eur\n4.10 eur\nFalse\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"muut-vertailut","style":"position:relative;"},"children":[{"type":"text","value":"Muut vertailut"},{"type":"element","tagName":"a","properties":{"href":"#muut-vertailut","ariaLabel":"muut vertailut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta rahalle myös seuraavat vertailuoperaattorit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"plus-ja-miinus","style":"position:relative;"},"children":[{"type":"text","value":"Plus ja miinus"},{"type":"element","tagName":"a","properties":{"href":"#plus-ja-miinus","ariaLabel":"plus ja miinus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta rahalle yhteen- ja vähennyslaskuoperaatiot. Molempien operaatioiden tulee palauttaa uusi rahaolio, ja ne eivät saa muuttaa olioa itseään tai parametrina olevaa olioa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että rahan arvo ei voi olla negatiivinen. Negatiiviseen tulokseen päätyvän vähennyslaskuyrityksen tulee aiheuttaa ValueError-tyyppinen poikkeus."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Raha"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ne3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" e2\ne4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" e1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" e2\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ne5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" e2"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"e1"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"7.00 eur\n1.10 eur\nTraceback (most recent call last):\nFile \"tiedosto.py\", line 416, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\ne5 = e2-e1\nFile \"tiedosto.py\", line 404, in "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sub"}]},{"type":"text","value":"\nraise ValueError(f\"negatiivinen tulos ei sallittu\")\nValueError: negatiivinen tulos ei sallittu"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"arvoa-ei-voi-muuttaa","style":"position:relative;"},"children":[{"type":"text","value":"Arvoa ei voi muuttaa"},{"type":"element","tagName":"a","properties":{"href":"#arvoa-ei-voi-muuttaa","ariaLabel":"arvoa ei voi muuttaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa on tällä hetkellä vielä pieni ongelma, koska käyttäjä voi \"huijaamalla\" muuttaa rahan arvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eurot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.05 eur\n1000.05 eur"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta luokan toteutus "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/3-kapselointi#kapselointi"},"children":[{"type":"text","value":"kapseloiduksi"}]},{"type":"text","value":" siten, että yllä oleva huijaus ei onnistu. Luokalla ei siis saa olla kapseloimattomia attribuutteja eikä asetus- tai havainnointimetodeita euroille tai senteille!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Päiväys","tmcname":"osa10-08_paivays"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Paivays"}]},{"type":"text","value":", jonka avulla on mahdollista käsitellä päivämääriä. Oletetaan tässä tehtävässä yksinkertaisuuden vuoksi, että "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jokaisessa kuussa on 30 päivää"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Edellisestä johtuen tehtävässä ei poikkeuksellisesti kannata käyttää Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"datetime"}]},{"type":"text","value":"-moduulia, vaan toteutetaan luokka itse."}]},{"type":"element","tagName":"h2","properties":{"id":"vertailut","style":"position:relative;"},"children":[{"type":"text","value":"Vertailut"},{"type":"element","tagName":"a","properties":{"href":"#vertailut","ariaLabel":"vertailut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokan runko ja sille vertailuoperaattorit <, >, == ja !=. Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" p3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10.2020\n28.12.1985\nFalse\nTrue\nFalse\nFalse\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kasvatus","style":"position:relative;"},"children":[{"type":"text","value":"Kasvatus"},{"type":"element","tagName":"a","properties":{"href":"#kasvatus","ariaLabel":"kasvatus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta päiväykselle operaattori +. Operaattori luo uuden päivämäärän joka on lisättävän lukeman päiviä verran suurempi kuin alkuperäinen päivämäärä. Alkuperäinen päivä ei saa muuttua."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\np3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\np4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" p2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"400"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.10.2020\n28.12.1985\n7.10.2020\n8.2.1987"}]}]},{"type":"element","tagName":"h2","properties":{"id":"erotus","style":"position:relative;"},"children":[{"type":"text","value":"Erotus"},{"type":"element","tagName":"a","properties":{"href":"#erotus","ariaLabel":"erotus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta päiväykselle operaattori -, joka palauttaa päivämäärien eron päivissä laskettuna. Huomaa, että koska oletamme jokaisessa kuukaudessa olevan 30 päivää, tässä tehtävässä vuosien päivien lukumäärä on 12*30 eli 360."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattori toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"p1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\np3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"p3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"28\n28\n12516"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"iteraattorit","style":"position:relative;"},"children":[{"type":"text","value":"Iteraattorit"},{"type":"element","tagName":"a","properties":{"href":"#iteraattorit","ariaLabel":"iteraattorit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme aikaisemmin käyttäneet for-lausetta erilaisten tietorakenteiden ja tiedostojen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iterointiin"}]},{"type":"text","value":" eli läpikäyntiin. Tyypillinen tapaus olisi vaikkapa seuraavanlainen funktio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_positiiviset"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio käy läpi listan alkio kerrallaan ja laskee positiivisten alkioiden määärän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Iterointi on mahdollista toteuttaa myös omiin luokkiin. Hyödyllistä tämä on silloin, kun luokasta muodostetut oliot tallentavat kokoelman alkioita. Esimerkiksi aikaisemmin kirjoitettiin luokka, joka mallintaa kirjahyllyä – olisi näppärä, jos kaikki kirjahyllyn kirjat voisi käydä läpi yhdessä silmukassa. Samalla tavalla opiskelijarekisterin kaikkien opiskelijoiden läpikäynti for-lauseella olisi kätevää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Iterointi mahdollistuu toteuttamalla luokkaan iteraattorimetodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__next__"}]},{"type":"text","value":". Käsitellään metodien toimintaa tarkemmin, kun on ensin tarkasteltu esimerkkinä kirjahyllyluokkaa, joka mahdollistaa kirjojen läpikäynnin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sivuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sivuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sivuja\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Iteraattorin alustusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa viittauksen olioon itseensä, koska"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# iteraattori on toteutettu samassa luokassa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa seuraavan alkion"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos ei ole enempää alkioita, heitetään tapahtuma"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# StopIteration"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__next__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poimitaan listasta nykyinen"}]},{"type":"text","value":"\n kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan laskuria yhdellä"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja palautetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kirja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Ei enempää kirjoja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" StopIteration\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"text","value":" siis alustetaan iteroinnissa tarvittava muuttuja tai muuttujat - tässä tapauksessa riittää, että meillä on laskuri joka osoittaa listan nykyiseen alkioon. Lisäksi tarvitaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__next__"}]},{"type":"text","value":", joka palauttaa seuraavan alkion. Esimerkkitapauksessa palautetaan listasta alkio muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kohdalta ja kasvatetaan muuttujan arvoa yhdellä. Jos listassa ei ole enempää alkiota, \"nostetaan\" poikkeus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"StopIteration"}]},{"type":"text","value":", joka kertoo iteroijalle (esim. for-silmukalle), että kaikki alkiot on käyty läpi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt voidaan käydä kirjahyllyn kirjat läpi esimerkiksi for-silmukassa näppärästi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Elämäni Pythoniassa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"123"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Hemingjava\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"204"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C-itsemän veljestä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n hylly "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjahylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikkien kirjojen nimet"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Elämäni Pythoniassa\nVanhus ja Java\nC-itsemän veljestä"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Iteroitava kauppalista","tmcname":"osa10-09_iteroitava_kauppalista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on "},{"type":"element","tagName":"a","properties":{"href":"/osa-8/2-luokat-ja-oliot#programming-exercise-kauppalista"},"children":[{"type":"text","value":"osan 8 tehtävästä "}]},{"type":"text","value":" tuttu luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":". Tee luokasta iteroitava, siten että sitä voi käyttää seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omenat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ananas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"banaanit: 10 kpl\nomenat: 5 kpl\nananas: 1 kpl"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Iteraattorin metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__next__"}]},{"type":"text","value":" tulee palauttaa tupleja, joiden ensimmäinen alkio on tuotteen nimi ja toisen listalla olevan tuotteen lukumäärä."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet muuttujan self eri käyttötarkoituksia
    • \n
    • Osaat ylikuormittaa operaattoreita omissa luokissa
    • \n
    • Tiedät miten muodostaa iteroitavan luokan
    • \n

    Luokka voi palauttaa metodista myös sen itsensä tyyppisen olion. Luokan Tuote metodi alennustuote palauttaa uuden tuotteen, jolla on sama nimi kuin nykyisellä tuotteella, mutta 25% halvempi hinta:

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    def alennustuote(self):\n        alennettu = Tuote(self.__nimi, self.__hinta * 0.75)\n        return alennettu
    omena1 = Tuote(\"Omena\", 2.99)\nomena2 = omena1.alennustuote()\nprint(omena1)\nprint(omena2)

    Omena (hinta 2.99)\nOmena (hinta 2.2425)

    Kerrataan vielä muuttujan self merkitys: luokan sisällä se viittaa nykyiseen olioon. Tyypillinen tapa käyttää muuttujaa onkin viitata olion omiin piirteisiin, esimerkiksi attribuuttien arvoihin. Muuttujaa voidaan käyttää myös palauttamaan koko olio (vaikka tälle onkin selvästi harvemmin tarvetta). Esimerkkiluokan Tuote metodi halvempi osaa palauttaa halvemman tuotteen, kun sille annetaan parametriksi toinen Tuote-luokan olio:

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    @property\n    def hinta(self):\n        return self.__hinta\n\n    def halvempi(self, tuote):\n        if self.__hinta < tuote.hinta:\n            return self\n        else:\n            return tuote
    omena = Tuote(\"Omena\", 2.99)\nappelsiini = Tuote(\"Appelsiini\", 3.95)\nbanaani = Tuote(\"Banaani\", 5.25)\n\nprint(appelsiini.halvempi(omena))\nprint(appelsiini.halvempi(banaani))

    Omena (2.99)\nAppelsiini (3.95)

    Esimerkin vertailun toteutus vaikuttaa kuitenkin melko kömpelöltä - paljon parempi olisi, jos voisimme vertailla Tuote-olioita suoraan Pythonin vertailuoperaattoreilla.

    Operaattorien ylikuormitus

    Pythonin lasku- ja vertailuoperaattorien käyttö omien olioiden kanssa on onneksi mahdollista. Tähän käytetään tekniikkaa, jonka nimi on operaattorien ylikuormitus. Kun halutaan, että tietty operaattori toimii myös omasta luokasta muodostettujen olioiden kanssa, luokkaan kirjoitetaan vastaava metodi joka palauttaa oikean lopputuloksen. Periaate on vastaava kuin metodin __str__ kanssa: Python osaa käyttää tietyllä tapaa nimettyjä metodeja tietyissä operaatioissa.

    Tarkastellaan ensin esimerkkiä, jossa Tuote-luokkaan on toteutettu metodi __gt__ (lyhenne sanoista greater than) joka toteuttaa suurempi kuin -operaattorin. Tarkemmin sanottuna metodi palauttaa arvon True, jos nykyinen olio on suurempi kuin parametrina annettu olio.

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    @property\n    def hinta(self):\n        return self.__hinta\n\n    def __gt__(self, toinen_tuote):\n        return self.hinta > toinen_tuote.hinta

    Metodi __gt__ palauttaa arvon True, jos nykyisen tuotteen hinta on suurempi kuin parametrina annetun tuotteen, ja muuten arvon False.

    Nyt luokan olioita voidaan vertailla käyttäen >-operaattoria samalla tavalla kuin vaikkapa kokonaislukuja:

    appelsiini = Tuote(\"Appelsiini\", 4.90)\nomena = Tuote(\"Omena\", 3.95)\n\nif appelsiini > omena:\n    print(\"Appelsiini on suurempi\")\nelse:\n    print(\"Omena on suurempi\")

    Appelsiini on suurempi

    Olioiden suuruusluokan vertailua toteuttaessa täytyy päättää, millä perusteella suuruusjärjestys määritetään. Voisimme myös haluta, että tuotteet järjestetään hinnan sijasta nimen mukaiseen aakkosjärjestykseen. Tällöin omena olisikin appelsiinia \"suurempi\":

    class Tuote:\n    def __init__(self, nimi: str, hinta: float):\n        self.__nimi = nimi\n        self.__hinta = hinta\n\n    def __str__(self):\n        return f\"{self.__nimi} (hinta {self.__hinta})\"\n\n    @property\n    def hinta(self):\n        return self.__hinta\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    def __gt__(self, toinen_tuote):\n        return self.nimi > toinen_tuote.nimi
    appelsiini = Tuote(\"Appelsiini\", 4.90)\nomena = Tuote(\"Omena\", 3.95)\n\nif appelsiini > omena:\n    print(\"Appelsiini on suurempi\")\nelse:\n    print(\"Omena on suurempi\")

    Omena on suurempi

    Lisää operaattoreita

    Tavalliset vertailuoperaattorit ja näitä vastaavat metodit on esitetty seuraavassa taulukossa:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OperaattoriMerkitys perinteisestiMetodin nimi
    <Pienempi kuin__lt__(self, toinen)
    >Suurempi kuin__gt__(self, toinen)
    ==Yhtä suuri kuin__eq__(self, toinen)
    !=Eri suuri kuin__ne__(self, toinen)
    <=Pienempi tai yhtäsuuri kuin__le__(self, toinen)
    >=Suurempi tai yhtäsuuri kuin__ge__(self, toinen)

    Lisäksi luokissa voidaan toteuttaa tiettyjä muita operaattoreita, esimerkiksi:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    OperaattoriMerkitys perinteisestiMetodin nimi
    +Yhdistäminen__add__(self, toinen)
    -Vähentäminen__sub__(self, toinen)
    *Monistaminen__mul__(self, toinen)
    /Jakaminen__truediv__(self, toinen)
    //Kokonaisjakaminen__floordiv__(self, toinen)

    Lisää operaattoreita ja metodien nimien vastineita löydät helposti Googlella.

    Huomaa, että vain hyvin harvoin on tarvetta toteuttaa kaikkia operaatioita omassa luokassa. Esimerkiksi jakaminen on operaatio, jolle on hankalaa keksiä luontevaa käyttöä useimmissa luokissa (mitä tulee, kun jaetaan opiskelija kolmella saati toisella opiskelijalla?). Tiettyjen operaattoreiden toteuttamisesta voi kuitenkin olla hyötyä, mikäli vastaavat operaatiot ovat loogisia luokalle.

    Tarkastellaan esimerkkinä luokkaa joka mallintaa yhtä muistiinpanoa. Kahden muistiinpanon yhdistäminen +-operaattorilla tuottaa uuden, yhdistetyn muistiinpanon, kun on toteutettu metodi __add__:

    from datetime import datetime\n\nclass Muistiinpano:\n    def __init__(self, pvm: datetime, merkinta: str):\n        self.pvm = pvm\n        self.merkinta = merkinta\n\n    def __str__(self):\n        return f\"{self.pvm}: {self.merkinta}\"\n\n    def __add__(self, toinen):\n        # Uuden muistiinpanon ajaksi nykyinen aika\n        uusi_muistiinpano = Muistiinpano(datetime.now(), \"\")\n        uusi_muistiinpano.merkinta = self.merkinta + \" ja \" + toinen.merkinta\n        return uusi_muistiinpano
    merkinta1 = Muistiinpano(datetime(2016, 12, 17), \"Muista ostaa lahjoja\")\nmerkinta2 = Muistiinpano(datetime(2016, 12, 23), \"Muista hakea kuusi\")\n\n# Nyt voidaan yhdistää plussalla - tämä kutsuu metodia __add__ luokassa Muistiipano\nmolemmat = merkinta1 + merkinta2\nprint(molemmat)

    2020-09-09 14:13:02.163170: Muista ostaa lahjoja ja Muista hakea kuusi

    Olion esitys merkkijonona

    Olemme toteuttaneet luokkiin usein metodin __str__, joka antaa merkkijonoesityksen olion sisällöstä. Toinen melko samanlainen metodi on __repr__, joka antaa teknisen esityksen olion sisällöstä. Usein metodi __repr__ toteutetaan niin, että se antaa koodin, joka muodostaa olion.

    Funktio repr antaa olion teknisen merkkijonoesityksen, ja lisäksi tätä esitystä käytetään, jos oliossa ei ole määritelty __str__-metodia. Seuraava luokka esittelee asiaa:

    class Henkilo:\n    def __init__(self, nimi: str, ika: int):\n        self.nimi = nimi\n        self.ika = ika\n        \n    def __repr__(self):\n        return f\"Henkilo({repr(self.nimi)}, {self.ika})\"
    henkilo1 = Henkilo("Anna", 25)\nhenkilo2 = Henkilo("Pekka", 99)\nprint(henkilo1)\nprint(henkilo2)

    Henkilo('Anna', 25)\nHenkilo('Pekka', 99)

    Huomaa, että metodissa __repr__ haetaan nimen tekninen esitys metodilla repr, jolloin tässä tapauksessa nimen ympärille tulee '-merkit.

    Seuraavassa luokassa on toteutettu sekä metodi __repr__ että __str__:

    class Henkilo:\n    def __init__(self, nimi: str, ika: int):\n        self.nimi = nimi\n        self.ika = ika\n        \n    def __repr__(self):\n        return f\"Henkilo({repr(self.nimi)}, {self.ika})\"\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.ika} vuotta)\"
    henkilo = Henkilo("Anna", 25)\nprint(henkilo)\nprint(repr(henkilo))

    Anna (25 vuotta)\nHenkilo('Anna', 25)

    Kun tietorakenteessa (kuten listassa) on olioita, Python käyttää vähän epäloogisesti metodia __repr__ olioiden merkkijonoesityksen muodostamiseen, kun lista tulostetaan:

    henkilot = []\nhenkilot.append(Henkilo("Anna", 25))\nhenkilot.append(Henkilo("Pekka", 99))\nhenkilot.append(Henkilo("Maija", 55))\nprint(henkilot)

    [Henkilo('Anna', 25), Henkilo('Pekka', 99), Henkilo('Maija', 55)]

    Tehtäväpohjasta löytyy luokan Raha runko. Tässä tehtävässä laajennetaan runkoa muutamilla operaattoreilla, ja korjataan pari rungossa olevaa pientä ongelmaa

    Korjaa merkkijonoesitys

    Rahan merkkijonoesityksen muodostava metodi ei ole nyt ihan kunnossa. Seuraavassa esimerkissä muodostetaan kaksi raha-olioa, joista jälkimmäinen ei tulostu oikein:

    e1 = Raha(4, 10)\ne2 = Raha(2, 5)  # kaksi euroa ja viisi senttiä\n\nprint(e1)\nprint(e2)

    4.10\n2.5

    Korjaa luokan metodi __str__(self) siten, että tulostus on seuraava:

    4.10 eur\n2.05 eur

    Yhtäsuuruus

    Määrittele raha-oliolle metodi __eq__(self, toinen), jonka avulla rahan yhtäsuuruusvertailu saadaan toimimaan:

    e1 = Raha(4, 10)\ne2 = Raha(2, 5)\ne3 = Raha(4, 10)\n\nprint(e1)\nprint(e2)\nprint(e3)\nprint(e1 == e2)\nprint(e1 == e3)

    4.10 eur\n2.05 eur\n4.10 eur\nFalse\nTrue

    Muut vertailut

    Toteuta rahalle myös seuraavat vertailuoperaattorit <, >, !=.

    e1 = Raha(4, 10)\ne2 = Raha(2, 5)\n\nprint(e1 != e2)\nprint(e1 < e2)\nprint(e1 > e2)

    True\nFalse\nTrue

    Plus ja miinus

    Toteuta rahalle yhteen- ja vähennyslaskuoperaatiot. Molempien operaatioiden tulee palauttaa uusi rahaolio, ja ne eivät saa muuttaa olioa itseään tai parametrina olevaa olioa!

    Huomaa, että rahan arvo ei voi olla negatiivinen. Negatiiviseen tulokseen päätyvän vähennyslaskuyrityksen tulee aiheuttaa ValueError-tyyppinen poikkeus.

    e1 = Raha(4, 5)\ne2 = Raha(2, 95)\n\ne3 = e1 + e2\ne4 = e1 - e2\n\nprint(e3)\nprint(e4)\n\ne5 = e2-e1
    7.00 eur\n1.10 eur\nTraceback (most recent call last):\nFile \"tiedosto.py\", line 416, in \ne5 = e2-e1\nFile \"tiedosto.py\", line 404, in sub\nraise ValueError(f\"negatiivinen tulos ei sallittu\")\nValueError: negatiivinen tulos ei sallittu

    Arvoa ei voi muuttaa

    Luokassa on tällä hetkellä vielä pieni ongelma, koska käyttäjä voi \"huijaamalla\" muuttaa rahan arvoa:

    print(e1)\ne1.eurot = 1000\nprint(e1)

    4.05 eur\n1000.05 eur

    Muuta luokan toteutus kapseloiduksi siten, että yllä oleva huijaus ei onnistu. Luokalla ei siis saa olla kapseloimattomia attribuutteja eikä asetus- tai havainnointimetodeita euroille tai senteille!

    Tässä tehtävässä toteutetaan luokka Paivays, jonka avulla on mahdollista käsitellä päivämääriä. Oletetaan tässä tehtävässä yksinkertaisuuden vuoksi, että jokaisessa kuussa on 30 päivää.

    Huom! Edellisestä johtuen tehtävässä ei poikkeuksellisesti kannata käyttää Pythonin datetime-moduulia, vaan toteutetaan luokka itse.

    Vertailut

    Toteuta luokan runko ja sille vertailuoperaattorit <, >, == ja !=. Käyttöesimerkki:

    p1 = Paivays(4, 10, 2020)\np2 = Paivays(28, 12, 1985)\np3 = Paivays(28, 12, 1985)\n\nprint(p1)\nprint(p2)\nprint(p1 == p2)\nprint(p1 != p2)\nprint(p1 == p3)\nprint(p1 < p2)\nprint(p1 > p2)

    4.10.2020\n28.12.1985\nFalse\nTrue\nFalse\nFalse\nTrue

    Kasvatus

    Toteuta päiväykselle operaattori +. Operaattori luo uuden päivämäärän joka on lisättävän lukeman päiviä verran suurempi kuin alkuperäinen päivämäärä. Alkuperäinen päivä ei saa muuttua.

    p1 = Paivays(4, 10, 2020)\np2 = Paivays(28, 12, 1985)\n\np3 = p1 + 3\np4 = p2 + 400\n\nprint(p1)\nprint(p2)\nprint(p3)\nprint(p4)

    4.10.2020\n28.12.1985\n7.10.2020\n8.2.1987

    Erotus

    Toteuta päiväykselle operaattori -, joka palauttaa päivämäärien eron päivissä laskettuna. Huomaa, että koska oletamme jokaisessa kuukaudessa olevan 30 päivää, tässä tehtävässä vuosien päivien lukumäärä on 12*30 eli 360.

    Operaattori toimii seuraavasti

    p1 = Paivays(4, 10, 2020)\np2 = Paivays(2, 11, 2020)\np3 = Paivays(28, 12, 1985)\n\nprint(p2-p1)\nprint(p1-p2)\nprint(p1-p3)

    28\n28\n12516

    Iteraattorit

    Olemme aikaisemmin käyttäneet for-lausetta erilaisten tietorakenteiden ja tiedostojen iterointiin eli läpikäyntiin. Tyypillinen tapaus olisi vaikkapa seuraavanlainen funktio:

    \ndef laske_positiiviset(lista: list):\n    n = 0\n    for alkio in lista:\n        if alkio > 0:\n            n += 1\n    return n\n

    Funktio käy läpi listan alkio kerrallaan ja laskee positiivisten alkioiden määärän.

    Iterointi on mahdollista toteuttaa myös omiin luokkiin. Hyödyllistä tämä on silloin, kun luokasta muodostetut oliot tallentavat kokoelman alkioita. Esimerkiksi aikaisemmin kirjoitettiin luokka, joka mallintaa kirjahyllyä – olisi näppärä, jos kaikki kirjahyllyn kirjat voisi käydä läpi yhdessä silmukassa. Samalla tavalla opiskelijarekisterin kaikkien opiskelijoiden läpikäynti for-lauseella olisi kätevää.

    Iterointi mahdollistuu toteuttamalla luokkaan iteraattorimetodit __iter__ ja __next__. Käsitellään metodien toimintaa tarkemmin, kun on ensin tarkasteltu esimerkkinä kirjahyllyluokkaa, joka mahdollistaa kirjojen läpikäynnin:

    \nclass Kirja:\n    def __init__(self, nimi: str, kirjailija: str, sivuja: int):\n        self.nimi = nimi\n        self.kirjailija = kirjailija\n        self.sivuja = sivuja\n\nclass Kirjahylly:\n    def __init__(self):\n        self._kirjat = []\n\n    def lisaa_kirja(self, kirja: Kirja):\n        self._kirjat.append(kirja)\n\n    # Iteraattorin alustusmetodi\n    # Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)\n    def __iter__(self):\n        self.n = 0\n        # Metodi palauttaa viittauksen olioon itseensä, koska\n        # iteraattori on toteutettu samassa luokassa\n        return self\n\n    # Metodi palauttaa seuraavan alkion\n    # Jos ei ole enempää alkioita, heitetään tapahtuma\n    # StopIteration\n    def __next__(self):\n        if self.n < len(self._kirjat):\n            # Poimitaan listasta nykyinen\n            kirja = self._kirjat[self.n]\n            # Kasvatetaan laskuria yhdellä\n            self.n += 1\n            # ...ja palautetaan\n            return kirja\n        else:\n            # Ei enempää kirjoja\n            raise StopIteration\n

    Metodissa __iter__ siis alustetaan iteroinnissa tarvittava muuttuja tai muuttujat - tässä tapauksessa riittää, että meillä on laskuri joka osoittaa listan nykyiseen alkioon. Lisäksi tarvitaan metodi __next__, joka palauttaa seuraavan alkion. Esimerkkitapauksessa palautetaan listasta alkio muuttujan n kohdalta ja kasvatetaan muuttujan arvoa yhdellä. Jos listassa ei ole enempää alkiota, \"nostetaan\" poikkeus StopIteration, joka kertoo iteroijalle (esim. for-silmukalle), että kaikki alkiot on käyty läpi.

    Nyt voidaan käydä kirjahyllyn kirjat läpi esimerkiksi for-silmukassa näppärästi:

    \nif __name__ == \"__main__\":\n    k1 = Kirja(\"Elämäni Pythoniassa\", \"Pekka Python\", 123)\n    k2 = Kirja(\"Vanhus ja Java\", \"Ernest Hemingjava\", 204)\n    k3 = Kirja(\"C-itsemän veljestä\", \"Keijo Koodari\", 997)\n\n    hylly = Kirjahylly()\n    hylly.lisaa_kirja(k1)\n    hylly.lisaa_kirja(k2)\n    hylly.lisaa_kirja(k3)\n\n    # Tulostetaan kaikkien kirjojen nimet\n    for kirja in hylly:\n        print(kirja.nimi)\n

    Elämäni Pythoniassa\nVanhus ja Java\nC-itsemän veljestä

    Tehtäväpohjassa on osan 8 tehtävästä tuttu luokka Kauppalista. Tee luokasta iteroitava, siten että sitä voi käyttää seuraavasti:

    lista = Kauppalista()\nlista.lisaa(\"banaanit\", 10)\nlista.lisaa(\"omenat\", 5)\nlista.lisaa(\"ananas\", 1)\n\nfor tuote in lista:\n    print(f\"{tuote[0]}: {tuote[1]} kpl\")

    banaanit: 10 kpl\nomenat: 5 kpl\nananas: 1 kpl

    Iteraattorin metodin __next__ tulee palauttaa tupleja, joiden ensimmäinen alkio on tuotteen nimi ja toisen listalla olevan tuotteen lukumäärä.

    ","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/3-olio-ohjelmoinnin-tekniikoita.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-10/4-lisaa-esimerkkeja/page-data.json b/page-data/osa-10/4-lisaa-esimerkkeja/page-data.json index a42e69cc8..2b8ca3130 100644 --- a/page-data/osa-10/4-lisaa-esimerkkeja/page-data.json +++ b/page-data/osa-10/4-lisaa-esimerkkeja/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-10/4-lisaa-esimerkkeja", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä osiossa"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Käydään läpi hieman laajemman sovelluksen tekemiseen liittyviä seikkoja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Erityinen fokus on sovelluksen eri osa-alueiden (käyttöliittymä, sovelluslogiikka ja tiedostojen käsittely) eriyttämisessä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Harjoitellaan laajemman sovelluksen toteuttamista itse"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteiden ja jatkokurssin aikana on esitelty suuri määrä Pythonin tarjoamia ominaisuuksia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteissa tutustuttiin kielen kontrollirakenteisiin (while ja for), funktioihin sekä perustietorakenteisiin eli listaan ja sanakirjaan. Näytti jo hetken siltä että muuta ei tarvitakaan. Periaatteessa näin onkin: ohjelmoinnin perusteiden kalustolla pystyy ilmaisemaan kaiken mikä Pythonilla on ylipäätään ilmaistavissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jatkokurssin alussa, eli kurssin osassa 8 pakkaa ruvettiin kuitenkin hämmentämään tuomalla mukaan luokat ja oliot. Milloin ja ylipäätään "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"miksi"}]},{"type":"text","value":" olioita tulisi käyttää jos kurssin osien 1-7 kalusto on jo ilmaisuvoimaltaan riittävä?"}]},{"type":"element","tagName":"h2","properties":{"id":"monimutkaisuuden-hallintaa","style":"position:relative;"},"children":[{"type":"text","value":"Monimutkaisuuden hallintaa"},{"type":"element","tagName":"a","properties":{"href":"#monimutkaisuuden-hallintaa","ariaLabel":"monimutkaisuuden hallintaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monissa tilanteissa voi ja varmasti kannattaakin olla käyttämättä oliota. Esimerkiksi jos koodataan pieni \"kertakäyttöinen\" apuohjelma, ei ehkä ole mitään tarvetta olioille. Tilanne alkaa muuttua, kun siirrytään hieman suuremman kokoluokan ohjelmiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma laajenee, alkaa sen sisältämien yksityiskohtien määrä nousta hallitsemattomaksi, ellei ohjelmaa jäsennellä jollain järkevällä tavalla. Itse asiassa jo ohjelmoinnin perusteiden tehtävissä oli havaittavissa varsin monimutkaisia ratkaisuja, joiden ymmärtämisessä jopa alan ammattilaisilla on vaikeuksia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käsite "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Separation_of_concerns","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Separation of concerns"}]},{"type":"text","value":" on ollut jo vuosikymmeniä eräs ohjelmoinnin ja koko tietojenkäsittelyn keskeisiä teemoja. Wikipedian mukaan käsitteellä tarkoitetaan seuraavaa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Separation of concerns is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern. A concern is a set of information that affects the code of a computer program"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kyse on ohjelman suunnittelua ohjaavasta periaatteesta, jonka mukaan ohjelmakoodi jäsennellään pienempiin osiin, joista kukin huolehtii vain omasta \"tontistaan\". Kuhunkin osaan tehdyt muutokset vaikuttavat - periaatteen mukaisesti - vain rajattuun alueeseen ohjelmassa, joten ohjelmien väistämätöntä monimutkaisuutta on helpompi hallita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot ovat yksi mekanismi tämän tavoitteen saavuttamiseen. Sen sijaan että ohjelma kirjoitetaan yhtenä isona kokonaisuutena, koostetaan se pienistä funktioista, joista kukin ratkaisee pienen osan ongelmasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmointi tarjoaa funktioita jossain määrin ilmaisuvoimaisemman ja joidenkin mielestä \"paremman\" tavan saavuttaa sama tavoite. Kuten olemme nähneet, olioiden avulla on mahdollista koota samaan asiaan liittyvä data ja sitä käsittelevä koodi, eli olion metodit, samaan paikkaan. Oliot tarjoavat myös mekanismin käsittelemänsä datan kapselointiin, joka taas tavallaan on keino piilottaa \"turhia\" yksityiskohtia olion ulkopuoliselta osalta ohjelmaa."}]},{"type":"element","tagName":"h2","properties":{"id":"esimerkki-puhelinluettelo","style":"position:relative;"},"children":[{"type":"text","value":"Esimerkki: puhelinluettelo"},{"type":"element","tagName":"a","properties":{"href":"#esimerkki-puhelinluettelo","ariaLabel":"esimerkki puhelinluettelo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Miten ohjelma sitten tulisi jakaa luokkiin ja olioihin? Kysymys ei ole helppo, ja asiaa on helpompi pohdiskella konkreettisen esimerkin kautta. Toteutetaan esimerkkinä olio-ohjelmointia hyödyntäen hieman samantyylinen puhelinluettelo, joka oli aiheena ohjelmoinnin perusteiden viidennen osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/3-dictionary#programming-exercise-puhelinluettelo-versio-2"},"children":[{"type":"text","value":"tehtävässä"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Separation of concerns -periaatetta noudatellen koodi tulee jakaa osiin, joista kukin käsittelee omaa asiaansa. Olio-ohjelmoinnin piirissä tätä periaatetta ilmentää niin sanottu "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Single-responsibility_principle","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"yhden vastuun (single responsibility)"}]},{"type":"text","value":" -periaate. Ei mennä sen tarkemmin periaatteen yksityiskohtiin, mutta maalaisjärjellä ajatellen periaatteen nimi jo kertoo mistä on kyse: "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"yksittäisen luokan olioiden tulisi olla vastuussa yhdestä asiasta"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olioita käytettäessä ohjelmointiongelman \"reaalimaailman asioita\" vastaa yleensä oma luokkansa. Puhelinluettelon tapauksessa tälläisiä reaalimaailman asioita olisivat esimerkiksi:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"henkilö"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näistä nimi ja puhelinnumero ovat kenties liian vähäpätöisiä ollakseen omia luokkiaan, mutta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"henkilö"}]},{"type":"text","value":" voisi hyvinkin olla oma luokkansa, jonka vastuulla on sitoa yhteen tietty nimi ja siihen liittyvät puhelinnumerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puhelinluettelo"}]},{"type":"text","value":" itsessään on potentiaalinen luokka, sen vastuulla on hallinnoida eri henkilöiden tietoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nämä kaksi luokkaa eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puhelinluettelo"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"henkilö"}]},{"type":"text","value":" muodostavat sovelluksen ytimen, eli niin sanotun "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sovelluslogiikan"}]},{"type":"text","value":". Näiden lisäksi ohjelma tarvitsee muutaman muunkin luokan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttäjän kanssa tapahtuvasta interaktiosta huolehtivaa luokkaa ei kannata sotkea sovelluslogiikan kanssa samaan luokkaan - sehän on kokonaan oma vastuunsa. Eli sovelluslogiikan luokkien lisäksi ohjelmalle tulee myös luokka, joka huolehtii ohjelman käyttöliittymästä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Talletamme puhelinluettelon tiedot tiedostoon. Myös tiedoston käsittely on selkeästi oma vastuunsa, joten tulemme sisällyttämään siihen käytettävän koodin omaan luokkaansa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelman luokkarakenne alkaa pikkuhiljaa hahmottua, nousee kysymykseksi se, mistä ohjelmointi kannattaa aloittaa. Usein paras tapa aloittaa on pienellä palalla sovelluslogiikka."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-1-sovelluslogiikan-runko","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 1: sovelluslogiikan runko"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-1-sovelluslogiikan-runko","ariaLabel":"vaihe 1 sovelluslogiikan runko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aloitetaan luokasta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":". Runko voisi näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_numero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_numerot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka pitää siis sisällään listan henkilöitä ja tarjoaa metodit tietojen lisäämiseen ja hakemiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaiseen henkilöön voi liittyä useita numeroita, joten toteutetaan luettelon sisäinen tila sanakirjan avulla, koska sanakirjasta on helppo hakea nimen perusteella. Sanakirjaan on helppo tallettaa suoraan myös nimeen liittyvät numerot, joten ainakaan tässä vaiheessa ei tarvita erillistä luokkaa yksittäisen henkilön tietojen tallettamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka laajenee seuraavasti. Mukana on myös pieni toiminnan varmistava koodinpätkä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_numero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# henkilöön liittyy lista puhelinnumeroja"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_numerot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# testikoodi"}]},{"type":"text","value":"\nluettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"02-123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Testikoodin tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['02-123456']\nNone"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_numerot"}]},{"type":"text","value":" siis palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":", jos henkilö ei löydy luettelosta, jos henkilö löytyy, palautetaan lista joka sisältää henkilön puhelinnumerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoidessa mitä tahansa ohjelmaa kannattaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"aina"}]},{"type":"text","value":" kokeilla, että koodi toimii kuten sen olettaa toimivan, ennen kun etenee muuhun koodiin.\nUsein tämä testikoodi on poisheitettävää koodia, ja sikäli voisi ajatella testaamisesta olevan ylimääräistä vaivaa. Lähes 100% tapauksissa ei näin kuitenkaan ole."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodiin tullut bugi kannattaa saada kiinni ja korjata niin pian kuin mahdollista. Jos koodin toimivuuden varmistaa lähes jokaisen uuden koodirivin jälkeen, on debuggaus ja korjaaminen yleensä vaivatonta ja nopeaa, koska tällöin voi olla melko varma siitä, että ongelma johtuu hetki sitten lisätyistä koodiriveistä. Jos taas koodia testataan vasta sen jälkeen kun siihen on lisätty kymmeniä koodirivejä, on virhelähteitä moninkertaisesti."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-2-kayttoliittyman-runko","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 2: käyttöliittymän runko"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-2-kayttoliittyman-runko","ariaLabel":"vaihe 2 kayttoliittyman runko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun sovelluslogiikan ydintoiminnallisuus on kunnossa, voidaan edetä sovelluksen tekstikäyttöliittymään. Tehdään sitä varten oma luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":", jonka runko on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka saattaa vaikuttaa vielä hämmentävältä, mutta tässä luodaan tosiaan vasta runko toiminnalle. Konstruktori luo puhelinluettelon, jonka olio pitää sisällään. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorita(self)"}]},{"type":"text","value":" käynnistää sovelluksen tekstikäyttöliittymän, jonka ytimen muodostaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukka, joka kyselee käyttäjältä mikä komento halutaan suorittaa. Ennen toistolauseeseen menemistä ohjelma tulostaa käyttöohjeet, kutsumalla metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ohje(self)"}]},{"type":"text","value":". Varsinaiset toiminnot toteutetaan seuraavaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan käyttöliittymää siten, että luetteloon voidaan lisätä uusia tietoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1 lisäys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos valittu komento on tietojen lisäys (eli komento on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"), kysyy käyttöliittymä nimen ja numeron käyttäjältä, ja lisää tiedot puhelinluetteloon kutsumalla sopivaa luettelon metodia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöliittymä on siis vastuussa ainoastaan siitä, että se kommunikoi käyttäjän kanssa. Puhelinnumeron säilöminen nimen yhteyteen on jätetty kokonaisuudessan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":"-olion vastuulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöliittymän rakennetta on mahdollista vielä parannella siten, että tietojen lisäys eriytetään omaan metodiinsa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"lisays(self)"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1 lisäys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# eriytetään uusien tietojen lisääminen omaksi metodiksi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisays"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erillisen metodin käyttämisen taustallakin on sama "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"separation of concerns"}]},{"type":"text","value":" -periaate. Sen sijaan että koko käyttöliittymän toiminnallisuus sijoitettaisiin ison "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukan sisälle, tehdään jokaisesta yksittäisestä toiminnosta oma metodinsa. Tämä helpottaa kokonaisuuden hallintaa. Jos halutaan muokata tietojen lisäämisen toiminnallisuutta, tiedetään heti missä päin relevantti koodi sijaitsee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään käyttöliittymään toiminnallisuus numeroiden hakemista varten. Sijoitetaan sen hoitava koodi heti omaan metodiinsa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1 lisäys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2 haku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisays"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"haku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero ei tiedossa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"haku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovelluksen perusversio toimii nyt. Seuraavassa esimerkki sovelluksen käytöstä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 lisäys\n2 haku"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-4356713"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\n02-123456\n045-4356713"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: Emilia\nnumero ei tiedossa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodia on aika paljon, todennäköisesti enemmän kuin jos kaikki olisi ohjelmoitu yhteen pötköön. Koodin rakenne on kuitenkin siistihkö, ja koodin laajentamisenkaan ei pitäisi olla kovin hankalaa."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-3-tietojen-haku-tiedostosta","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 3: tietojen haku tiedostosta"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-3-tietojen-haku-tiedostosta","ariaLabel":"vaihe 3 tietojen haku tiedostosta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan ohjelmaa siten, että se lataa käynnistäessään puhelinluettelon tiedostosta, joka on seuraavaa muotoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Erkki;02-1234567;045-4356713"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Emilia;040-324344"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston käsittely on selkeästi oma vastuualueensa, eli toteutetaan sitä varten oma luokka:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat\n nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numerot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" nimet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorin parametrina annetaan tiedoston nimi. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa(self)"}]},{"type":"text","value":" lukee tiedoston, ja pilkkoo sen rivit sanakirjaksi, missä avain on nimi ja arvona ovat nimeen liittyvät numerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi käyttää erästä Pythonin kätevää ominaisuutta: listasta on mahdollista ottaa ensin yksittäisiä alkioita erikseen nimettyinä muuttujina, sekä loput alkiot uutena listana, kuten seuraavasta esimerkistä käy ilmi. "},{"type":"element","tagName":"a","properties":{"href":"osa-6/1-tiedostojen-lukeminen#csv-tiedoston-lukeminen"},"children":[{"type":"text","value":"Luvusta 6"}]},{"type":"text","value":" muistamme että merkkijonojen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":" tuottaa nimenomaan listan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\neka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"loput "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"loput"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n2\n[3, 4, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sijoituslauseen viimeisen muuttujan nimen edessä on *, ja se tarkoittaa, että viimeiseen muuttujaan kerätään taulukosta loput, eli kolmas ja sitä seuraavat alkiot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostonkäsittelijääkin kannattaa ehdottomasti testata, ennen kuin se pultataan muuhun koodiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"t "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Erkki': ['02-1234567', '045-4356713'], 'Emilia': ['040-324344']}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun tiedostosta lukemisen todetaan toimivan, liitetään koodi muuhun ohjelmaan. Looginen paikka tiedoston lukemiseen on se hetki kun sovellus käynnistyy, eli luokan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" konstruktori:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# listään tiedostossa olevat nimet luetteloon"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numerot "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston lukua osana PuhelinLuetteloSovellusta kannattaa myös testata. Kun on varmistettu, että tiedoston sisältö saadaan ladattua luetteloon, voidaan edetä viimeiseen vaiheeseen."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-4-tietojen-talletus-tiedostoon","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 4: tietojen talletus tiedostoon"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-4-tietojen-talletus-tiedostoon","ariaLabel":"vaihe 4 tietojen talletus tiedostoon permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viimeistellään ohjelman alustava versio vielä siten, että se tallentaa lopetettaessa puhelinluettelon takaisin tiedostoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tätä varten luokkaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" tulee laajentaa siten, että sieltä saadaan tallennusta varten kaikki tiedot ulos:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# palautetaan tiedostoon tallentamista varten kaikki tiedot"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kaikki_tiedot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallennus on luonnollisesti luokan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"text","value":" vastuulla, eli laajennetaan sitä metodilla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"talleta"}]},{"type":"text","value":", joka saa parametriksi puhelinluetteloa edustavan sanakirjan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"talleta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dict"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numerot "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" numerot\n f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallennus tapahtuu samalla kun sovelluksen käyttö lopetetaan. Tehdään tätäkin tarkoitusta varten oma metodinsa ja kutsutaan sitä sopivassa kohdassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodi, joka suoritetaan lopetettaessa sovelluksen käyttö"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lopetus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"talleta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kaikki_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lopetus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"haku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelon laajennus, osa 1","tmcname":"osa10-10_puhelinluettelo_osa1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään pieni laajennus puhelinluettelosovellukseen. Yllä kehitetty koodi löytyy tehtäväpohjasta. Laajenna ratkaisuasi komennolla, joka mahdollistaa nimen etsimisen numeron perusteella. Laajennuksen jälkeen sovelluksen pitäisi toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 lisäys\n2 haku\n3 haku numeron perusteella"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-4356713"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]},{"type":"text","value":"\nErkki"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0100100"}]},{"type":"text","value":"\ntuntematon numero"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee laajennus sitten, että kunnioitat ohjelman rakennetta. Eli lisää luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" uutta ominaisuutta varten sopiva apumetodi sekä oma haara while-silmukkaan. Lisää myös sovelluslogiikkaan eli luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" metodi, joka mahdollistaa nimen hakemisen numeron perusteella."}]}]},{"type":"element","tagName":"h2","properties":{"id":"olioita-sanakirjassa","style":"position:relative;"},"children":[{"type":"text","value":"Olioita sanakirjassa"},{"type":"element","tagName":"a","properties":{"href":"#olioita-sanakirjassa","ariaLabel":"olioita sanakirjassa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa tehtävässä on tarkoitus muuttaa puhelinluetteloa siten, että sanakirjan arvoksi talletetaan tavallisten listojen sijaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioita"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Periaatteessa asiassa ei ole mitään ihmeellistä, mutta kurssilla ei vielä ole näin tehty, joten tutkitaan ennen tehtävää hieman samantapaista, mutta yksinkertaisempaa esimerkkiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään sovellus, jonka avulla voidaan pitää kirjaa siitä, kuinka monta tehtävää opiskelijat ovat tehneet kurssin aikana. Kunkin opiskelijan tehtävämäärä lasketaan yksinkertaisen olion avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tehtavalaskuri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tehtavia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"merkkaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tehtavia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tehtyja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tehtavia"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käyttävä pääohjelma on seuraavassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkataan tehtäviä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelija: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luodaan tarvittaessa olio tehtävämäärän laskemista varten"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtavalaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# merkataan tehdyksi nimeä vastaavaan olioon"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tehdyt tehtävät:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tehtavat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" tehtäviä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtyja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"merkataan tehtäviä\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sara"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"antti"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sara"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"juuso"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"juuso"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"antti"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sara"}]},{"type":"text","value":"\nopiskelija:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tehdyt tehtävät:\npekka tehtäviä 1 kpl\nantti tehtäviä 2 kpl\nsara tehtäviä 3 kpl\njuuso tehtäviä 2 kpl"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä on parikin huomionarvoista seikkaa. Kun opiskelijan nimi syötetään, tarkastetaan aina ensin onko opiskelijaa vastaava olio jo sanakirjassa. Jos olioa ei ole, luodaan se:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtavalaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tiedetään"}]},{"type":"text","value":" että olio on olemassa. Se on joko luotu juuri äsken tai jo aiemmalla silmukan kierroksella. Haetaan olio sanakirjasta, ja kutsutaan sen metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkaa"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivillä tapahtuu oikeastaan kaksi asiaa, ja sama voitaisiin kirjoittaa siten, että sanakirjasta haettu olio sijoitettaisiin apumuuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijan_laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nopiskelijan_laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että vaikka olio sijoitettaisiin apumuuttujaan, se "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei tarkoita"}]},{"type":"text","value":" että olio poistuisi sanakirjasta tai oliosta syntyisi kopio. Apumuuttuja on ainoastaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viite"}]},{"type":"text","value":" sanakirjassa olevaan olioon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkin koodia kannattaa "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ehdottomasti"}]},{"type":"text","value":" kokeilla "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorissa"}]},{"type":"text","value":" jos ei ole aivan 100% varma siitä, miten koodi toimii."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelon laajennus, osa 2","tmcname":"osa10-11_puhelinluettelo_osa2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä laajennetaan puhelinluettelosovellusta siten, että henkilöihin voi liittyä myös osoite. Yksinkertaisuuden vuoksi koodista on kuitenkin poistettu tiedostoon tallentaminen. Myös muutama metodi on uudelleennimetty vastaamaan paremmin laajennuksen jälkeistä tilannetta."}]},{"type":"element","tagName":"h2","properties":{"id":"luokka-henkilon-tietojen-esittamiseen","style":"position:relative;"},"children":[{"type":"text","value":"Luokka henkilön tietojen esittämiseen"},{"type":"element","tagName":"a","properties":{"href":"#luokka-henkilon-tietojen-esittamiseen","ariaLabel":"luokka henkilon tietojen esittamiseen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siirretään henkilön tietojen (eli puhelinnumerojen sekä osoitteen) esittäminen oman luokkansa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" vastuulle. Toteuta luokka siten, että se toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhenkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"040-123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhenkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mannerheimintie 10 Helsinki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erkki\n[]\nNone\n['040-123456']\nMannerheimintie 10 Helsinki"}]}]},{"type":"element","tagName":"h2","properties":{"id":"puhelinluettelo-kayttamaan-luokkaa-henkilo","style":"position:relative;"},"children":[{"type":"text","value":"Puhelinluettelo käyttämään luokkaa Henkilo"},{"type":"element","tagName":"a","properties":{"href":"#puhelinluettelo-kayttamaan-luokkaa-henkilo","ariaLabel":"puhelinluettelo kayttamaan luokkaa henkilo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta koodiasi siten, että se toimii käyttäjän näkökulmasta täysin samoin kuin aiemmin, mutta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" tallettaakin henkilöt sisäisesti käyttäen luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" olioita. Käytännössä siis oliomuuttujana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__henkilot"}]},{"type":"text","value":" tulee olla sanakirja, johon listojen sijaan talletetaan henkilö-olioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"VAROITUS:"}]},{"type":"text","value":" kun teet koodiin tämän tehtävän kaltaista rakenteellista muutosta, etene pienin askelin. Älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"varma keino ajautua pahoihin ongelmiin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sopiva pieni askel nyt voi olla se, että tarkastat ensin erikseen luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" toimivuuden. Esimerkiksi seuraavan koodin tulee toimia kuten olettaa saattaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"02-123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävässä ei tarkisteta, millainen tulostusasu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_tiedot"}]},{"type":"text","value":"-metodin palauttamalla tuloksella on, mutta varmista ettei koodi aiheuta virheitä, ja että tulos on järkevä. Kun olet 100% varma, että kaikki toimii luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" osalta, voit edetä varmistamaan, että kaikki toimii edelleen entiseen tapaan käyttöliittymää käytettäessä."}]},{"type":"element","tagName":"h2","properties":{"id":"osoitteen-lisaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Osoitteen lisääminen"},{"type":"element","tagName":"a","properties":{"href":"#osoitteen-lisaaminen","ariaLabel":"osoitteen lisaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna nyt sovellusta siten, että puhelinluetteloon on mahdollista tallettaa myös henkilöiden osoitteet. Ohjelman tulisi toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 nimen lisäys\n2 haku\n3 osoitteen lisäys"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Emilia"}]},{"type":"text","value":"\nosoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Viherlaaksontie 7, Espoo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\n02-123456\nosoite ei tiedossa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Emilia"}]},{"type":"text","value":"\nnumero ei tiedossa\nViherlaaksontie 7, Espoo"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nosoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Linnankatu 75, Turku"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: 2\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\n02-123456\nLinnankatu 75, Turku"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Wilhelm"}]},{"type":"text","value":"\nosoite ei tiedossa\nnumero ei tiedossa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"VAROITUS ja vihje:"}]},{"type":"text","value":" kuten tehtävän edellisessä osassa sanottiin, älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"varma keino ajautua pahoihin ongelmiin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Varmista ensin että voit lisätä osoitteita luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" ja kun olet 100% varma, että se toimii, voit laajentaa sovelluksen käyttöliittymää uuden toiminnallisuuden osalta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"erinaisia-huomioita","style":"position:relative;"},"children":[{"type":"text","value":"Erinäisiä huomioita"},{"type":"element","tagName":"a","properties":{"href":"#erinaisia-huomioita","ariaLabel":"erinaisia huomioita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Puhelinluetteloesimerkki noudattaa rakenteeltaan melko klassisia hyvän olio-ohjelmoinnin periaatteita. Kantavana ideana on siis ohjelman eri vastuualueiden jaottelu erillisiin luokkiin ja metodeihin. Eräs suurimmista motiiveista tällaiselle jaottelulle on monimutkaisuuden hallinta. Toinen tärkeä syy on se, että oikein tehty koodin jaottelu - tai "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"modularisointi"}]},{"type":"text","value":" kuten ammattijargon asian ilmaisee - tekee koodista potentiaalisesti helpomman ylläpitää ja laajentaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oikeissa ohjelmistoissa ylivoimaisesti suurimman kustannuserän aiheuttaa juuri ylläpito (eli bugien korjailu) sekä ohjelman laajentaminen, joten tällä seikalla on taloudellisesti erittäin suuri merkitys."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nostetaan esimerkistä esiin vielä pari tärkeää seikkaa. Koodi ilmentää hyvin sitä, miten sovelluslogiikan varsinainen ydin on eriytetty sekä käyttöliittymästä, että datan tallettamisesta. Tämä on tärkeää muutamastakin syystä. Ensinnäkin se mahdollistaa koodin testailun pienemmissä yksiköissä, luokka ja metodi kerrallaan. Toisaalta koska sovelluslogiikka ei nyt riipu käyttöliittymästä tai tiedon talletustavasta, on esim. käyttöliittymää mahdollista muuttaa (ainakin johonkin pisteeseen asti) rikkomatta muuta sovellusta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostojen käsittelyn suhteen kannattaa myös huomata se, että ohjelma lukee tiedostoa ainoastaan kerran, käynnistysvaiheessa. Tämän jälkeen kaikki tieto säilytetään ohjelman muuttujissa. Ohjelma tallettaa tiedot kokonaisuudessaan, eli käytännössä uudelleenkirjoittaa tiedoston joka kerta kokonaan uudestaan. Tiedostojen käsittely kannattaa lähes kaikissa tapauksissa tehdä näin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvän koodin kirjoittamisesta kerrotaan lisää esimerkiksi Robert Martinin mainiossa kirjassa "},{"type":"element","tagName":"a","properties":{"href":"https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Clean Code"}]},{"type":"text","value":". Kirjan koodiesimerkit on kuitenkin toteutettu Javalla, eli esimerkkien lukeminen saattaa tässä vaiheessa olla vielä varsin työlästä. Paneudumme ylläpidettävyydeltään ja laajennettavuudeltaan laadukkaan koodin toteuttamiseen tarkemmin kursseilla "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024742-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotekniikka"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024909-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotuotanto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvän olio-ohjelmoinnin periaatteiden mukaisen koodin kirjoittamisella on myös hintansa. Koodia tulee todennäköisesti enemmän kuin jos sama ongelma ratkaistaisiin yhteen pötköön kirjoitetulla spagettikoodilla. Ohjelmoijan onkin aina ratkaistava se, minkälainen lähestymistapa on paras kuhunkin tilanteeseen. Joskus voi olla vain parasta häkkeröidä kasaan nopeasti jotain joka toimii nyt. Jos taas on odotettavissa, että samaa koodia tullaan jatkossa laajentamaan. joko koodarin itsensä tai jonkun muun toimesta, on todennäköisesti kannattavaa panostaa koodin luettavuuteen ja jäsentämiseen jossain määrin jo alkuvaiheissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan vielä isomman ohjelmakokonaisuuden toteuttamista yhden ohjelmointitehtävän verran."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Opintorekisteri","tmcname":"osa10-12_opintorekisteri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee interaktiivinen ohjelma, jonka avulla voit pitää kirjaa opintomenestyksestäsi. Sovelluksen rakenteen saat päättää itse, mutta nyt on hyvä tilaisuus harjoitella Puhelinluettelo-esimerkin kaltaisen oliorakenteen muodostamista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 lisää suoritus\n2 hae suoritus\n3 tilastot\n0 lopetus"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\nOhpe (5 op) arvosana 3"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\nOhpe (5 op) arvosana 5"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\nOhpe (5 op) arvosana 5"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Java-ohjelmointi"}]},{"type":"text","value":"\nei suoritusta"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tira"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tilpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Lapio"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Lama"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nsuorituksia 5 kurssilta, yhteensä 29 opintopistettä\nkeskiarvo 3.4\narvosanajakauma\n5: xx\n4: x\n3:\n2: x\n1: x"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama huomio: kultakin kurssilta tallentuu ainoastaan yksi arvosana. Arvosanaa voi korottaa, mutta se ei voi laskea."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävästä on tarjolla kaksi tehtäväpistettä. Ensimmäisen pisteen saa jos toiminnot 1 ja 2 sekä lopetus toimivat. Toisen pisteen saa jos myös toiminto 3 on toteutettu."}]}]},{"type":"element","tagName":"h2","properties":{"id":"epilogi","style":"position:relative;"},"children":[{"type":"text","value":"Epilogi"},{"type":"element","tagName":"a","properties":{"href":"#epilogi","ariaLabel":"epilogi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palataan vielä hetkeksi tarkastelemaan puhelinluetteloesimerkkiä, ja sen käyttöliittymän toteuttavaa luokkaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":"-olio pitää siis sisällään sekä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":"-olion että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"text","value":"-olion. Jos olisimme ammattikoodareita, tekisimme sovellukseen pienen muutoksen. Nyt nimittäin se, että sovellus käyttää nimenomaan tiedostoa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luettelo.txt"}]},{"type":"text","value":" tallentamaan luettelon tiedot, on sovelluksen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"käyttöliittymän"}]},{"type":"text","value":" kannalta täysin turha deltaji. Jos tiedosto haluttaisiin vaihtaa, edellyttäisi se muutosta luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" koodiin. Tämä taas ei ole hyvä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"separation of concerns"}]},{"type":"text","value":" -periaatetta ajatellen, sillä puhelinluettelon tallentaminen ei kuulu ollenkaan käyttöliittymästä huolehtivan luokan vastuisiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi vaihtoehto olisikin luoda tiedostokäsittelijä muualla ja antaa se "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":"-oliolle, esimerkiksi konstruktorin parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luodaan tallennuksen hoitava olio"}]},{"type":"text","value":"\ntallennuspalvelu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja annetaan se PuhelinluetteloSovellus-oliolle konsturuktorin parametrina"}]},{"type":"text","value":"\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tallennuspalvelu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin on saatu poistettua luokalta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"turha riippuvuus"}]},{"type":"text","value":" käsiteltävän tiedoston nimeen. Jos tiedoston nimi muuttuu, ei luokan koodiin tarvitse koskea ollenkaan. Riittää ainoastaan, että oliolle annetaan hieman erilainen konstruktoriparametri:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# vaihdetaan tiedostoa"}]},{"type":"text","value":"\ntallennuspalvelu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_luettelotiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tallennuspalvelu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä sama tekniikka mahdollistaa sen, että siirrytäänkin tallentamaan puhelinluettelo tiedoston sijaan esimerkiksi internetissä olevaan pilvipalveluun. On vain kirjoitettava pilvipalvelua käyttävä luokka, joka tarjoaa puhelinluettelosovellukselle samanlaiset metodit kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"text","value":". Tämän luokan olio voidaan antaa sovellukselle, ilman että sovelluksen koodista tulee muuttaa riviäkään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"InternetTallennin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi joka tallentaa luettelon tiedot internetissä olevaan pilvipalveluun"}]},{"type":"text","value":"\n\ntallennuspalvelu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" InternetTallennin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"amazon-cloud\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mluukkai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"passwrd\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tallennuspalvelu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten aiemmin todettiin, on tämän kaltaisten tekniikoiden käytöllä oma hintansa: koodia tulee enemmän, ja ohjelmoijan tulee harkita milloin se hinta kannattaa maksaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä esitelty tekniikka (joka kulkee ammattijargonissa nimellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"dependency injection"}]},{"type":"text","value":"), missä oliolle annetaan ulkopuolelta käsin sen tarvitsema "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"riippuvuus"}]},{"type":"text","value":" (eli käytännössä jokin muu olio) on erittäin tyypillinen kikka ammattimaisessa koodauksessa, muun muassa siksi, että se helpottaa ohjelmistojen laajentamista sekä niiden automatisoitua testaamista. Jatkamme teeman käsittelyä kursseilla "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024742-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotekniikka"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024909-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotuotanto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"adf5276f-057a-5ac0-85b1-024443782145"},"children":[]}]}]},"html":"

    Tässä osiossa

      \n
    • Käydään läpi hieman laajemman sovelluksen tekemiseen liittyviä seikkoja
    • \n
    • Erityinen fokus on sovelluksen eri osa-alueiden (käyttöliittymä, sovelluslogiikka ja tiedostojen käsittely) eriyttämisessä
    • \n
    • Harjoitellaan laajemman sovelluksen toteuttamista itse
    • \n

    Ohjelmoinnin perusteiden ja jatkokurssin aikana on esitelty suuri määrä Pythonin tarjoamia ominaisuuksia.

    Ohjelmoinnin perusteissa tutustuttiin kielen kontrollirakenteisiin (while ja for), funktioihin sekä perustietorakenteisiin eli listaan ja sanakirjaan. Näytti jo hetken siltä että muuta ei tarvitakaan. Periaatteessa näin onkin: ohjelmoinnin perusteiden kalustolla pystyy ilmaisemaan kaiken mikä Pythonilla on ylipäätään ilmaistavissa.

    Jatkokurssin alussa, eli kurssin osassa 8 pakkaa ruvettiin kuitenkin hämmentämään tuomalla mukaan luokat ja oliot. Milloin ja ylipäätään miksi olioita tulisi käyttää jos kurssin osien 1-7 kalusto on jo ilmaisuvoimaltaan riittävä?

    Monimutkaisuuden hallintaa

    Monissa tilanteissa voi ja varmasti kannattaakin olla käyttämättä oliota. Esimerkiksi jos koodataan pieni \"kertakäyttöinen\" apuohjelma, ei ehkä ole mitään tarvetta olioille. Tilanne alkaa muuttua, kun siirrytään hieman suuremman kokoluokan ohjelmiin.

    Kun ohjelma laajenee, alkaa sen sisältämien yksityiskohtien määrä nousta hallitsemattomaksi, ellei ohjelmaa jäsennellä jollain järkevällä tavalla. Itse asiassa jo ohjelmoinnin perusteiden tehtävissä oli havaittavissa varsin monimutkaisia ratkaisuja, joiden ymmärtämisessä jopa alan ammattilaisilla on vaikeuksia.

    Käsite Separation of concerns on ollut jo vuosikymmeniä eräs ohjelmoinnin ja koko tietojenkäsittelyn keskeisiä teemoja. Wikipedian mukaan käsitteellä tarkoitetaan seuraavaa

    Separation of concerns is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern. A concern is a set of information that affects the code of a computer program

    Kyse on ohjelman suunnittelua ohjaavasta periaatteesta, jonka mukaan ohjelmakoodi jäsennellään pienempiin osiin, joista kukin huolehtii vain omasta \"tontistaan\". Kuhunkin osaan tehdyt muutokset vaikuttavat - periaatteen mukaisesti - vain rajattuun alueeseen ohjelmassa, joten ohjelmien väistämätöntä monimutkaisuutta on helpompi hallita.

    Funktiot ovat yksi mekanismi tämän tavoitteen saavuttamiseen. Sen sijaan että ohjelma kirjoitetaan yhtenä isona kokonaisuutena, koostetaan se pienistä funktioista, joista kukin ratkaisee pienen osan ongelmasta.

    Olio-ohjelmointi tarjoaa funktioita jossain määrin ilmaisuvoimaisemman ja joidenkin mielestä \"paremman\" tavan saavuttaa sama tavoite. Kuten olemme nähneet, olioiden avulla on mahdollista koota samaan asiaan liittyvä data ja sitä käsittelevä koodi, eli olion metodit, samaan paikkaan. Oliot tarjoavat myös mekanismin käsittelemänsä datan kapselointiin, joka taas tavallaan on keino piilottaa \"turhia\" yksityiskohtia olion ulkopuoliselta osalta ohjelmaa.

    Esimerkki: puhelinluettelo

    Miten ohjelma sitten tulisi jakaa luokkiin ja olioihin? Kysymys ei ole helppo, ja asiaa on helpompi pohdiskella konkreettisen esimerkin kautta. Toteutetaan esimerkkinä olio-ohjelmointia hyödyntäen hieman samantyylinen puhelinluettelo, joka oli aiheena ohjelmoinnin perusteiden viidennen osan tehtävässä.

    Separation of concerns -periaatetta noudatellen koodi tulee jakaa osiin, joista kukin käsittelee omaa asiaansa. Olio-ohjelmoinnin piirissä tätä periaatetta ilmentää niin sanottu yhden vastuun (single responsibility) -periaate. Ei mennä sen tarkemmin periaatteen yksityiskohtiin, mutta maalaisjärjellä ajatellen periaatteen nimi jo kertoo mistä on kyse: yksittäisen luokan olioiden tulisi olla vastuussa yhdestä asiasta.

    Olioita käytettäessä ohjelmointiongelman \"reaalimaailman asioita\" vastaa yleensä oma luokkansa. Puhelinluettelon tapauksessa tälläisiä reaalimaailman asioita olisivat esimerkiksi:

    Näistä nimi ja puhelinnumero ovat kenties liian vähäpätöisiä ollakseen omia luokkiaan, mutta henkilö voisi hyvinkin olla oma luokkansa, jonka vastuulla on sitoa yhteen tietty nimi ja siihen liittyvät puhelinnumerot.

    Myös puhelinluettelo itsessään on potentiaalinen luokka, sen vastuulla on hallinnoida eri henkilöiden tietoja.

    Nämä kaksi luokkaa eli puhelinluettelo ja henkilö muodostavat sovelluksen ytimen, eli niin sanotun sovelluslogiikan. Näiden lisäksi ohjelma tarvitsee muutaman muunkin luokan.

    Käyttäjän kanssa tapahtuvasta interaktiosta huolehtivaa luokkaa ei kannata sotkea sovelluslogiikan kanssa samaan luokkaan - sehän on kokonaan oma vastuunsa. Eli sovelluslogiikan luokkien lisäksi ohjelmalle tulee myös luokka, joka huolehtii ohjelman käyttöliittymästä.

    Talletamme puhelinluettelon tiedot tiedostoon. Myös tiedoston käsittely on selkeästi oma vastuunsa, joten tulemme sisällyttämään siihen käytettävän koodin omaan luokkaansa.

    Kun ohjelman luokkarakenne alkaa pikkuhiljaa hahmottua, nousee kysymykseksi se, mistä ohjelmointi kannattaa aloittaa. Usein paras tapa aloittaa on pienellä palalla sovelluslogiikka.

    Vaihe 1: sovelluslogiikan runko

    Aloitetaan luokasta Puhelinluettelo. Runko voisi näyttää seuraavalta:

    class Puhelinluettelo:\n    def __init__(self):\n        self.__henkilot = []\n\n    def lisaa_numero(self, nimi: str, numero: str):\n        pass\n\n    def hae_numerot(self, nimi: str):\n        pass\n

    Luokka pitää siis sisällään listan henkilöitä ja tarjoaa metodit tietojen lisäämiseen ja hakemiseen.

    Jokaiseen henkilöön voi liittyä useita numeroita, joten toteutetaan luettelon sisäinen tila sanakirjan avulla, koska sanakirjasta on helppo hakea nimen perusteella. Sanakirjaan on helppo tallettaa suoraan myös nimeen liittyvät numerot, joten ainakaan tässä vaiheessa ei tarvita erillistä luokkaa yksittäisen henkilön tietojen tallettamiseen.

    Luokka laajenee seuraavasti. Mukana on myös pieni toiminnan varmistava koodinpätkä:

    class Puhelinluettelo:\n    def __init__(self):\n        self.__henkilot = {}\n\n    def lisaa_numero(self, nimi: str, numero: str):\n        if not nimi in self.__henkilot:\n            # henkilöön liittyy lista puhelinnumeroja\n            self.__henkilot[nimi] = []\n\n        self.__henkilot[nimi].append(numero)\n\n    def hae_numerot(self, nimi: str):\n        if not nimi in self.__henkilot:\n            return None\n\n        return self.__henkilot[nimi]\n\n# testikoodi\nluettelo = Puhelinluettelo()\nluettelo.lisaa_numero(\"Erkki\", \"02-123456\")\nprint(luettelo.hae_numerot(\"Erkki\"))\nprint(luettelo.hae_numerot(\"Emilia\"))

    Testikoodin tulostus on seuraava:

    ['02-123456']\nNone

    Metodi hae_numerot siis palauttaa arvon None, jos henkilö ei löydy luettelosta, jos henkilö löytyy, palautetaan lista joka sisältää henkilön puhelinnumerot.

    Ohjelmoidessa mitä tahansa ohjelmaa kannattaa aina kokeilla, että koodi toimii kuten sen olettaa toimivan, ennen kun etenee muuhun koodiin.\nUsein tämä testikoodi on poisheitettävää koodia, ja sikäli voisi ajatella testaamisesta olevan ylimääräistä vaivaa. Lähes 100% tapauksissa ei näin kuitenkaan ole.

    Koodiin tullut bugi kannattaa saada kiinni ja korjata niin pian kuin mahdollista. Jos koodin toimivuuden varmistaa lähes jokaisen uuden koodirivin jälkeen, on debuggaus ja korjaaminen yleensä vaivatonta ja nopeaa, koska tällöin voi olla melko varma siitä, että ongelma johtuu hetki sitten lisätyistä koodiriveistä. Jos taas koodia testataan vasta sen jälkeen kun siihen on lisätty kymmeniä koodirivejä, on virhelähteitä moninkertaisesti.

    Vaihe 2: käyttöliittymän runko

    Kun sovelluslogiikan ydintoiminnallisuus on kunnossa, voidaan edetä sovelluksen tekstikäyttöliittymään. Tehdään sitä varten oma luokka PuhelinluetteloSovellus, jonka runko on seuraava:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Luokka saattaa vaikuttaa vielä hämmentävältä, mutta tässä luodaan tosiaan vasta runko toiminnalle. Konstruktori luo puhelinluettelon, jonka olio pitää sisällään. Metodi suorita(self) käynnistää sovelluksen tekstikäyttöliittymän, jonka ytimen muodostaa while-silmukka, joka kyselee käyttäjältä mikä komento halutaan suorittaa. Ennen toistolauseeseen menemistä ohjelma tulostaa käyttöohjeet, kutsumalla metodia ohje(self). Varsinaiset toiminnot toteutetaan seuraavaksi.

    Laajennetaan käyttöliittymää siten, että luetteloon voidaan lisätä uusia tietoja:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n        print(\"1 lisäys\")\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n            elif komento == \"1\":\n                nimi = input(\"nimi: \")\n                numero = input(\"numero: \")\n                self.__luettelo.lisaa_numero(nimi, numero)\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Jos valittu komento on tietojen lisäys (eli komento on 1), kysyy käyttöliittymä nimen ja numeron käyttäjältä, ja lisää tiedot puhelinluetteloon kutsumalla sopivaa luettelon metodia.

    Käyttöliittymä on siis vastuussa ainoastaan siitä, että se kommunikoi käyttäjän kanssa. Puhelinnumeron säilöminen nimen yhteyteen on jätetty kokonaisuudessan Puhelinluettelo-olion vastuulle.

    Käyttöliittymän rakennetta on mahdollista vielä parannella siten, että tietojen lisäys eriytetään omaan metodiinsa lisays(self):

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n        print(\"1 lisäys\")\n\n    # eriytetään uusien tietojen lisääminen omaksi metodiksi\n    def lisays(self):\n        nimi = input(\"nimi: \")\n        numero = input(\"numero: \")\n        self.__luettelo.lisaa_numero(nimi, numero)\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n            elif komento == \"1\":\n                self.lisays()\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Erillisen metodin käyttämisen taustallakin on sama separation of concerns -periaate. Sen sijaan että koko käyttöliittymän toiminnallisuus sijoitettaisiin ison while-silmukan sisälle, tehdään jokaisesta yksittäisestä toiminnosta oma metodinsa. Tämä helpottaa kokonaisuuden hallintaa. Jos halutaan muokata tietojen lisäämisen toiminnallisuutta, tiedetään heti missä päin relevantti koodi sijaitsee.

    Lisätään käyttöliittymään toiminnallisuus numeroiden hakemista varten. Sijoitetaan sen hoitava koodi heti omaan metodiinsa:

    \nclass PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n        print(\"1 lisäys\")\n        print(\"2 haku\")\n\n    def lisays(self):\n        nimi = input(\"nimi: \")\n        numero = input(\"numero: \")\n        self.__luettelo.lisaa_numero(nimi, numero)\n\n    def haku(self):\n        nimi = input(\"nimi: \")\n        numerot = self.__luettelo.hae_numerot(nimi)\n        if numerot == None:\n            print(\"numero ei tiedossa\")\n            return\n        for numero in numerot:\n            print(numero)\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n            elif komento == \"1\":\n                self.lisays()\n            elif komento == \"2\":\n                self.haku()\n            else:\n                self.ohje()\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Sovelluksen perusversio toimii nyt. Seuraavassa esimerkki sovelluksen käytöstä:

    komennot:\n0 lopetus\n1 lisäys\n2 haku

    komento: 1\nnimi: Erkki\nnumero: 02-123456

    komento: 1\nnimi: Erkki\nnumero: 045-4356713

    komento: 2\nnimi: Erkki\n02-123456\n045-4356713

    komento: 2\nnimi: Emilia\nnumero ei tiedossa

    komento: 0

    Koodia on aika paljon, todennäköisesti enemmän kuin jos kaikki olisi ohjelmoitu yhteen pötköön. Koodin rakenne on kuitenkin siistihkö, ja koodin laajentamisenkaan ei pitäisi olla kovin hankalaa.

    Vaihe 3: tietojen haku tiedostosta

    Laajennetaan ohjelmaa siten, että se lataa käynnistäessään puhelinluettelon tiedostosta, joka on seuraavaa muotoa:

    Erkki;02-1234567;045-4356713\nEmilia;040-324344

    Tiedoston käsittely on selkeästi oma vastuualueensa, eli toteutetaan sitä varten oma luokka:

    class Tiedostonkasittelija():\n    def __init__(self, tiedosto):\n        self.__tiedosto = tiedosto\n\n    def lataa(self):\n        nimet = {}\n        with open(self.__tiedosto) as f:\n            for rivi in f:\n                osat = rivi.strip().split(';')\n                nimi, *numerot = osat\n                nimet[nimi] = numerot\n\n        return nimet

    Konstruktorin parametrina annetaan tiedoston nimi. Metodi lataa(self) lukee tiedoston, ja pilkkoo sen rivit sanakirjaksi, missä avain on nimi ja arvona ovat nimeen liittyvät numerot.

    Metodi käyttää erästä Pythonin kätevää ominaisuutta: listasta on mahdollista ottaa ensin yksittäisiä alkioita erikseen nimettyinä muuttujina, sekä loput alkiot uutena listana, kuten seuraavasta esimerkistä käy ilmi. Luvusta 6 muistamme että merkkijonojen metodi split tuottaa nimenomaan listan.

    lista = [1, 2, 3, 4, 5]\neka, toka, *loput = lista\nprint(eka)\nprint(toka)\nprint(loput)

    1\n2\n[3, 4, 5]

    Sijoituslauseen viimeisen muuttujan nimen edessä on *, ja se tarkoittaa, että viimeiseen muuttujaan kerätään taulukosta loput, eli kolmas ja sitä seuraavat alkiot.

    Tiedostonkäsittelijääkin kannattaa ehdottomasti testata, ennen kuin se pultataan muuhun koodiin:

    t = Tiedostonkasittelija(\"luettelo.txt\")\nprint(t.lataa())

    {'Erkki': ['02-1234567', '045-4356713'], 'Emilia': ['040-324344']}

    Kun tiedostosta lukemisen todetaan toimivan, liitetään koodi muuhun ohjelmaan. Looginen paikka tiedoston lukemiseen on se hetki kun sovellus käynnistyy, eli luokan PuhelinluetteloSovellus konstruktori:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = Tiedostonkasittelija(\"luettelo.txt\")\n\n        # listään tiedostossa olevat nimet luetteloon\n        for nimi, numerot in self.__tiedosto.lataa().items():\n            for numero in numerot:\n                self.__luettelo.lisaa_numero(nimi, numero)\n\n    # muu koodi

    Tiedoston lukua osana PuhelinLuetteloSovellusta kannattaa myös testata. Kun on varmistettu, että tiedoston sisältö saadaan ladattua luetteloon, voidaan edetä viimeiseen vaiheeseen.

    Vaihe 4: tietojen talletus tiedostoon

    Viimeistellään ohjelman alustava versio vielä siten, että se tallentaa lopetettaessa puhelinluettelon takaisin tiedostoon.

    Tätä varten luokkaa Puhelinluettelo tulee laajentaa siten, että sieltä saadaan tallennusta varten kaikki tiedot ulos:

    class Puhelinluettelo:\n    def __init__(self):\n        self.__henkilot = {}\n\n    # ...\n\n    # palautetaan tiedostoon tallentamista varten kaikki tiedot\n    def kaikki_tiedot(self):\n        return self.__henkilot

    Tallennus on luonnollisesti luokan Tiedostonkasittelija vastuulla, eli laajennetaan sitä metodilla talleta, joka saa parametriksi puhelinluetteloa edustavan sanakirjan:

    class Tiedostonkasittelija():\n    def __init__(self, tiedosto):\n        self.__tiedosto = tiedosto\n\n    def lataa(self):\n        # ...\n\n    def talleta(self, luettelo: dict):\n        with open(self.__tiedosto, \"w\") as f:\n            for nimi, numerot in luettelo.items():\n                rivi = [nimi] + numerot\n                f.write(\";\".join(rivi) + \"\\n\")

    Tallennus tapahtuu samalla kun sovelluksen käyttö lopetetaan. Tehdään tätäkin tarkoitusta varten oma metodinsa ja kutsutaan sitä sopivassa kohdassa:

    \nclass PuhelinluetteloSovellus:\n    # muu koodi\n\n    # metodi, joka suoritetaan lopetettaessa sovelluksen käyttö\n    def lopetus(self):\n        self.__tiedosto.talleta(self.__luettelo.kaikki_tiedot())\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n\n                self.lopetus()\n                break\n            elif komento == \"1\":\n                self.lisays()\n            elif komento == \"2\":\n                self.haku()\n            else:\n                self.ohje()

    Tässä tehtävässä tehdään pieni laajennus puhelinluettelosovellukseen. Yllä kehitetty koodi löytyy tehtäväpohjasta. Laajenna ratkaisuasi komennolla, joka mahdollistaa nimen etsimisen numeron perusteella. Laajennuksen jälkeen sovelluksen pitäisi toimia seuraavasti:

    komennot:\n0 lopetus\n1 lisäys\n2 haku\n3 haku numeron perusteella

    komento: 1\nnimi: Erkki\nnumero: 02-123456

    komento: 1\nnimi: Erkki\nnumero: 045-4356713

    komento: 3\nnumero: 02-123456\nErkki

    komento: 3\nnumero: 0100100\ntuntematon numero

    komento: 0

    Tee laajennus sitten, että kunnioitat ohjelman rakennetta. Eli lisää luokkaan PuhelinluetteloSovellus uutta ominaisuutta varten sopiva apumetodi sekä oma haara while-silmukkaan. Lisää myös sovelluslogiikkaan eli luokkaan Puhelinluettelo metodi, joka mahdollistaa nimen hakemisen numeron perusteella.

    Olioita sanakirjassa

    Seuraavassa tehtävässä on tarkoitus muuttaa puhelinluetteloa siten, että sanakirjan arvoksi talletetaan tavallisten listojen sijaan olioita.

    Periaatteessa asiassa ei ole mitään ihmeellistä, mutta kurssilla ei vielä ole näin tehty, joten tutkitaan ennen tehtävää hieman samantapaista, mutta yksinkertaisempaa esimerkkiä.

    Tehdään sovellus, jonka avulla voidaan pitää kirjaa siitä, kuinka monta tehtävää opiskelijat ovat tehneet kurssin aikana. Kunkin opiskelijan tehtävämäärä lasketaan yksinkertaisen olion avulla:

    class Tehtavalaskuri:\n    def __init__(self):\n        self.__tehtavia = 0\n\n    def merkkaa(self):\n        self.__tehtavia += 1\n\n    def tehtyja(self):\n        return self.__tehtavia

    Luokkaa käyttävä pääohjelma on seuraavassa:

    opiskelijat = {}\n\nprint(\"merkataan tehtäviä\")\nwhile True:\n    nimi = input(\"opiskelija: \")\n    if len(nimi) == 0:\n        break\n\n    # luodaan tarvittaessa olio tehtävämäärän laskemista varten\n    if not nimi in opiskelijat:\n        opiskelijat[nimi] = Tehtavalaskuri()\n\n    # merkataan tehdyksi nimeä vastaavaan olioon\n    opiskelijat[nimi].merkkaa()\n\nprint()\nprint(\"tehdyt tehtävät:\")\n\nfor opiskelija, tehtavat in opiskelijat.items():\n    print(f\"{opiskelija} tehtäviä {tehtavat.tehtyja()} kpl\")

    Käyttöesimerkki

    merkataan tehtäviä\nopiskelija: pekka\nopiskelija: sara\nopiskelija: antti\nopiskelija: sara\nopiskelija: juuso\nopiskelija: juuso\nopiskelija: antti\nopiskelija: sara\nopiskelija:

    tehdyt tehtävät:\npekka tehtäviä 1 kpl\nantti tehtäviä 2 kpl\nsara tehtäviä 3 kpl\njuuso tehtäviä 2 kpl

    Esimerkissä on parikin huomionarvoista seikkaa. Kun opiskelijan nimi syötetään, tarkastetaan aina ensin onko opiskelijaa vastaava olio jo sanakirjassa. Jos olioa ei ole, luodaan se:

    if not nimi in opiskelijat:\n    opiskelijat[nimi] = Tehtavalaskuri()

    Tämän jälkeen tiedetään että olio on olemassa. Se on joko luotu juuri äsken tai jo aiemmalla silmukan kierroksella. Haetaan olio sanakirjasta, ja kutsutaan sen metodia merkkaa:

    opiskelijat[nimi].merkkaa()

    Rivillä tapahtuu oikeastaan kaksi asiaa, ja sama voitaisiin kirjoittaa siten, että sanakirjasta haettu olio sijoitettaisiin apumuuttujaan:

    opiskelijan_laskuri = opiskelijat[nimi]\nopiskelijan_laskuri.merkkaa()

    Huomaa, että vaikka olio sijoitettaisiin apumuuttujaan, se ei tarkoita että olio poistuisi sanakirjasta tai oliosta syntyisi kopio. Apumuuttuja on ainoastaan viite sanakirjassa olevaan olioon.

    Esimerkin koodia kannattaa ehdottomasti kokeilla visualisaattorissa jos ei ole aivan 100% varma siitä, miten koodi toimii.

    Tässä tehtävässä laajennetaan puhelinluettelosovellusta siten, että henkilöihin voi liittyä myös osoite. Yksinkertaisuuden vuoksi koodista on kuitenkin poistettu tiedostoon tallentaminen. Myös muutama metodi on uudelleennimetty vastaamaan paremmin laajennuksen jälkeistä tilannetta.

    Luokka henkilön tietojen esittämiseen

    Siirretään henkilön tietojen (eli puhelinnumerojen sekä osoitteen) esittäminen oman luokkansa Henkilo vastuulle. Toteuta luokka siten, että se toimii seuraavasti:

    henkilo = Henkilo(\"Erkki\")\nprint(henkilo.nimi())\nprint(henkilo.numerot())\nprint(henkilo.osoite())\nhenkilo.lisaa_numero(\"040-123456\")\nhenkilo.lisaa_osoite(\"Mannerheimintie 10 Helsinki\")\nprint(henkilo.numerot())\nprint(henkilo.osoite())

    Erkki\n[]\nNone\n['040-123456']\nMannerheimintie 10 Helsinki

    Puhelinluettelo käyttämään luokkaa Henkilo

    Muuta koodiasi siten, että se toimii käyttäjän näkökulmasta täysin samoin kuin aiemmin, mutta luokka Puhelinluettelo tallettaakin henkilöt sisäisesti käyttäen luokan Henkilo olioita. Käytännössä siis oliomuuttujana __henkilot tulee olla sanakirja, johon listojen sijaan talletetaan henkilö-olioita.

    VAROITUS: kun teet koodiin tämän tehtävän kaltaista rakenteellista muutosta, etene pienin askelin. Älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on varma keino ajautua pahoihin ongelmiin.

    Sopiva pieni askel nyt voi olla se, että tarkastat ensin erikseen luokan Puhelinluettelo toimivuuden. Esimerkiksi seuraavan koodin tulee toimia kuten olettaa saattaa:

    luettelo = Puhelinluettelo()\nluettelo.lisaa_numero(\"Erkki\", \"02-123456\")\nprint(luettelo.hae_tiedot(\"Erkki\"))\nprint(luettelo.hae_tiedot(\"Emilia\"))

    Tehtävässä ei tarkisteta, millainen tulostusasu hae_tiedot-metodin palauttamalla tuloksella on, mutta varmista ettei koodi aiheuta virheitä, ja että tulos on järkevä. Kun olet 100% varma, että kaikki toimii luokan Puhelinluettelo osalta, voit edetä varmistamaan, että kaikki toimii edelleen entiseen tapaan käyttöliittymää käytettäessä.

    Osoitteen lisääminen

    Laajenna nyt sovellusta siten, että puhelinluetteloon on mahdollista tallettaa myös henkilöiden osoitteet. Ohjelman tulisi toimia seuraavasti:

    komennot:\n0 lopetus\n1 nimen lisäys\n2 haku\n3 osoitteen lisäys

    komento: 1\nnimi: Erkki\nnumero: 02-123456

    komento: 3\nnimi: Emilia\nosoite: Viherlaaksontie 7, Espoo

    komento: 2\nnimi: Erkki\n02-123456\nosoite ei tiedossa

    komento: 2\nnimi: Emilia\nnumero ei tiedossa\nViherlaaksontie 7, Espoo

    komento: 3\nnimi: Erkki\nosoite: Linnankatu 75, Turku

    komento: 2\nnimi: Erkki\n02-123456\nLinnankatu 75, Turku

    komento: 2\nnimi: Wilhelm\nosoite ei tiedossa\nnumero ei tiedossa

    komento: 0

    VAROITUS ja vihje: kuten tehtävän edellisessä osassa sanottiin, älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on varma keino ajautua pahoihin ongelmiin.

    Varmista ensin että voit lisätä osoitteita luokkaan Puhelinluettelo ja kun olet 100% varma, että se toimii, voit laajentaa sovelluksen käyttöliittymää uuden toiminnallisuuden osalta.

    Erinäisiä huomioita

    Puhelinluetteloesimerkki noudattaa rakenteeltaan melko klassisia hyvän olio-ohjelmoinnin periaatteita. Kantavana ideana on siis ohjelman eri vastuualueiden jaottelu erillisiin luokkiin ja metodeihin. Eräs suurimmista motiiveista tällaiselle jaottelulle on monimutkaisuuden hallinta. Toinen tärkeä syy on se, että oikein tehty koodin jaottelu - tai modularisointi kuten ammattijargon asian ilmaisee - tekee koodista potentiaalisesti helpomman ylläpitää ja laajentaa.

    Oikeissa ohjelmistoissa ylivoimaisesti suurimman kustannuserän aiheuttaa juuri ylläpito (eli bugien korjailu) sekä ohjelman laajentaminen, joten tällä seikalla on taloudellisesti erittäin suuri merkitys.

    Nostetaan esimerkistä esiin vielä pari tärkeää seikkaa. Koodi ilmentää hyvin sitä, miten sovelluslogiikan varsinainen ydin on eriytetty sekä käyttöliittymästä, että datan tallettamisesta. Tämä on tärkeää muutamastakin syystä. Ensinnäkin se mahdollistaa koodin testailun pienemmissä yksiköissä, luokka ja metodi kerrallaan. Toisaalta koska sovelluslogiikka ei nyt riipu käyttöliittymästä tai tiedon talletustavasta, on esim. käyttöliittymää mahdollista muuttaa (ainakin johonkin pisteeseen asti) rikkomatta muuta sovellusta.

    Tiedostojen käsittelyn suhteen kannattaa myös huomata se, että ohjelma lukee tiedostoa ainoastaan kerran, käynnistysvaiheessa. Tämän jälkeen kaikki tieto säilytetään ohjelman muuttujissa. Ohjelma tallettaa tiedot kokonaisuudessaan, eli käytännössä uudelleenkirjoittaa tiedoston joka kerta kokonaan uudestaan. Tiedostojen käsittely kannattaa lähes kaikissa tapauksissa tehdä näin.

    Hyvän koodin kirjoittamisesta kerrotaan lisää esimerkiksi Robert Martinin mainiossa kirjassa Clean Code. Kirjan koodiesimerkit on kuitenkin toteutettu Javalla, eli esimerkkien lukeminen saattaa tässä vaiheessa olla vielä varsin työlästä. Paneudumme ylläpidettävyydeltään ja laajennettavuudeltaan laadukkaan koodin toteuttamiseen tarkemmin kursseilla Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Hyvän olio-ohjelmoinnin periaatteiden mukaisen koodin kirjoittamisella on myös hintansa. Koodia tulee todennäköisesti enemmän kuin jos sama ongelma ratkaistaisiin yhteen pötköön kirjoitetulla spagettikoodilla. Ohjelmoijan onkin aina ratkaistava se, minkälainen lähestymistapa on paras kuhunkin tilanteeseen. Joskus voi olla vain parasta häkkeröidä kasaan nopeasti jotain joka toimii nyt. Jos taas on odotettavissa, että samaa koodia tullaan jatkossa laajentamaan. joko koodarin itsensä tai jonkun muun toimesta, on todennäköisesti kannattavaa panostaa koodin luettavuuteen ja jäsentämiseen jossain määrin jo alkuvaiheissa.

    Harjoitellaan vielä isomman ohjelmakokonaisuuden toteuttamista yhden ohjelmointitehtävän verran.

    Tee interaktiivinen ohjelma, jonka avulla voit pitää kirjaa opintomenestyksestäsi. Sovelluksen rakenteen saat päättää itse, mutta nyt on hyvä tilaisuus harjoitella Puhelinluettelo-esimerkin kaltaisen oliorakenteen muodostamista.

    Ohjelman tulee toimia seuraavasti:

    1 lisää suoritus\n2 hae suoritus\n3 tilastot\n0 lopetus

    komento: 1\nkurssi: Ohpe\narvosana: 3\nopintopisteet: 5

    komento: 2\nkurssi: Ohpe\nOhpe (5 op) arvosana 3

    komento: 1\nkurssi: Ohpe\narvosana: 5\nopintopisteet: 5

    komento: 2\nkurssi: Ohpe\nOhpe (5 op) arvosana 5

    komento: 1\nkurssi: Ohpe\narvosana: 1\nopintopisteet: 5

    komento: 2\nkurssi: Ohpe\nOhpe (5 op) arvosana 5

    komento: 2\nkurssi: Java-ohjelmointi\nei suoritusta

    komento: 1\nkurssi: Tira\narvosana: 1\nopintopisteet: 10

    komento: 1\nkurssi: Tilpe\narvosana: 2\nopintopisteet: 5

    komento: 1\nkurssi: Lapio\narvosana: 4\nopintopisteet: 1

    komento: 1\nkurssi: Lama\narvosana: 5\nopintopisteet: 8

    komento: 3\nsuorituksia 5 kurssilta, yhteensä 29 opintopistettä\nkeskiarvo 3.4\narvosanajakauma\n5: xx\n4: x\n3:\n2: x\n1: x

    komento: 0

    Muutama huomio: kultakin kurssilta tallentuu ainoastaan yksi arvosana. Arvosanaa voi korottaa, mutta se ei voi laskea.

    Tehtävästä on tarjolla kaksi tehtäväpistettä. Ensimmäisen pisteen saa jos toiminnot 1 ja 2 sekä lopetus toimivat. Toisen pisteen saa jos myös toiminto 3 on toteutettu.

    Epilogi

    Palataan vielä hetkeksi tarkastelemaan puhelinluetteloesimerkkiä, ja sen käyttöliittymän toteuttavaa luokkaa:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = Tiedostonkasittelija(\"luettelo.txt\")\n\n    # muu koodi\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    PuhelinluetteloSovellus-olio pitää siis sisällään sekä Puhelinluettelo-olion että Tiedostonkasittelija-olion. Jos olisimme ammattikoodareita, tekisimme sovellukseen pienen muutoksen. Nyt nimittäin se, että sovellus käyttää nimenomaan tiedostoa luettelo.txt tallentamaan luettelon tiedot, on sovelluksen käyttöliittymän kannalta täysin turha deltaji. Jos tiedosto haluttaisiin vaihtaa, edellyttäisi se muutosta luokan PuhelinluetteloSovellus koodiin. Tämä taas ei ole hyvä separation of concerns -periaatetta ajatellen, sillä puhelinluettelon tallentaminen ei kuulu ollenkaan käyttöliittymästä huolehtivan luokan vastuisiin.

    Parempi vaihtoehto olisikin luoda tiedostokäsittelijä muualla ja antaa se PuhelinluetteloSovellus-oliolle, esimerkiksi konstruktorin parametrina:

    class PuhelinluetteloSovellus:\n    def __init__(self, tiedosto):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = tiedosto\n\n    # muu koodi\n\n# luodaan tallennuksen hoitava olio\ntallennuspalvelu = Tiedostonkasittelija(\"luettelo.txt\")\n# ja annetaan se PuhelinluetteloSovellus-oliolle konsturuktorin parametrina\nsovellus = PuhelinluetteloSovellus(tallennuspalvelu)\nsovellus.suorita()

    Näin on saatu poistettua luokalta PuhelinluetteloSovellus turha riippuvuus käsiteltävän tiedoston nimeen. Jos tiedoston nimi muuttuu, ei luokan koodiin tarvitse koskea ollenkaan. Riittää ainoastaan, että oliolle annetaan hieman erilainen konstruktoriparametri:

    class PuhelinluetteloSovellus:\n    def __init__(self, tiedosto):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = tiedosto\n\n    # muu koodi\n\n# vaihdetaan tiedostoa\ntallennuspalvelu = Tiedostonkasittelija(\"uusi_luettelotiedosto.txt\")\nsovellus = PuhelinluetteloSovellus(tallennuspalvelu)\nsovellus.suorita()

    Tämä sama tekniikka mahdollistaa sen, että siirrytäänkin tallentamaan puhelinluettelo tiedoston sijaan esimerkiksi internetissä olevaan pilvipalveluun. On vain kirjoitettava pilvipalvelua käyttävä luokka, joka tarjoaa puhelinluettelosovellukselle samanlaiset metodit kuin Tiedostonkasittelija. Tämän luokan olio voidaan antaa sovellukselle, ilman että sovelluksen koodista tulee muuttaa riviäkään:

    class InternetTallennin:\n    # koodi joka tallentaa luettelon tiedot internetissä olevaan pilvipalveluun\n\ntallennuspalvelu = InternetTallennin(\"amazon-cloud\", \"mluukkai\", \"passwrd\")\nsovellus = PuhelinluetteloSovellus(tallennuspalvelu)\nsovellus.suorita()

    Kuten aiemmin todettiin, on tämän kaltaisten tekniikoiden käytöllä oma hintansa: koodia tulee enemmän, ja ohjelmoijan tulee harkita milloin se hinta kannattaa maksaa.

    Tässä esitelty tekniikka (joka kulkee ammattijargonissa nimellä dependency injection), missä oliolle annetaan ulkopuolelta käsin sen tarvitsema riippuvuus (eli käytännössä jokin muu olio) on erittäin tyypillinen kikka ammattimaisessa koodauksessa, muun muassa siksi, että se helpottaa ohjelmistojen laajentamista sekä niiden automatisoitua testaamista. Jatkamme teeman käsittelyä kursseilla Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/4-laajempi-sovellus.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä osiossa"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Käydään läpi hieman laajemman sovelluksen tekemiseen liittyviä seikkoja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Erityinen fokus on sovelluksen eri osa-alueiden (käyttöliittymä, sovelluslogiikka ja tiedostojen käsittely) eriyttämisessä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Harjoitellaan laajemman sovelluksen toteuttamista itse"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteiden ja jatkokurssin aikana on esitelty suuri määrä Pythonin tarjoamia ominaisuuksia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteissa tutustuttiin kielen kontrollirakenteisiin (while ja for), funktioihin sekä perustietorakenteisiin eli listaan ja sanakirjaan. Näytti jo hetken siltä että muuta ei tarvitakaan. Periaatteessa näin onkin: ohjelmoinnin perusteiden kalustolla pystyy ilmaisemaan kaiken mikä Pythonilla on ylipäätään ilmaistavissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jatkokurssin alussa, eli kurssin osassa 8 pakkaa ruvettiin kuitenkin hämmentämään tuomalla mukaan luokat ja oliot. Milloin ja ylipäätään "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"miksi"}]},{"type":"text","value":" olioita tulisi käyttää jos kurssin osien 1-7 kalusto on jo ilmaisuvoimaltaan riittävä?"}]},{"type":"element","tagName":"h2","properties":{"id":"monimutkaisuuden-hallintaa","style":"position:relative;"},"children":[{"type":"text","value":"Monimutkaisuuden hallintaa"},{"type":"element","tagName":"a","properties":{"href":"#monimutkaisuuden-hallintaa","ariaLabel":"monimutkaisuuden hallintaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monissa tilanteissa voi ja varmasti kannattaakin olla käyttämättä oliota. Esimerkiksi jos koodataan pieni \"kertakäyttöinen\" apuohjelma, ei ehkä ole mitään tarvetta olioille. Tilanne alkaa muuttua, kun siirrytään hieman suuremman kokoluokan ohjelmiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma laajenee, alkaa sen sisältämien yksityiskohtien määrä nousta hallitsemattomaksi, ellei ohjelmaa jäsennellä jollain järkevällä tavalla. Itse asiassa jo ohjelmoinnin perusteiden tehtävissä oli havaittavissa varsin monimutkaisia ratkaisuja, joiden ymmärtämisessä jopa alan ammattilaisilla on vaikeuksia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käsite "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Separation_of_concerns","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Separation of concerns"}]},{"type":"text","value":" on ollut jo vuosikymmeniä eräs ohjelmoinnin ja koko tietojenkäsittelyn keskeisiä teemoja. Wikipedian mukaan käsitteellä tarkoitetaan seuraavaa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Separation of concerns is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern. A concern is a set of information that affects the code of a computer program"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kyse on ohjelman suunnittelua ohjaavasta periaatteesta, jonka mukaan ohjelmakoodi jäsennellään pienempiin osiin, joista kukin huolehtii vain omasta \"tontistaan\". Kuhunkin osaan tehdyt muutokset vaikuttavat - periaatteen mukaisesti - vain rajattuun alueeseen ohjelmassa, joten ohjelmien väistämätöntä monimutkaisuutta on helpompi hallita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot ovat yksi mekanismi tämän tavoitteen saavuttamiseen. Sen sijaan että ohjelma kirjoitetaan yhtenä isona kokonaisuutena, koostetaan se pienistä funktioista, joista kukin ratkaisee pienen osan ongelmasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmointi tarjoaa funktioita jossain määrin ilmaisuvoimaisemman ja joidenkin mielestä \"paremman\" tavan saavuttaa sama tavoite. Kuten olemme nähneet, olioiden avulla on mahdollista koota samaan asiaan liittyvä data ja sitä käsittelevä koodi, eli olion metodit, samaan paikkaan. Oliot tarjoavat myös mekanismin käsittelemänsä datan kapselointiin, joka taas tavallaan on keino piilottaa \"turhia\" yksityiskohtia olion ulkopuoliselta osalta ohjelmaa."}]},{"type":"element","tagName":"h2","properties":{"id":"esimerkki-puhelinluettelo","style":"position:relative;"},"children":[{"type":"text","value":"Esimerkki: puhelinluettelo"},{"type":"element","tagName":"a","properties":{"href":"#esimerkki-puhelinluettelo","ariaLabel":"esimerkki puhelinluettelo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Miten ohjelma sitten tulisi jakaa luokkiin ja olioihin? Kysymys ei ole helppo, ja asiaa on helpompi pohdiskella konkreettisen esimerkin kautta. Toteutetaan esimerkkinä olio-ohjelmointia hyödyntäen hieman samantyylinen puhelinluettelo, joka oli aiheena ohjelmoinnin perusteiden viidennen osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/3-dictionary#programming-exercise-puhelinluettelo-versio-2"},"children":[{"type":"text","value":"tehtävässä"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Separation of concerns -periaatetta noudatellen koodi tulee jakaa osiin, joista kukin käsittelee omaa asiaansa. Olio-ohjelmoinnin piirissä tätä periaatetta ilmentää niin sanottu "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Single-responsibility_principle","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"yhden vastuun (single responsibility)"}]},{"type":"text","value":" -periaate. Ei mennä sen tarkemmin periaatteen yksityiskohtiin, mutta maalaisjärjellä ajatellen periaatteen nimi jo kertoo mistä on kyse: "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"yksittäisen luokan olioiden tulisi olla vastuussa yhdestä asiasta"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olioita käytettäessä ohjelmointiongelman \"reaalimaailman asioita\" vastaa yleensä oma luokkansa. Puhelinluettelon tapauksessa tälläisiä reaalimaailman asioita olisivat esimerkiksi:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"henkilö"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näistä nimi ja puhelinnumero ovat kenties liian vähäpätöisiä ollakseen omia luokkiaan, mutta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"henkilö"}]},{"type":"text","value":" voisi hyvinkin olla oma luokkansa, jonka vastuulla on sitoa yhteen tietty nimi ja siihen liittyvät puhelinnumerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puhelinluettelo"}]},{"type":"text","value":" itsessään on potentiaalinen luokka, sen vastuulla on hallinnoida eri henkilöiden tietoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nämä kaksi luokkaa eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puhelinluettelo"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"henkilö"}]},{"type":"text","value":" muodostavat sovelluksen ytimen, eli niin sanotun "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sovelluslogiikan"}]},{"type":"text","value":". Näiden lisäksi ohjelma tarvitsee muutaman muunkin luokan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttäjän kanssa tapahtuvasta interaktiosta huolehtivaa luokkaa ei kannata sotkea sovelluslogiikan kanssa samaan luokkaan - sehän on kokonaan oma vastuunsa. Eli sovelluslogiikan luokkien lisäksi ohjelmalle tulee myös luokka, joka huolehtii ohjelman käyttöliittymästä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Talletamme puhelinluettelon tiedot tiedostoon. Myös tiedoston käsittely on selkeästi oma vastuunsa, joten tulemme sisällyttämään siihen käytettävän koodin omaan luokkaansa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelman luokkarakenne alkaa pikkuhiljaa hahmottua, nousee kysymykseksi se, mistä ohjelmointi kannattaa aloittaa. Usein paras tapa aloittaa on pienellä palalla sovelluslogiikka."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-1-sovelluslogiikan-runko","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 1: sovelluslogiikan runko"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-1-sovelluslogiikan-runko","ariaLabel":"vaihe 1 sovelluslogiikan runko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aloitetaan luokasta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":". Runko voisi näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_numero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_numerot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka pitää siis sisällään listan henkilöitä ja tarjoaa metodit tietojen lisäämiseen ja hakemiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaiseen henkilöön voi liittyä useita numeroita, joten toteutetaan luettelon sisäinen tila sanakirjan avulla, koska sanakirjasta on helppo hakea nimen perusteella. Sanakirjaan on helppo tallettaa suoraan myös nimeen liittyvät numerot, joten ainakaan tässä vaiheessa ei tarvita erillistä luokkaa yksittäisen henkilön tietojen tallettamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka laajenee seuraavasti. Mukana on myös pieni toiminnan varmistava koodinpätkä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_numero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# henkilöön liittyy lista puhelinnumeroja"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_numerot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# testikoodi"}]},{"type":"text","value":"\nluettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"02-123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Testikoodin tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['02-123456']\nNone"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_numerot"}]},{"type":"text","value":" siis palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":", jos henkilö ei löydy luettelosta, jos henkilö löytyy, palautetaan lista joka sisältää henkilön puhelinnumerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoidessa mitä tahansa ohjelmaa kannattaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"aina"}]},{"type":"text","value":" kokeilla, että koodi toimii kuten sen olettaa toimivan, ennen kun etenee muuhun koodiin.\nUsein tämä testikoodi on poisheitettävää koodia, ja sikäli voisi ajatella testaamisesta olevan ylimääräistä vaivaa. Lähes 100% tapauksissa ei näin kuitenkaan ole."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodiin tullut bugi kannattaa saada kiinni ja korjata niin pian kuin mahdollista. Jos koodin toimivuuden varmistaa lähes jokaisen uuden koodirivin jälkeen, on debuggaus ja korjaaminen yleensä vaivatonta ja nopeaa, koska tällöin voi olla melko varma siitä, että ongelma johtuu hetki sitten lisätyistä koodiriveistä. Jos taas koodia testataan vasta sen jälkeen kun siihen on lisätty kymmeniä koodirivejä, on virhelähteitä moninkertaisesti."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-2-kayttoliittyman-runko","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 2: käyttöliittymän runko"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-2-kayttoliittyman-runko","ariaLabel":"vaihe 2 kayttoliittyman runko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun sovelluslogiikan ydintoiminnallisuus on kunnossa, voidaan edetä sovelluksen tekstikäyttöliittymään. Tehdään sitä varten oma luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":", jonka runko on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka saattaa vaikuttaa vielä hämmentävältä, mutta tässä luodaan tosiaan vasta runko toiminnalle. Konstruktori luo puhelinluettelon, jonka olio pitää sisällään. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorita(self)"}]},{"type":"text","value":" käynnistää sovelluksen tekstikäyttöliittymän, jonka ytimen muodostaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukka, joka kyselee käyttäjältä mikä komento halutaan suorittaa. Ennen toistolauseeseen menemistä ohjelma tulostaa käyttöohjeet, kutsumalla metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ohje(self)"}]},{"type":"text","value":". Varsinaiset toiminnot toteutetaan seuraavaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan käyttöliittymää siten, että luetteloon voidaan lisätä uusia tietoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1 lisäys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos valittu komento on tietojen lisäys (eli komento on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"), kysyy käyttöliittymä nimen ja numeron käyttäjältä, ja lisää tiedot puhelinluetteloon kutsumalla sopivaa luettelon metodia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöliittymä on siis vastuussa ainoastaan siitä, että se kommunikoi käyttäjän kanssa. Puhelinnumeron säilöminen nimen yhteyteen on jätetty kokonaisuudessan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":"-olion vastuulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöliittymän rakennetta on mahdollista vielä parannella siten, että tietojen lisäys eriytetään omaan metodiinsa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"lisays(self)"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1 lisäys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# eriytetään uusien tietojen lisääminen omaksi metodiksi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisays"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erillisen metodin käyttämisen taustallakin on sama "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"separation of concerns"}]},{"type":"text","value":" -periaate. Sen sijaan että koko käyttöliittymän toiminnallisuus sijoitettaisiin ison "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukan sisälle, tehdään jokaisesta yksittäisestä toiminnosta oma metodinsa. Tämä helpottaa kokonaisuuden hallintaa. Jos halutaan muokata tietojen lisäämisen toiminnallisuutta, tiedetään heti missä päin relevantti koodi sijaitsee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään käyttöliittymään toiminnallisuus numeroiden hakemista varten. Sijoitetaan sen hoitava koodi heti omaan metodiinsa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ohje"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komennot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0 lopetus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1 lisäys\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2 haku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisays"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"haku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"numero ei tiedossa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"haku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovelluksen perusversio toimii nyt. Seuraavassa esimerkki sovelluksen käytöstä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 lisäys\n2 haku"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-4356713"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\n02-123456\n045-4356713"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: Emilia\nnumero ei tiedossa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodia on aika paljon, todennäköisesti enemmän kuin jos kaikki olisi ohjelmoitu yhteen pötköön. Koodin rakenne on kuitenkin siistihkö, ja koodin laajentamisenkaan ei pitäisi olla kovin hankalaa."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-3-tietojen-haku-tiedostosta","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 3: tietojen haku tiedostosta"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-3-tietojen-haku-tiedostosta","ariaLabel":"vaihe 3 tietojen haku tiedostosta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan ohjelmaa siten, että se lataa käynnistäessään puhelinluettelon tiedostosta, joka on seuraavaa muotoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Erkki;02-1234567;045-4356713"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Emilia;040-324344"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston käsittely on selkeästi oma vastuualueensa, eli toteutetaan sitä varten oma luokka:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat\n nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numerot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" nimet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorin parametrina annetaan tiedoston nimi. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa(self)"}]},{"type":"text","value":" lukee tiedoston, ja pilkkoo sen rivit sanakirjaksi, missä avain on nimi ja arvona ovat nimeen liittyvät numerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi käyttää erästä Pythonin kätevää ominaisuutta: listasta on mahdollista ottaa ensin yksittäisiä alkioita erikseen nimettyinä muuttujina, sekä loput alkiot uutena listana, kuten seuraavasta esimerkistä käy ilmi. "},{"type":"element","tagName":"a","properties":{"href":"osa-6/1-tiedostojen-lukeminen#csv-tiedoston-lukeminen"},"children":[{"type":"text","value":"Luvusta 6"}]},{"type":"text","value":" muistamme että merkkijonojen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":" tuottaa nimenomaan listan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\neka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"loput "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"loput"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n2\n[3, 4, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sijoituslauseen viimeisen muuttujan nimen edessä on *, ja se tarkoittaa, että viimeiseen muuttujaan kerätään taulukosta loput, eli kolmas ja sitä seuraavat alkiot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostonkäsittelijääkin kannattaa ehdottomasti testata, ennen kuin se pultataan muuhun koodiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"t "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Erkki': ['02-1234567', '045-4356713'], 'Emilia': ['040-324344']}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun tiedostosta lukemisen todetaan toimivan, liitetään koodi muuhun ohjelmaan. Looginen paikka tiedoston lukemiseen on se hetki kun sovellus käynnistyy, eli luokan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" konstruktori:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# listään tiedostossa olevat nimet luetteloon"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numerot "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston lukua osana PuhelinLuetteloSovellusta kannattaa myös testata. Kun on varmistettu, että tiedoston sisältö saadaan ladattua luetteloon, voidaan edetä viimeiseen vaiheeseen."}]},{"type":"element","tagName":"h2","properties":{"id":"vaihe-4-tietojen-talletus-tiedostoon","style":"position:relative;"},"children":[{"type":"text","value":"Vaihe 4: tietojen talletus tiedostoon"},{"type":"element","tagName":"a","properties":{"href":"#vaihe-4-tietojen-talletus-tiedostoon","ariaLabel":"vaihe 4 tietojen talletus tiedostoon permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viimeistellään ohjelman alustava versio vielä siten, että se tallentaa lopetettaessa puhelinluettelon takaisin tiedostoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tätä varten luokkaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" tulee laajentaa siten, että sieltä saadaan tallennusta varten kaikki tiedot ulos:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# palautetaan tiedostoon tallentamista varten kaikki tiedot"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kaikki_tiedot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__henkilot"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallennus on luonnollisesti luokan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"text","value":" vastuulla, eli laajennetaan sitä metodilla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"talleta"}]},{"type":"text","value":", joka saa parametriksi puhelinluetteloa edustavan sanakirjan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"talleta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dict"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numerot "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" numerot\n f"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallennus tapahtuu samalla kun sovelluksen käyttö lopetetaan. Tehdään tätäkin tarkoitusta varten oma metodinsa ja kutsutaan sitä sopivassa kohdassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodi, joka suoritetaan lopetettaessa sovelluksen käyttö"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lopetus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"talleta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kaikki_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"komento: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lopetus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" komento "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"haku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ohje"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelon laajennus, osa 1","tmcname":"osa10-10_puhelinluettelo_osa1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään pieni laajennus puhelinluettelosovellukseen. Yllä kehitetty koodi löytyy tehtäväpohjasta. Laajenna ratkaisuasi komennolla, joka mahdollistaa nimen etsimisen numeron perusteella. Laajennuksen jälkeen sovelluksen pitäisi toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 lisäys\n2 haku\n3 haku numeron perusteella"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-4356713"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]},{"type":"text","value":"\nErkki"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0100100"}]},{"type":"text","value":"\ntuntematon numero"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee laajennus sitten, että kunnioitat ohjelman rakennetta. Eli lisää luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" uutta ominaisuutta varten sopiva apumetodi sekä oma haara while-silmukkaan. Lisää myös sovelluslogiikkaan eli luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" metodi, joka mahdollistaa nimen hakemisen numeron perusteella."}]}]},{"type":"element","tagName":"h2","properties":{"id":"olioita-sanakirjassa","style":"position:relative;"},"children":[{"type":"text","value":"Olioita sanakirjassa"},{"type":"element","tagName":"a","properties":{"href":"#olioita-sanakirjassa","ariaLabel":"olioita sanakirjassa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa tehtävässä on tarkoitus muuttaa puhelinluetteloa siten, että sanakirjan arvoksi talletetaan tavallisten listojen sijaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioita"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Periaatteessa asiassa ei ole mitään ihmeellistä, mutta kurssilla ei vielä ole näin tehty, joten tutkitaan ennen tehtävää hieman samantapaista, mutta yksinkertaisempaa esimerkkiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään sovellus, jonka avulla voidaan pitää kirjaa siitä, kuinka monta tehtävää opiskelijat ovat tehneet kurssin aikana. Kunkin opiskelijan tehtävämäärä lasketaan yksinkertaisen olion avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tehtavalaskuri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tehtavia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"merkkaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tehtavia "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tehtyja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tehtavia"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käyttävä pääohjelma on seuraavassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkataan tehtäviä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelija: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luodaan tarvittaessa olio tehtävämäärän laskemista varten"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtavalaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# merkataan tehdyksi nimeä vastaavaan olioon"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tehdyt tehtävät:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tehtavat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" tehtäviä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtyja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"merkataan tehtäviä\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sara"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"antti"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sara"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"juuso"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"juuso"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"antti"}]},{"type":"text","value":"\nopiskelija: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sara"}]},{"type":"text","value":"\nopiskelija:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tehdyt tehtävät:\npekka tehtäviä 1 kpl\nantti tehtäviä 2 kpl\nsara tehtäviä 3 kpl\njuuso tehtäviä 2 kpl"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä on parikin huomionarvoista seikkaa. Kun opiskelijan nimi syötetään, tarkastetaan aina ensin onko opiskelijaa vastaava olio jo sanakirjassa. Jos olioa ei ole, luodaan se:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtavalaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tiedetään"}]},{"type":"text","value":" että olio on olemassa. Se on joko luotu juuri äsken tai jo aiemmalla silmukan kierroksella. Haetaan olio sanakirjasta, ja kutsutaan sen metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkaa"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivillä tapahtuu oikeastaan kaksi asiaa, ja sama voitaisiin kirjoittaa siten, että sanakirjasta haettu olio sijoitettaisiin apumuuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijan_laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nopiskelijan_laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että vaikka olio sijoitettaisiin apumuuttujaan, se "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei tarkoita"}]},{"type":"text","value":" että olio poistuisi sanakirjasta tai oliosta syntyisi kopio. Apumuuttuja on ainoastaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viite"}]},{"type":"text","value":" sanakirjassa olevaan olioon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkin koodia kannattaa "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ehdottomasti"}]},{"type":"text","value":" kokeilla "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorissa"}]},{"type":"text","value":" jos ei ole aivan 100% varma siitä, miten koodi toimii."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelon laajennus, osa 2","tmcname":"osa10-11_puhelinluettelo_osa2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä laajennetaan puhelinluettelosovellusta siten, että henkilöihin voi liittyä myös osoite. Yksinkertaisuuden vuoksi koodista on kuitenkin poistettu tiedostoon tallentaminen. Myös muutama metodi on uudelleennimetty vastaamaan paremmin laajennuksen jälkeistä tilannetta."}]},{"type":"element","tagName":"h2","properties":{"id":"luokka-henkilon-tietojen-esittamiseen","style":"position:relative;"},"children":[{"type":"text","value":"Luokka henkilön tietojen esittämiseen"},{"type":"element","tagName":"a","properties":{"href":"#luokka-henkilon-tietojen-esittamiseen","ariaLabel":"luokka henkilon tietojen esittamiseen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siirretään henkilön tietojen (eli puhelinnumerojen sekä osoitteen) esittäminen oman luokkansa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" vastuulle. Toteuta luokka siten, että se toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhenkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"040-123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhenkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mannerheimintie 10 Helsinki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erkki\n[]\nNone\n['040-123456']\nMannerheimintie 10 Helsinki"}]}]},{"type":"element","tagName":"h2","properties":{"id":"puhelinluettelo-kayttamaan-luokkaa-henkilo","style":"position:relative;"},"children":[{"type":"text","value":"Puhelinluettelo käyttämään luokkaa Henkilo"},{"type":"element","tagName":"a","properties":{"href":"#puhelinluettelo-kayttamaan-luokkaa-henkilo","ariaLabel":"puhelinluettelo kayttamaan luokkaa henkilo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta koodiasi siten, että se toimii käyttäjän näkökulmasta täysin samoin kuin aiemmin, mutta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" tallettaakin henkilöt sisäisesti käyttäen luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" olioita. Käytännössä siis oliomuuttujana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__henkilot"}]},{"type":"text","value":" tulee olla sanakirja, johon listojen sijaan talletetaan henkilö-olioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"VAROITUS:"}]},{"type":"text","value":" kun teet koodiin tämän tehtävän kaltaista rakenteellista muutosta, etene pienin askelin. Älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"varma keino ajautua pahoihin ongelmiin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sopiva pieni askel nyt voi olla se, että tarkastat ensin erikseen luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" toimivuuden. Esimerkiksi seuraavan koodin tulee toimia kuten olettaa saattaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"02-123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävässä ei tarkisteta, millainen tulostusasu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_tiedot"}]},{"type":"text","value":"-metodin palauttamalla tuloksella on, mutta varmista ettei koodi aiheuta virheitä, ja että tulos on järkevä. Kun olet 100% varma, että kaikki toimii luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" osalta, voit edetä varmistamaan, että kaikki toimii edelleen entiseen tapaan käyttöliittymää käytettäessä."}]},{"type":"element","tagName":"h2","properties":{"id":"osoitteen-lisaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Osoitteen lisääminen"},{"type":"element","tagName":"a","properties":{"href":"#osoitteen-lisaaminen","ariaLabel":"osoitteen lisaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna nyt sovellusta siten, että puhelinluetteloon on mahdollista tallettaa myös henkilöiden osoitteet. Ohjelman tulisi toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 nimen lisäys\n2 haku\n3 osoitteen lisäys"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"02-123456"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Emilia"}]},{"type":"text","value":"\nosoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Viherlaaksontie 7, Espoo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\n02-123456\nosoite ei tiedossa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Emilia"}]},{"type":"text","value":"\nnumero ei tiedossa\nViherlaaksontie 7, Espoo"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\nosoite: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Linnankatu 75, Turku"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: 2\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Erkki"}]},{"type":"text","value":"\n02-123456\nLinnankatu 75, Turku"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Wilhelm"}]},{"type":"text","value":"\nosoite ei tiedossa\nnumero ei tiedossa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"VAROITUS ja vihje:"}]},{"type":"text","value":" kuten tehtävän edellisessä osassa sanottiin, älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"varma keino ajautua pahoihin ongelmiin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Varmista ensin että voit lisätä osoitteita luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":" ja kun olet 100% varma, että se toimii, voit laajentaa sovelluksen käyttöliittymää uuden toiminnallisuuden osalta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"erinaisia-huomioita","style":"position:relative;"},"children":[{"type":"text","value":"Erinäisiä huomioita"},{"type":"element","tagName":"a","properties":{"href":"#erinaisia-huomioita","ariaLabel":"erinaisia huomioita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Puhelinluetteloesimerkki noudattaa rakenteeltaan melko klassisia hyvän olio-ohjelmoinnin periaatteita. Kantavana ideana on siis ohjelman eri vastuualueiden jaottelu erillisiin luokkiin ja metodeihin. Eräs suurimmista motiiveista tällaiselle jaottelulle on monimutkaisuuden hallinta. Toinen tärkeä syy on se, että oikein tehty koodin jaottelu - tai "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"modularisointi"}]},{"type":"text","value":" kuten ammattijargon asian ilmaisee - tekee koodista potentiaalisesti helpomman ylläpitää ja laajentaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oikeissa ohjelmistoissa ylivoimaisesti suurimman kustannuserän aiheuttaa juuri ylläpito (eli bugien korjailu) sekä ohjelman laajentaminen, joten tällä seikalla on taloudellisesti erittäin suuri merkitys."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nostetaan esimerkistä esiin vielä pari tärkeää seikkaa. Koodi ilmentää hyvin sitä, miten sovelluslogiikan varsinainen ydin on eriytetty sekä käyttöliittymästä, että datan tallettamisesta. Tämä on tärkeää muutamastakin syystä. Ensinnäkin se mahdollistaa koodin testailun pienemmissä yksiköissä, luokka ja metodi kerrallaan. Toisaalta koska sovelluslogiikka ei nyt riipu käyttöliittymästä tai tiedon talletustavasta, on esim. käyttöliittymää mahdollista muuttaa (ainakin johonkin pisteeseen asti) rikkomatta muuta sovellusta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostojen käsittelyn suhteen kannattaa myös huomata se, että ohjelma lukee tiedostoa ainoastaan kerran, käynnistysvaiheessa. Tämän jälkeen kaikki tieto säilytetään ohjelman muuttujissa. Ohjelma tallettaa tiedot kokonaisuudessaan, eli käytännössä uudelleenkirjoittaa tiedoston joka kerta kokonaan uudestaan. Tiedostojen käsittely kannattaa lähes kaikissa tapauksissa tehdä näin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvän koodin kirjoittamisesta kerrotaan lisää esimerkiksi Robert Martinin mainiossa kirjassa "},{"type":"element","tagName":"a","properties":{"href":"https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Clean Code"}]},{"type":"text","value":". Kirjan koodiesimerkit on kuitenkin toteutettu Javalla, eli esimerkkien lukeminen saattaa tässä vaiheessa olla vielä varsin työlästä. Paneudumme ylläpidettävyydeltään ja laajennettavuudeltaan laadukkaan koodin toteuttamiseen tarkemmin kursseilla "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024742-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotekniikka"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024909-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotuotanto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvän olio-ohjelmoinnin periaatteiden mukaisen koodin kirjoittamisella on myös hintansa. Koodia tulee todennäköisesti enemmän kuin jos sama ongelma ratkaistaisiin yhteen pötköön kirjoitetulla spagettikoodilla. Ohjelmoijan onkin aina ratkaistava se, minkälainen lähestymistapa on paras kuhunkin tilanteeseen. Joskus voi olla vain parasta häkkeröidä kasaan nopeasti jotain joka toimii nyt. Jos taas on odotettavissa, että samaa koodia tullaan jatkossa laajentamaan. joko koodarin itsensä tai jonkun muun toimesta, on todennäköisesti kannattavaa panostaa koodin luettavuuteen ja jäsentämiseen jossain määrin jo alkuvaiheissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan vielä isomman ohjelmakokonaisuuden toteuttamista yhden ohjelmointitehtävän verran."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Opintorekisteri","tmcname":"osa10-12_opintorekisteri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee interaktiivinen ohjelma, jonka avulla voit pitää kirjaa opintomenestyksestäsi. Sovelluksen rakenteen saat päättää itse, mutta nyt on hyvä tilaisuus harjoitella Puhelinluettelo-esimerkin kaltaisen oliorakenteen muodostamista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 lisää suoritus\n2 hae suoritus\n3 tilastot\n0 lopetus"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\nOhpe (5 op) arvosana 3"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\nOhpe (5 op) arvosana 5"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohpe"}]},{"type":"text","value":"\nOhpe (5 op) arvosana 5"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Java-ohjelmointi"}]},{"type":"text","value":"\nei suoritusta"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tira"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tilpe"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Lapio"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkurssi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Lama"}]},{"type":"text","value":"\narvosana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nopintopisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nsuorituksia 5 kurssilta, yhteensä 29 opintopistettä\nkeskiarvo 3.4\narvosanajakauma\n5: xx\n4: x\n3:\n2: x\n1: x"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama huomio: kultakin kurssilta tallentuu ainoastaan yksi arvosana. Arvosanaa voi korottaa, mutta se ei voi laskea."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävästä on tarjolla kaksi tehtäväpistettä. Ensimmäisen pisteen saa jos toiminnot 1 ja 2 sekä lopetus toimivat. Toisen pisteen saa jos myös toiminto 3 on toteutettu."}]}]},{"type":"element","tagName":"h2","properties":{"id":"epilogi","style":"position:relative;"},"children":[{"type":"text","value":"Epilogi"},{"type":"element","tagName":"a","properties":{"href":"#epilogi","ariaLabel":"epilogi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palataan vielä hetkeksi tarkastelemaan puhelinluetteloesimerkkiä, ja sen käyttöliittymän toteuttavaa luokkaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":"-olio pitää siis sisällään sekä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinluettelo"}]},{"type":"text","value":"-olion että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"text","value":"-olion. Jos olisimme ammattikoodareita, tekisimme sovellukseen pienen muutoksen. Nyt nimittäin se, että sovellus käyttää nimenomaan tiedostoa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luettelo.txt"}]},{"type":"text","value":" tallentamaan luettelon tiedot, on sovelluksen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"käyttöliittymän"}]},{"type":"text","value":" kannalta täysin turha deltaji. Jos tiedosto haluttaisiin vaihtaa, edellyttäisi se muutosta luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" koodiin. Tämä taas ei ole hyvä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"separation of concerns"}]},{"type":"text","value":" -periaatetta ajatellen, sillä puhelinluettelon tallentaminen ei kuulu ollenkaan käyttöliittymästä huolehtivan luokan vastuisiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi vaihtoehto olisikin luoda tiedostokäsittelijä muualla ja antaa se "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":"-oliolle, esimerkiksi konstruktorin parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luodaan tallennuksen hoitava olio"}]},{"type":"text","value":"\ntallennuspalvelu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luettelo.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja annetaan se PuhelinluetteloSovellus-oliolle konsturuktorin parametrina"}]},{"type":"text","value":"\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tallennuspalvelu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin on saatu poistettua luokalta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"turha riippuvuus"}]},{"type":"text","value":" käsiteltävän tiedoston nimeen. Jos tiedoston nimi muuttuu, ei luokan koodiin tarvitse koskea ollenkaan. Riittää ainoastaan, että oliolle annetaan hieman erilainen konstruktoriparametri:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"PuhelinluetteloSovellus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__luettelo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinluettelo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tiedosto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# vaihdetaan tiedostoa"}]},{"type":"text","value":"\ntallennuspalvelu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tiedostonkasittelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_luettelotiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tallennuspalvelu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä sama tekniikka mahdollistaa sen, että siirrytäänkin tallentamaan puhelinluettelo tiedoston sijaan esimerkiksi internetissä olevaan pilvipalveluun. On vain kirjoitettava pilvipalvelua käyttävä luokka, joka tarjoaa puhelinluettelosovellukselle samanlaiset metodit kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tiedostonkasittelija"}]},{"type":"text","value":". Tämän luokan olio voidaan antaa sovellukselle, ilman että sovelluksen koodista tulee muuttaa riviäkään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"InternetTallennin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi joka tallentaa luettelon tiedot internetissä olevaan pilvipalveluun"}]},{"type":"text","value":"\n\ntallennuspalvelu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" InternetTallennin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"amazon-cloud\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mluukkai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"passwrd\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" PuhelinluetteloSovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tallennuspalvelu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsovellus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten aiemmin todettiin, on tämän kaltaisten tekniikoiden käytöllä oma hintansa: koodia tulee enemmän, ja ohjelmoijan tulee harkita milloin se hinta kannattaa maksaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä esitelty tekniikka (joka kulkee ammattijargonissa nimellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"dependency injection"}]},{"type":"text","value":"), missä oliolle annetaan ulkopuolelta käsin sen tarvitsema "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"riippuvuus"}]},{"type":"text","value":" (eli käytännössä jokin muu olio) on erittäin tyypillinen kikka ammattimaisessa koodauksessa, muun muassa siksi, että se helpottaa ohjelmistojen laajentamista sekä niiden automatisoitua testaamista. Jatkamme teeman käsittelyä kursseilla "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024742-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotekniikka"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"https://studies.helsinki.fi/opintotarjonta/cu/hy-CU-118024909-2020-08-01","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ohjelmistotuotanto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"adf5276f-057a-5ac0-85b1-024443782145"},"children":[]}]}]},"html":"

    Tässä osiossa

      \n
    • Käydään läpi hieman laajemman sovelluksen tekemiseen liittyviä seikkoja
    • \n
    • Erityinen fokus on sovelluksen eri osa-alueiden (käyttöliittymä, sovelluslogiikka ja tiedostojen käsittely) eriyttämisessä
    • \n
    • Harjoitellaan laajemman sovelluksen toteuttamista itse
    • \n

    Ohjelmoinnin perusteiden ja jatkokurssin aikana on esitelty suuri määrä Pythonin tarjoamia ominaisuuksia.

    Ohjelmoinnin perusteissa tutustuttiin kielen kontrollirakenteisiin (while ja for), funktioihin sekä perustietorakenteisiin eli listaan ja sanakirjaan. Näytti jo hetken siltä että muuta ei tarvitakaan. Periaatteessa näin onkin: ohjelmoinnin perusteiden kalustolla pystyy ilmaisemaan kaiken mikä Pythonilla on ylipäätään ilmaistavissa.

    Jatkokurssin alussa, eli kurssin osassa 8 pakkaa ruvettiin kuitenkin hämmentämään tuomalla mukaan luokat ja oliot. Milloin ja ylipäätään miksi olioita tulisi käyttää jos kurssin osien 1-7 kalusto on jo ilmaisuvoimaltaan riittävä?

    Monimutkaisuuden hallintaa

    Monissa tilanteissa voi ja varmasti kannattaakin olla käyttämättä oliota. Esimerkiksi jos koodataan pieni \"kertakäyttöinen\" apuohjelma, ei ehkä ole mitään tarvetta olioille. Tilanne alkaa muuttua, kun siirrytään hieman suuremman kokoluokan ohjelmiin.

    Kun ohjelma laajenee, alkaa sen sisältämien yksityiskohtien määrä nousta hallitsemattomaksi, ellei ohjelmaa jäsennellä jollain järkevällä tavalla. Itse asiassa jo ohjelmoinnin perusteiden tehtävissä oli havaittavissa varsin monimutkaisia ratkaisuja, joiden ymmärtämisessä jopa alan ammattilaisilla on vaikeuksia.

    Käsite Separation of concerns on ollut jo vuosikymmeniä eräs ohjelmoinnin ja koko tietojenkäsittelyn keskeisiä teemoja. Wikipedian mukaan käsitteellä tarkoitetaan seuraavaa

    Separation of concerns is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern. A concern is a set of information that affects the code of a computer program

    Kyse on ohjelman suunnittelua ohjaavasta periaatteesta, jonka mukaan ohjelmakoodi jäsennellään pienempiin osiin, joista kukin huolehtii vain omasta \"tontistaan\". Kuhunkin osaan tehdyt muutokset vaikuttavat - periaatteen mukaisesti - vain rajattuun alueeseen ohjelmassa, joten ohjelmien väistämätöntä monimutkaisuutta on helpompi hallita.

    Funktiot ovat yksi mekanismi tämän tavoitteen saavuttamiseen. Sen sijaan että ohjelma kirjoitetaan yhtenä isona kokonaisuutena, koostetaan se pienistä funktioista, joista kukin ratkaisee pienen osan ongelmasta.

    Olio-ohjelmointi tarjoaa funktioita jossain määrin ilmaisuvoimaisemman ja joidenkin mielestä \"paremman\" tavan saavuttaa sama tavoite. Kuten olemme nähneet, olioiden avulla on mahdollista koota samaan asiaan liittyvä data ja sitä käsittelevä koodi, eli olion metodit, samaan paikkaan. Oliot tarjoavat myös mekanismin käsittelemänsä datan kapselointiin, joka taas tavallaan on keino piilottaa \"turhia\" yksityiskohtia olion ulkopuoliselta osalta ohjelmaa.

    Esimerkki: puhelinluettelo

    Miten ohjelma sitten tulisi jakaa luokkiin ja olioihin? Kysymys ei ole helppo, ja asiaa on helpompi pohdiskella konkreettisen esimerkin kautta. Toteutetaan esimerkkinä olio-ohjelmointia hyödyntäen hieman samantyylinen puhelinluettelo, joka oli aiheena ohjelmoinnin perusteiden viidennen osan tehtävässä.

    Separation of concerns -periaatetta noudatellen koodi tulee jakaa osiin, joista kukin käsittelee omaa asiaansa. Olio-ohjelmoinnin piirissä tätä periaatetta ilmentää niin sanottu yhden vastuun (single responsibility) -periaate. Ei mennä sen tarkemmin periaatteen yksityiskohtiin, mutta maalaisjärjellä ajatellen periaatteen nimi jo kertoo mistä on kyse: yksittäisen luokan olioiden tulisi olla vastuussa yhdestä asiasta.

    Olioita käytettäessä ohjelmointiongelman \"reaalimaailman asioita\" vastaa yleensä oma luokkansa. Puhelinluettelon tapauksessa tälläisiä reaalimaailman asioita olisivat esimerkiksi:

    Näistä nimi ja puhelinnumero ovat kenties liian vähäpätöisiä ollakseen omia luokkiaan, mutta henkilö voisi hyvinkin olla oma luokkansa, jonka vastuulla on sitoa yhteen tietty nimi ja siihen liittyvät puhelinnumerot.

    Myös puhelinluettelo itsessään on potentiaalinen luokka, sen vastuulla on hallinnoida eri henkilöiden tietoja.

    Nämä kaksi luokkaa eli puhelinluettelo ja henkilö muodostavat sovelluksen ytimen, eli niin sanotun sovelluslogiikan. Näiden lisäksi ohjelma tarvitsee muutaman muunkin luokan.

    Käyttäjän kanssa tapahtuvasta interaktiosta huolehtivaa luokkaa ei kannata sotkea sovelluslogiikan kanssa samaan luokkaan - sehän on kokonaan oma vastuunsa. Eli sovelluslogiikan luokkien lisäksi ohjelmalle tulee myös luokka, joka huolehtii ohjelman käyttöliittymästä.

    Talletamme puhelinluettelon tiedot tiedostoon. Myös tiedoston käsittely on selkeästi oma vastuunsa, joten tulemme sisällyttämään siihen käytettävän koodin omaan luokkaansa.

    Kun ohjelman luokkarakenne alkaa pikkuhiljaa hahmottua, nousee kysymykseksi se, mistä ohjelmointi kannattaa aloittaa. Usein paras tapa aloittaa on pienellä palalla sovelluslogiikka.

    Vaihe 1: sovelluslogiikan runko

    Aloitetaan luokasta Puhelinluettelo. Runko voisi näyttää seuraavalta:

    class Puhelinluettelo:\n    def __init__(self):\n        self.__henkilot = []\n\n    def lisaa_numero(self, nimi: str, numero: str):\n        pass\n\n    def hae_numerot(self, nimi: str):\n        pass\n

    Luokka pitää siis sisällään listan henkilöitä ja tarjoaa metodit tietojen lisäämiseen ja hakemiseen.

    Jokaiseen henkilöön voi liittyä useita numeroita, joten toteutetaan luettelon sisäinen tila sanakirjan avulla, koska sanakirjasta on helppo hakea nimen perusteella. Sanakirjaan on helppo tallettaa suoraan myös nimeen liittyvät numerot, joten ainakaan tässä vaiheessa ei tarvita erillistä luokkaa yksittäisen henkilön tietojen tallettamiseen.

    Luokka laajenee seuraavasti. Mukana on myös pieni toiminnan varmistava koodinpätkä:

    class Puhelinluettelo:\n    def __init__(self):\n        self.__henkilot = {}\n\n    def lisaa_numero(self, nimi: str, numero: str):\n        if not nimi in self.__henkilot:\n            # henkilöön liittyy lista puhelinnumeroja\n            self.__henkilot[nimi] = []\n\n        self.__henkilot[nimi].append(numero)\n\n    def hae_numerot(self, nimi: str):\n        if not nimi in self.__henkilot:\n            return None\n\n        return self.__henkilot[nimi]\n\n# testikoodi\nluettelo = Puhelinluettelo()\nluettelo.lisaa_numero(\"Erkki\", \"02-123456\")\nprint(luettelo.hae_numerot(\"Erkki\"))\nprint(luettelo.hae_numerot(\"Emilia\"))

    Testikoodin tulostus on seuraava:

    ['02-123456']\nNone

    Metodi hae_numerot siis palauttaa arvon None, jos henkilö ei löydy luettelosta, jos henkilö löytyy, palautetaan lista joka sisältää henkilön puhelinnumerot.

    Ohjelmoidessa mitä tahansa ohjelmaa kannattaa aina kokeilla, että koodi toimii kuten sen olettaa toimivan, ennen kun etenee muuhun koodiin.\nUsein tämä testikoodi on poisheitettävää koodia, ja sikäli voisi ajatella testaamisesta olevan ylimääräistä vaivaa. Lähes 100% tapauksissa ei näin kuitenkaan ole.

    Koodiin tullut bugi kannattaa saada kiinni ja korjata niin pian kuin mahdollista. Jos koodin toimivuuden varmistaa lähes jokaisen uuden koodirivin jälkeen, on debuggaus ja korjaaminen yleensä vaivatonta ja nopeaa, koska tällöin voi olla melko varma siitä, että ongelma johtuu hetki sitten lisätyistä koodiriveistä. Jos taas koodia testataan vasta sen jälkeen kun siihen on lisätty kymmeniä koodirivejä, on virhelähteitä moninkertaisesti.

    Vaihe 2: käyttöliittymän runko

    Kun sovelluslogiikan ydintoiminnallisuus on kunnossa, voidaan edetä sovelluksen tekstikäyttöliittymään. Tehdään sitä varten oma luokka PuhelinluetteloSovellus, jonka runko on seuraava:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Luokka saattaa vaikuttaa vielä hämmentävältä, mutta tässä luodaan tosiaan vasta runko toiminnalle. Konstruktori luo puhelinluettelon, jonka olio pitää sisällään. Metodi suorita(self) käynnistää sovelluksen tekstikäyttöliittymän, jonka ytimen muodostaa while-silmukka, joka kyselee käyttäjältä mikä komento halutaan suorittaa. Ennen toistolauseeseen menemistä ohjelma tulostaa käyttöohjeet, kutsumalla metodia ohje(self). Varsinaiset toiminnot toteutetaan seuraavaksi.

    Laajennetaan käyttöliittymää siten, että luetteloon voidaan lisätä uusia tietoja:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n        print(\"1 lisäys\")\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n            elif komento == \"1\":\n                nimi = input(\"nimi: \")\n                numero = input(\"numero: \")\n                self.__luettelo.lisaa_numero(nimi, numero)\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Jos valittu komento on tietojen lisäys (eli komento on 1), kysyy käyttöliittymä nimen ja numeron käyttäjältä, ja lisää tiedot puhelinluetteloon kutsumalla sopivaa luettelon metodia.

    Käyttöliittymä on siis vastuussa ainoastaan siitä, että se kommunikoi käyttäjän kanssa. Puhelinnumeron säilöminen nimen yhteyteen on jätetty kokonaisuudessan Puhelinluettelo-olion vastuulle.

    Käyttöliittymän rakennetta on mahdollista vielä parannella siten, että tietojen lisäys eriytetään omaan metodiinsa lisays(self):

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n        print(\"1 lisäys\")\n\n    # eriytetään uusien tietojen lisääminen omaksi metodiksi\n    def lisays(self):\n        nimi = input(\"nimi: \")\n        numero = input(\"numero: \")\n        self.__luettelo.lisaa_numero(nimi, numero)\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n            elif komento == \"1\":\n                self.lisays()\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Erillisen metodin käyttämisen taustallakin on sama separation of concerns -periaate. Sen sijaan että koko käyttöliittymän toiminnallisuus sijoitettaisiin ison while-silmukan sisälle, tehdään jokaisesta yksittäisestä toiminnosta oma metodinsa. Tämä helpottaa kokonaisuuden hallintaa. Jos halutaan muokata tietojen lisäämisen toiminnallisuutta, tiedetään heti missä päin relevantti koodi sijaitsee.

    Lisätään käyttöliittymään toiminnallisuus numeroiden hakemista varten. Sijoitetaan sen hoitava koodi heti omaan metodiinsa:

    \nclass PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n\n    def ohje(self):\n        print(\"komennot: \")\n        print(\"0 lopetus\")\n        print(\"1 lisäys\")\n        print(\"2 haku\")\n\n    def lisays(self):\n        nimi = input(\"nimi: \")\n        numero = input(\"numero: \")\n        self.__luettelo.lisaa_numero(nimi, numero)\n\n    def haku(self):\n        nimi = input(\"nimi: \")\n        numerot = self.__luettelo.hae_numerot(nimi)\n        if numerot == None:\n            print(\"numero ei tiedossa\")\n            return\n        for numero in numerot:\n            print(numero)\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n                break\n            elif komento == \"1\":\n                self.lisays()\n            elif komento == \"2\":\n                self.haku()\n            else:\n                self.ohje()\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    Sovelluksen perusversio toimii nyt. Seuraavassa esimerkki sovelluksen käytöstä:

    komennot:\n0 lopetus\n1 lisäys\n2 haku

    komento: 1\nnimi: Erkki\nnumero: 02-123456

    komento: 1\nnimi: Erkki\nnumero: 045-4356713

    komento: 2\nnimi: Erkki\n02-123456\n045-4356713

    komento: 2\nnimi: Emilia\nnumero ei tiedossa

    komento: 0

    Koodia on aika paljon, todennäköisesti enemmän kuin jos kaikki olisi ohjelmoitu yhteen pötköön. Koodin rakenne on kuitenkin siistihkö, ja koodin laajentamisenkaan ei pitäisi olla kovin hankalaa.

    Vaihe 3: tietojen haku tiedostosta

    Laajennetaan ohjelmaa siten, että se lataa käynnistäessään puhelinluettelon tiedostosta, joka on seuraavaa muotoa:

    Erkki;02-1234567;045-4356713\nEmilia;040-324344

    Tiedoston käsittely on selkeästi oma vastuualueensa, eli toteutetaan sitä varten oma luokka:

    class Tiedostonkasittelija():\n    def __init__(self, tiedosto):\n        self.__tiedosto = tiedosto\n\n    def lataa(self):\n        nimet = {}\n        with open(self.__tiedosto) as f:\n            for rivi in f:\n                osat = rivi.strip().split(';')\n                nimi, *numerot = osat\n                nimet[nimi] = numerot\n\n        return nimet

    Konstruktorin parametrina annetaan tiedoston nimi. Metodi lataa(self) lukee tiedoston, ja pilkkoo sen rivit sanakirjaksi, missä avain on nimi ja arvona ovat nimeen liittyvät numerot.

    Metodi käyttää erästä Pythonin kätevää ominaisuutta: listasta on mahdollista ottaa ensin yksittäisiä alkioita erikseen nimettyinä muuttujina, sekä loput alkiot uutena listana, kuten seuraavasta esimerkistä käy ilmi. Luvusta 6 muistamme että merkkijonojen metodi split tuottaa nimenomaan listan.

    lista = [1, 2, 3, 4, 5]\neka, toka, *loput = lista\nprint(eka)\nprint(toka)\nprint(loput)

    1\n2\n[3, 4, 5]

    Sijoituslauseen viimeisen muuttujan nimen edessä on *, ja se tarkoittaa, että viimeiseen muuttujaan kerätään taulukosta loput, eli kolmas ja sitä seuraavat alkiot.

    Tiedostonkäsittelijääkin kannattaa ehdottomasti testata, ennen kuin se pultataan muuhun koodiin:

    t = Tiedostonkasittelija(\"luettelo.txt\")\nprint(t.lataa())

    {'Erkki': ['02-1234567', '045-4356713'], 'Emilia': ['040-324344']}

    Kun tiedostosta lukemisen todetaan toimivan, liitetään koodi muuhun ohjelmaan. Looginen paikka tiedoston lukemiseen on se hetki kun sovellus käynnistyy, eli luokan PuhelinluetteloSovellus konstruktori:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = Tiedostonkasittelija(\"luettelo.txt\")\n\n        # listään tiedostossa olevat nimet luetteloon\n        for nimi, numerot in self.__tiedosto.lataa().items():\n            for numero in numerot:\n                self.__luettelo.lisaa_numero(nimi, numero)\n\n    # muu koodi

    Tiedoston lukua osana PuhelinLuetteloSovellusta kannattaa myös testata. Kun on varmistettu, että tiedoston sisältö saadaan ladattua luetteloon, voidaan edetä viimeiseen vaiheeseen.

    Vaihe 4: tietojen talletus tiedostoon

    Viimeistellään ohjelman alustava versio vielä siten, että se tallentaa lopetettaessa puhelinluettelon takaisin tiedostoon.

    Tätä varten luokkaa Puhelinluettelo tulee laajentaa siten, että sieltä saadaan tallennusta varten kaikki tiedot ulos:

    class Puhelinluettelo:\n    def __init__(self):\n        self.__henkilot = {}\n\n    # ...\n\n    # palautetaan tiedostoon tallentamista varten kaikki tiedot\n    def kaikki_tiedot(self):\n        return self.__henkilot

    Tallennus on luonnollisesti luokan Tiedostonkasittelija vastuulla, eli laajennetaan sitä metodilla talleta, joka saa parametriksi puhelinluetteloa edustavan sanakirjan:

    class Tiedostonkasittelija():\n    def __init__(self, tiedosto):\n        self.__tiedosto = tiedosto\n\n    def lataa(self):\n        # ...\n\n    def talleta(self, luettelo: dict):\n        with open(self.__tiedosto, \"w\") as f:\n            for nimi, numerot in luettelo.items():\n                rivi = [nimi] + numerot\n                f.write(\";\".join(rivi) + \"\\n\")

    Tallennus tapahtuu samalla kun sovelluksen käyttö lopetetaan. Tehdään tätäkin tarkoitusta varten oma metodinsa ja kutsutaan sitä sopivassa kohdassa:

    \nclass PuhelinluetteloSovellus:\n    # muu koodi\n\n    # metodi, joka suoritetaan lopetettaessa sovelluksen käyttö\n    def lopetus(self):\n        self.__tiedosto.talleta(self.__luettelo.kaikki_tiedot())\n\n    def suorita(self):\n        self.ohje()\n        while True:\n            print(\"\")\n            komento = input(\"komento: \")\n            if komento == \"0\":\n\n                self.lopetus()\n                break\n            elif komento == \"1\":\n                self.lisays()\n            elif komento == \"2\":\n                self.haku()\n            else:\n                self.ohje()

    Tässä tehtävässä tehdään pieni laajennus puhelinluettelosovellukseen. Yllä kehitetty koodi löytyy tehtäväpohjasta. Laajenna ratkaisuasi komennolla, joka mahdollistaa nimen etsimisen numeron perusteella. Laajennuksen jälkeen sovelluksen pitäisi toimia seuraavasti:

    komennot:\n0 lopetus\n1 lisäys\n2 haku\n3 haku numeron perusteella

    komento: 1\nnimi: Erkki\nnumero: 02-123456

    komento: 1\nnimi: Erkki\nnumero: 045-4356713

    komento: 3\nnumero: 02-123456\nErkki

    komento: 3\nnumero: 0100100\ntuntematon numero

    komento: 0

    Tee laajennus sitten, että kunnioitat ohjelman rakennetta. Eli lisää luokkaan PuhelinluetteloSovellus uutta ominaisuutta varten sopiva apumetodi sekä oma haara while-silmukkaan. Lisää myös sovelluslogiikkaan eli luokkaan Puhelinluettelo metodi, joka mahdollistaa nimen hakemisen numeron perusteella.

    Olioita sanakirjassa

    Seuraavassa tehtävässä on tarkoitus muuttaa puhelinluetteloa siten, että sanakirjan arvoksi talletetaan tavallisten listojen sijaan olioita.

    Periaatteessa asiassa ei ole mitään ihmeellistä, mutta kurssilla ei vielä ole näin tehty, joten tutkitaan ennen tehtävää hieman samantapaista, mutta yksinkertaisempaa esimerkkiä.

    Tehdään sovellus, jonka avulla voidaan pitää kirjaa siitä, kuinka monta tehtävää opiskelijat ovat tehneet kurssin aikana. Kunkin opiskelijan tehtävämäärä lasketaan yksinkertaisen olion avulla:

    class Tehtavalaskuri:\n    def __init__(self):\n        self.__tehtavia = 0\n\n    def merkkaa(self):\n        self.__tehtavia += 1\n\n    def tehtyja(self):\n        return self.__tehtavia

    Luokkaa käyttävä pääohjelma on seuraavassa:

    opiskelijat = {}\n\nprint(\"merkataan tehtäviä\")\nwhile True:\n    nimi = input(\"opiskelija: \")\n    if len(nimi) == 0:\n        break\n\n    # luodaan tarvittaessa olio tehtävämäärän laskemista varten\n    if not nimi in opiskelijat:\n        opiskelijat[nimi] = Tehtavalaskuri()\n\n    # merkataan tehdyksi nimeä vastaavaan olioon\n    opiskelijat[nimi].merkkaa()\n\nprint()\nprint(\"tehdyt tehtävät:\")\n\nfor opiskelija, tehtavat in opiskelijat.items():\n    print(f\"{opiskelija} tehtäviä {tehtavat.tehtyja()} kpl\")

    Käyttöesimerkki

    merkataan tehtäviä\nopiskelija: pekka\nopiskelija: sara\nopiskelija: antti\nopiskelija: sara\nopiskelija: juuso\nopiskelija: juuso\nopiskelija: antti\nopiskelija: sara\nopiskelija:

    tehdyt tehtävät:\npekka tehtäviä 1 kpl\nantti tehtäviä 2 kpl\nsara tehtäviä 3 kpl\njuuso tehtäviä 2 kpl

    Esimerkissä on parikin huomionarvoista seikkaa. Kun opiskelijan nimi syötetään, tarkastetaan aina ensin onko opiskelijaa vastaava olio jo sanakirjassa. Jos olioa ei ole, luodaan se:

    if not nimi in opiskelijat:\n    opiskelijat[nimi] = Tehtavalaskuri()

    Tämän jälkeen tiedetään että olio on olemassa. Se on joko luotu juuri äsken tai jo aiemmalla silmukan kierroksella. Haetaan olio sanakirjasta, ja kutsutaan sen metodia merkkaa:

    opiskelijat[nimi].merkkaa()

    Rivillä tapahtuu oikeastaan kaksi asiaa, ja sama voitaisiin kirjoittaa siten, että sanakirjasta haettu olio sijoitettaisiin apumuuttujaan:

    opiskelijan_laskuri = opiskelijat[nimi]\nopiskelijan_laskuri.merkkaa()

    Huomaa, että vaikka olio sijoitettaisiin apumuuttujaan, se ei tarkoita että olio poistuisi sanakirjasta tai oliosta syntyisi kopio. Apumuuttuja on ainoastaan viite sanakirjassa olevaan olioon.

    Esimerkin koodia kannattaa ehdottomasti kokeilla visualisaattorissa jos ei ole aivan 100% varma siitä, miten koodi toimii.

    Tässä tehtävässä laajennetaan puhelinluettelosovellusta siten, että henkilöihin voi liittyä myös osoite. Yksinkertaisuuden vuoksi koodista on kuitenkin poistettu tiedostoon tallentaminen. Myös muutama metodi on uudelleennimetty vastaamaan paremmin laajennuksen jälkeistä tilannetta.

    Luokka henkilön tietojen esittämiseen

    Siirretään henkilön tietojen (eli puhelinnumerojen sekä osoitteen) esittäminen oman luokkansa Henkilo vastuulle. Toteuta luokka siten, että se toimii seuraavasti:

    henkilo = Henkilo(\"Erkki\")\nprint(henkilo.nimi())\nprint(henkilo.numerot())\nprint(henkilo.osoite())\nhenkilo.lisaa_numero(\"040-123456\")\nhenkilo.lisaa_osoite(\"Mannerheimintie 10 Helsinki\")\nprint(henkilo.numerot())\nprint(henkilo.osoite())

    Erkki\n[]\nNone\n['040-123456']\nMannerheimintie 10 Helsinki

    Puhelinluettelo käyttämään luokkaa Henkilo

    Muuta koodiasi siten, että se toimii käyttäjän näkökulmasta täysin samoin kuin aiemmin, mutta luokka Puhelinluettelo tallettaakin henkilöt sisäisesti käyttäen luokan Henkilo olioita. Käytännössä siis oliomuuttujana __henkilot tulee olla sanakirja, johon listojen sijaan talletetaan henkilö-olioita.

    VAROITUS: kun teet koodiin tämän tehtävän kaltaista rakenteellista muutosta, etene pienin askelin. Älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on varma keino ajautua pahoihin ongelmiin.

    Sopiva pieni askel nyt voi olla se, että tarkastat ensin erikseen luokan Puhelinluettelo toimivuuden. Esimerkiksi seuraavan koodin tulee toimia kuten olettaa saattaa:

    luettelo = Puhelinluettelo()\nluettelo.lisaa_numero(\"Erkki\", \"02-123456\")\nprint(luettelo.hae_tiedot(\"Erkki\"))\nprint(luettelo.hae_tiedot(\"Emilia\"))

    Tehtävässä ei tarkisteta, millainen tulostusasu hae_tiedot-metodin palauttamalla tuloksella on, mutta varmista ettei koodi aiheuta virheitä, ja että tulos on järkevä. Kun olet 100% varma, että kaikki toimii luokan Puhelinluettelo osalta, voit edetä varmistamaan, että kaikki toimii edelleen entiseen tapaan käyttöliittymää käytettäessä.

    Osoitteen lisääminen

    Laajenna nyt sovellusta siten, että puhelinluetteloon on mahdollista tallettaa myös henkilöiden osoitteet. Ohjelman tulisi toimia seuraavasti:

    komennot:\n0 lopetus\n1 nimen lisäys\n2 haku\n3 osoitteen lisäys

    komento: 1\nnimi: Erkki\nnumero: 02-123456

    komento: 3\nnimi: Emilia\nosoite: Viherlaaksontie 7, Espoo

    komento: 2\nnimi: Erkki\n02-123456\nosoite ei tiedossa

    komento: 2\nnimi: Emilia\nnumero ei tiedossa\nViherlaaksontie 7, Espoo

    komento: 3\nnimi: Erkki\nosoite: Linnankatu 75, Turku

    komento: 2\nnimi: Erkki\n02-123456\nLinnankatu 75, Turku

    komento: 2\nnimi: Wilhelm\nosoite ei tiedossa\nnumero ei tiedossa

    komento: 0

    VAROITUS ja vihje: kuten tehtävän edellisessä osassa sanottiin, älä missään tapauksessa yritä tehdä kaikkea kerrallaan, se on varma keino ajautua pahoihin ongelmiin.

    Varmista ensin että voit lisätä osoitteita luokkaan Puhelinluettelo ja kun olet 100% varma, että se toimii, voit laajentaa sovelluksen käyttöliittymää uuden toiminnallisuuden osalta.

    Erinäisiä huomioita

    Puhelinluetteloesimerkki noudattaa rakenteeltaan melko klassisia hyvän olio-ohjelmoinnin periaatteita. Kantavana ideana on siis ohjelman eri vastuualueiden jaottelu erillisiin luokkiin ja metodeihin. Eräs suurimmista motiiveista tällaiselle jaottelulle on monimutkaisuuden hallinta. Toinen tärkeä syy on se, että oikein tehty koodin jaottelu - tai modularisointi kuten ammattijargon asian ilmaisee - tekee koodista potentiaalisesti helpomman ylläpitää ja laajentaa.

    Oikeissa ohjelmistoissa ylivoimaisesti suurimman kustannuserän aiheuttaa juuri ylläpito (eli bugien korjailu) sekä ohjelman laajentaminen, joten tällä seikalla on taloudellisesti erittäin suuri merkitys.

    Nostetaan esimerkistä esiin vielä pari tärkeää seikkaa. Koodi ilmentää hyvin sitä, miten sovelluslogiikan varsinainen ydin on eriytetty sekä käyttöliittymästä, että datan tallettamisesta. Tämä on tärkeää muutamastakin syystä. Ensinnäkin se mahdollistaa koodin testailun pienemmissä yksiköissä, luokka ja metodi kerrallaan. Toisaalta koska sovelluslogiikka ei nyt riipu käyttöliittymästä tai tiedon talletustavasta, on esim. käyttöliittymää mahdollista muuttaa (ainakin johonkin pisteeseen asti) rikkomatta muuta sovellusta.

    Tiedostojen käsittelyn suhteen kannattaa myös huomata se, että ohjelma lukee tiedostoa ainoastaan kerran, käynnistysvaiheessa. Tämän jälkeen kaikki tieto säilytetään ohjelman muuttujissa. Ohjelma tallettaa tiedot kokonaisuudessaan, eli käytännössä uudelleenkirjoittaa tiedoston joka kerta kokonaan uudestaan. Tiedostojen käsittely kannattaa lähes kaikissa tapauksissa tehdä näin.

    Hyvän koodin kirjoittamisesta kerrotaan lisää esimerkiksi Robert Martinin mainiossa kirjassa Clean Code. Kirjan koodiesimerkit on kuitenkin toteutettu Javalla, eli esimerkkien lukeminen saattaa tässä vaiheessa olla vielä varsin työlästä. Paneudumme ylläpidettävyydeltään ja laajennettavuudeltaan laadukkaan koodin toteuttamiseen tarkemmin kursseilla Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Hyvän olio-ohjelmoinnin periaatteiden mukaisen koodin kirjoittamisella on myös hintansa. Koodia tulee todennäköisesti enemmän kuin jos sama ongelma ratkaistaisiin yhteen pötköön kirjoitetulla spagettikoodilla. Ohjelmoijan onkin aina ratkaistava se, minkälainen lähestymistapa on paras kuhunkin tilanteeseen. Joskus voi olla vain parasta häkkeröidä kasaan nopeasti jotain joka toimii nyt. Jos taas on odotettavissa, että samaa koodia tullaan jatkossa laajentamaan. joko koodarin itsensä tai jonkun muun toimesta, on todennäköisesti kannattavaa panostaa koodin luettavuuteen ja jäsentämiseen jossain määrin jo alkuvaiheissa.

    Harjoitellaan vielä isomman ohjelmakokonaisuuden toteuttamista yhden ohjelmointitehtävän verran.

    Tee interaktiivinen ohjelma, jonka avulla voit pitää kirjaa opintomenestyksestäsi. Sovelluksen rakenteen saat päättää itse, mutta nyt on hyvä tilaisuus harjoitella Puhelinluettelo-esimerkin kaltaisen oliorakenteen muodostamista.

    Ohjelman tulee toimia seuraavasti:

    1 lisää suoritus\n2 hae suoritus\n3 tilastot\n0 lopetus

    komento: 1\nkurssi: Ohpe\narvosana: 3\nopintopisteet: 5

    komento: 2\nkurssi: Ohpe\nOhpe (5 op) arvosana 3

    komento: 1\nkurssi: Ohpe\narvosana: 5\nopintopisteet: 5

    komento: 2\nkurssi: Ohpe\nOhpe (5 op) arvosana 5

    komento: 1\nkurssi: Ohpe\narvosana: 1\nopintopisteet: 5

    komento: 2\nkurssi: Ohpe\nOhpe (5 op) arvosana 5

    komento: 2\nkurssi: Java-ohjelmointi\nei suoritusta

    komento: 1\nkurssi: Tira\narvosana: 1\nopintopisteet: 10

    komento: 1\nkurssi: Tilpe\narvosana: 2\nopintopisteet: 5

    komento: 1\nkurssi: Lapio\narvosana: 4\nopintopisteet: 1

    komento: 1\nkurssi: Lama\narvosana: 5\nopintopisteet: 8

    komento: 3\nsuorituksia 5 kurssilta, yhteensä 29 opintopistettä\nkeskiarvo 3.4\narvosanajakauma\n5: xx\n4: x\n3:\n2: x\n1: x

    komento: 0

    Muutama huomio: kultakin kurssilta tallentuu ainoastaan yksi arvosana. Arvosanaa voi korottaa, mutta se ei voi laskea.

    Tehtävästä on tarjolla kaksi tehtäväpistettä. Ensimmäisen pisteen saa jos toiminnot 1 ja 2 sekä lopetus toimivat. Toisen pisteen saa jos myös toiminto 3 on toteutettu.

    Epilogi

    Palataan vielä hetkeksi tarkastelemaan puhelinluetteloesimerkkiä, ja sen käyttöliittymän toteuttavaa luokkaa:

    class PuhelinluetteloSovellus:\n    def __init__(self):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = Tiedostonkasittelija(\"luettelo.txt\")\n\n    # muu koodi\n\nsovellus = PuhelinluetteloSovellus()\nsovellus.suorita()

    PuhelinluetteloSovellus-olio pitää siis sisällään sekä Puhelinluettelo-olion että Tiedostonkasittelija-olion. Jos olisimme ammattikoodareita, tekisimme sovellukseen pienen muutoksen. Nyt nimittäin se, että sovellus käyttää nimenomaan tiedostoa luettelo.txt tallentamaan luettelon tiedot, on sovelluksen käyttöliittymän kannalta täysin turha deltaji. Jos tiedosto haluttaisiin vaihtaa, edellyttäisi se muutosta luokan PuhelinluetteloSovellus koodiin. Tämä taas ei ole hyvä separation of concerns -periaatetta ajatellen, sillä puhelinluettelon tallentaminen ei kuulu ollenkaan käyttöliittymästä huolehtivan luokan vastuisiin.

    Parempi vaihtoehto olisikin luoda tiedostokäsittelijä muualla ja antaa se PuhelinluetteloSovellus-oliolle, esimerkiksi konstruktorin parametrina:

    class PuhelinluetteloSovellus:\n    def __init__(self, tiedosto):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = tiedosto\n\n    # muu koodi\n\n# luodaan tallennuksen hoitava olio\ntallennuspalvelu = Tiedostonkasittelija(\"luettelo.txt\")\n# ja annetaan se PuhelinluetteloSovellus-oliolle konsturuktorin parametrina\nsovellus = PuhelinluetteloSovellus(tallennuspalvelu)\nsovellus.suorita()

    Näin on saatu poistettua luokalta PuhelinluetteloSovellus turha riippuvuus käsiteltävän tiedoston nimeen. Jos tiedoston nimi muuttuu, ei luokan koodiin tarvitse koskea ollenkaan. Riittää ainoastaan, että oliolle annetaan hieman erilainen konstruktoriparametri:

    class PuhelinluetteloSovellus:\n    def __init__(self, tiedosto):\n        self.__luettelo = Puhelinluettelo()\n        self.__tiedosto = tiedosto\n\n    # muu koodi\n\n# vaihdetaan tiedostoa\ntallennuspalvelu = Tiedostonkasittelija(\"uusi_luettelotiedosto.txt\")\nsovellus = PuhelinluetteloSovellus(tallennuspalvelu)\nsovellus.suorita()

    Tämä sama tekniikka mahdollistaa sen, että siirrytäänkin tallentamaan puhelinluettelo tiedoston sijaan esimerkiksi internetissä olevaan pilvipalveluun. On vain kirjoitettava pilvipalvelua käyttävä luokka, joka tarjoaa puhelinluettelosovellukselle samanlaiset metodit kuin Tiedostonkasittelija. Tämän luokan olio voidaan antaa sovellukselle, ilman että sovelluksen koodista tulee muuttaa riviäkään:

    class InternetTallennin:\n    # koodi joka tallentaa luettelon tiedot internetissä olevaan pilvipalveluun\n\ntallennuspalvelu = InternetTallennin(\"amazon-cloud\", \"mluukkai\", \"passwrd\")\nsovellus = PuhelinluetteloSovellus(tallennuspalvelu)\nsovellus.suorita()

    Kuten aiemmin todettiin, on tämän kaltaisten tekniikoiden käytöllä oma hintansa: koodia tulee enemmän, ja ohjelmoijan tulee harkita milloin se hinta kannattaa maksaa.

    Tässä esitelty tekniikka (joka kulkee ammattijargonissa nimellä dependency injection), missä oliolle annetaan ulkopuolelta käsin sen tarvitsema riippuvuus (eli käytännössä jokin muu olio) on erittäin tyypillinen kikka ammattimaisessa koodauksessa, muun muassa siksi, että se helpottaa ohjelmistojen laajentamista sekä niiden automatisoitua testaamista. Jatkamme teeman käsittelyä kursseilla Ohjelmistotekniikka ja Ohjelmistotuotanto.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/4-laajempi-sovellus.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-10/page-data.json b/page-data/osa-10/page-data.json index fad7011fb..97eaf8f27 100644 --- a/page-data/osa-10/page-data.json +++ b/page-data/osa-10/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-10", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-10","title":"Osa 10"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-10","title":"Osa 10"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-10/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-11/1-koosteet/page-data.json b/page-data/osa-11/1-koosteet/page-data.json index 74dc7555c..e11e15b35 100644 --- a/page-data/osa-11/1-koosteet/page-data.json +++ b/page-data/osa-11/1-koosteet/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-11/1-koosteet", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan koosteella (comprehension)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää koosteita uusien listojen muodostamiseen"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointiin liittyy usein erilaisten sekvenssien (eli sarjojen) käsittely. Aikaisemmissa osissa on käytetty runsaasti aikaa merkkijonojen, listojen ja sanakirjojen käsittelyyn eri tavoilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan tilanne, jossa meillä on lista kokonaislukuja. Tämän listan perusteella meidän pitäisi luoda vastaava merkkijonolista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perinteinen tapa toteuttaa operaatio näyttäisi esimerkiksi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nmerkkijonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n merkkijonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"listakooste","style":"position:relative;"},"children":[{"type":"text","value":"Listakooste"},{"type":"element","tagName":"a","properties":{"href":"#listakooste","ariaLabel":"listakooste permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tarjoaa kuitenin \"pythonmaisemman\" tavan uuden listan muodostamiseksi vanhan perusteella. Menetelmää voidaan kutsua \"listakoosteeksi\", mutta huomattavasti yleisempää on käyttää englanninkielistä nimeä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"list comprehension"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Menetelmässä ideana on kuvata yhden rivin lausekkeella, mikä operaatio listan kaikille alkioille tehdään, ennen kuin ne tallennetaan uuteen listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi yllä esitetty ohjelma, joka luo merkkijonolistan kokonaislukulistan perusteella, näyttäisi listakoostetta hyödyntäen tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nmerkkijonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteessa näyttää siis olevan jotakuinkin samat elementit kuin perinteisessäkin toteutuksessa, mutta syntaksi on uudenlainen. Yleisemmin listakoosteen syntaksi voitaisiin esittää esimerkiksi näin:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ for in ]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteen ympärillä olevat hakasulkeet kertovat, että lopputuloksena on uusi lista. Koosteessa poimitaan yksi kerrallaan alkio alkuperäisestä sarjasta (esimerkkimme tapauksessa listasta) ja tallennetaan siihen liittyvän lausekkeen arvo uuteen listaan. Lopputuloksena on lista, jossa on yhtä paljon alkioita kuin alkuperäisessä listassa ja kaikki alkiot on käsitelty samalla tavalla."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 301px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/3f079cde22be6cf33b7be317492aa108/fb933/11_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 131.7391304347826%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAaCAYAAAC3g3x9AAAACXBIWXMAAAsTAAALEwEAmpwYAAACRUlEQVRIx42V16oCQQyG5/0fyStBRUQUbCCiggWx995y+AJZouyuJxAmk/JvJpnJBkmhx+Mh1WpVCoWCtFot+Q+F7XYrSbzb7eRyucj5fJbT6SRpvsZhNptpJtfrVZBZ2S8WCzkejyqv12vl5/OpOmxxMchhs9lE6XqZ7HCCyA62MmCLi0EOq9UqUiyXS3m/3yqT0e12U5msYAgdNghfYozACvP5XFMdjUZ6FHg8HuuKMzI+MDI6k82fWDDQB/sSGez3e/0SK42ACMBO/ew02LwvsXayYAJER+kUxAqI1ZIggExnPsQYgRX8Brrf7+pIrQ6HgwbAAGIjI2w0gL2P1Qy9wtbX66VgMLWyOgICIHp84mIjwG/mWLySSqUimUxGyuWyNJtN1WGLi4kAPagV2u5dHPmm+LgPQJ82R6P4dDiXy0mpVJJ8Pi/ZbDZqkjXPgyUC4kzBAbULTlPsqOx/AvrUAQMIEDrc7Xal1+upTEOw2bOMPbLvlO80GQ0GA6nVasrI6HyHU7tsZPeNZwaADQdkdNjsDn7Hf7wUvmz3jGDGEmyAtseGD76W7cdLofg4UGiuBAH2lnn42GFkuzbmQwyx2DVDXkC/39cacU2m06leXmQmCKOf1cvY8DGZWDB02vh5ljQP7Rn+mofIqRPbjsHRrAR+2sRO7OFwqA58FRklexu4yJPJRJl62UBFjy8xxLJHDrQ/iX0H/U1Iiwlp/1iuRaPRkHa7LfV6XYrFYvTkEv/LcWPIGkMjOp2OHhFG/p4y3/wHBFfbIcHIViUAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/3f079cde22be6cf33b7be317492aa108/a0b58/11_1_2.webp 230w","/static/3f079cde22be6cf33b7be317492aa108/c4c4c/11_1_2.webp 301w"],"sizes":"(max-width: 301px) 100vw, 301px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/3f079cde22be6cf33b7be317492aa108/81c8e/11_1_2.png 230w","/static/3f079cde22be6cf33b7be317492aa108/fb933/11_1_2.png 301w"],"sizes":"(max-width: 301px) 100vw, 301px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/3f079cde22be6cf33b7be317492aa108/fb933/11_1_2.png","alt":"11 1 2","title":"11 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisessa esimerkissä jokainen alkuperäisen listan alkio kerrotaan kymmenellä ja tallennetaan uuteen listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nluvut_kerrottuna "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut_kerrottuna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3, 4, 5, 6, 7, 8, 9]\n[10, 20, 30, 40, 50, 60, 70, 80, 90]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lauseke voi olla mikä tahansa Pythonin lauseke. Esimerkiksi koosteessa voidaan kutsua itse määriteltyä funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[120, 2, 24, 6, 1]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama ohjelma esitettynä perinteisellä silmukalla näyttäisi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteen avulla on siis mahdollista ilmaista sama toiminnallisuus tiiviimmin ja silti yhä helposti luettavassa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palauttamalla funktiosta suoraan kooste saadaan aikaiseksi hyvin tiivistä koodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertomat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neliojuuret","tmcname":"osa11-01_neliojuuret"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"neliojuuret(luvut: list)"}]},{"type":"text","value":", joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan parametrina olevien lukujen neliöjuurista. Neliöjuuren laskemiseen löytyy sopiva funktio moduulista "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"math"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee käyttää listakoostetta. Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rivit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" neliojuuret"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1.0\n1.4142135623730951\n1.7320508075688772\n2.0"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tähtirivit","tmcname":"osa11-02_tahtirivit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tahtirivit(luvut: list)"}]},{"type":"text","value":", joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan, joka koostuu tähtiriveistä, joiden pituus vastaa parametrina olevan listan lukuja. Funktion tulee käyttää listakoostetta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rivit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tahtirivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrivit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tahtirivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*\n**\n***\n****\n\n****\n***\n**\n*\n**********\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Paras koetulos","tmcname":"osa11-03_paras_koetulos"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Koesuoritus"}]},{"type":"text","value":", jolla on seuraavat julkiset attribuutit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvosana1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvosana2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvosana3"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"parhaat_tulokset(suoritukset: list)"}]},{"type":"text","value":". Funktio saa parametrikseen listan koesuoritusolioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa listakoostetta käyttäen uuden listan, johon on tallennettu jokaisen suorituksen paras arvosana."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki suorituksesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suoritus1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuoritus2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuoritus3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paavo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuoritukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"suoritus1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suoritus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suoritus3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"parhaat_tulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[5, 4, 3]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pituudet","tmcname":"osa11-04_pituudet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituudet(listat: list)"}]},{"type":"text","value":" joka saa parametriksi listan, joka sisältää listoja, jotka sisältävät kokonaislukuja. Funktio palauttaa listan, joka sisältää parametrina olevien listojen pituudet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"listat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"324"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"31"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"listat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[5, 4, 0]"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"alkioiden-suodatus","style":"position:relative;"},"children":[{"type":"text","value":"Alkioiden suodatus"},{"type":"element","tagName":"a","properties":{"href":"#alkioiden-suodatus","ariaLabel":"alkioiden suodatus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisissä esimerkeissä uusi lista muodostettiin kaikista alkuperäisen listan alkioista. Joskus on kuitenkin näppärää, jos voitaisiin valita alkuperäiseltä listalta vain tietyt alkiot. Koosteessa tämä onnistuu yhdistämällä siihen ehto-osa. Yleinen syntaksi on seuraava:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ for in if ]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erotuksena aiempaan koosteen loppuun kirjoitetaan siis ehtolause. Ainoastaan ne alkiot poimitaan mukaan tuloslistaan, joiden kohdalla ehtolauseke on tosi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä poimitaan kaikki parilliset alkiot uuteen listaan. Huomaa, että lausekkeena on esimerkissä ainoastaan listan alkio eli poimittavia alkioita ei käsitellä minkään operaation avulla ennen sijoittamista uuteen listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 4, 6, 4, 10, 12]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lausekkeeksi on määritelty jotain muuta kuin pelkkä alkio, mukaan otetuille alkioille toteutetaan tämä operaatio kuten ennenkin. Muokataan edellistä esimerkkiä niin, että uudessa listassa on kaikki alkuperäisen listan parilliset alkiot kerrottuna kymmenellä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[20, 40, 60, 40, 100, 120]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä lasketaan ainoastaan positiivisten alkioiden kertoma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[6, 24, 120, 1]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä edellisestä jatkettua esimerkkiä, jossa kertoma lasketaan vain parillisista positiivista luvuista. Lisäksi listaan tallennetaan tuplessa sekä alkuperäinen alkio että kertoma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[(2, 2), (4, 24), (6, 720)]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä lauseke on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(luku, kertoma(luku))"}]},{"type":"text","value":", joka muodostaa tuplen, jossa ensimmäinen alkio on alkio alkuperäisestä listasta ja toinen alkio kertoma-funktion palauttama arvo. Ehtolauseke on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku > 0 and luku % 2 == 0"}]},{"type":"text","value":", jossa valikoidaan mukaan vain alkiot, jotka ovat sekä positiivisia että jaollisia kahdella."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Poista pienemmät","tmcname":"osa11-05_poista_pienemmat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_pienemmat(luvut: list, raja: int)"}]},{"type":"text","value":", joka saa parametrikseen listan kokonaislukuja sekä raja-arvon, joka on myös kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio muodostaa listakoostetta käyttäen uuden listan, josta on jätetty pois raja-arvoa pienemmät luvut."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lukuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"65"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"poista_pienemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"poista_pienemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[65, 32, 11]\n[7, 8]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vokaalilla alkavat","tmcname":"osa11-06_vokaalilla_alkavat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vokaalilla_alkavat(sanat: list)"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävänäsi on listakoostetta hyödyntäen muodostaa ja palauttaa uusi lista, joka sisältää vain alkuperäisen listan ne sanat, jotka alkavat vokaalilla (a, e, i, o, u, y, ä, ö). Sekä pienien että suurten kirjaimien pitää kelvata."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"klista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"auto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mopo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Etana\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kissa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Koira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"OMENA\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" vok "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" vokaalilla_alkavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"klista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"auto\nEtana\nOMENA\nappelsiini"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaihtoehtoinen-haara-suodatuksessa","style":"position:relative;"},"children":[{"type":"text","value":"Vaihtoehtoinen haara suodatuksessa"},{"type":"element","tagName":"a","properties":{"href":"#vaihtoehtoinen-haara-suodatuksessa","ariaLabel":"vaihtoehtoinen haara suodatuksessa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteessa voi käyttää ehtolauseen ohella myös vaihtoehtoista haaraa. Tämä onnistuu käyttämällä jo aiemmin mainittua "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehtolauseketta"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":" if else "}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...joka saa arvokseen joko lausekkeen 1 tai 2 arvon riippuen siitä, onko ehto tosi vai epätosi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niinpä esim. ohjelma, joka tulostaa kahdesta luvusta suuremman yhdellä print-lauseella voisi näyttää tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 1:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 2:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun yhdistetään syntaksi listakoosteeseen, saadaan seuraavankaltainen rakenne:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ if else for in ]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopputuloksena syntyvässä listassa on yksi alkio jokaista alkuperäisen sarjan alkiota kohti. Jokaiselle alkiolle suoritetaan joko lauseke 1 tai lauseke 2 riippuen siitä onko ehtolauseke tosi vai ei."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki muodostaa uuden listan, jossa alkuperäisen listan negatiiviset alkiot on käännetty vastaluvuikseen - positiiviset alkiot kelpuutetaan sellaisenaan. Käytännössä koostelause siis muodostaa listan alkuperäisen listan itseisarvoista."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nitseisarvot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"itseisarvot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 3, 45, 110, 2, 9, 11]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suoritettava lauseke on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" (eli alkio sellaisenaan), jos ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku >= 0"}]},{"type":"text","value":" on tosi, muuten suoritetaan lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-luku"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkijonojen_pituudet"}]},{"type":"text","value":" saa parametrikseen sekalaisia alkioita sisältävän listan. Funktio laskee merkkijonoista tuloslistaan pituuden, muun tyyppisten alkioiden kohdalle asetetaan -1."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"merkkijonojen_pituudet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio palauttaa uudessa listassa merkkijonojen pituudet \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n testilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"123.344"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"heipparallaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n pituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkkijonojen_pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[3, -1, -1, 6, -1, 12, -1, -1]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lottorivi","tmcname":"osa11-07_lottorivi"},"children":[{"type":"element","tagName":"h2","properties":{"id":"lottorivi-osa-1","style":"position:relative;"},"children":[{"type":"text","value":"Lottorivi, osa 1"},{"type":"element","tagName":"a","properties":{"href":"#lottorivi-osa-1","ariaLabel":"lottorivi osa 1 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lottorivi"}]},{"type":"text","value":", joka saa konstruktorissaan parametrikseen kierroksen numeron (kokonaisluku) sekä seitsemänalkioisen kokonaislukulistan. Lista kuvaa kierroksen oikeita numeroita (eli oikeaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"riviä"}]},{"type":"text","value":"). Kirjoita lisäksi luokalle metodi"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"osumien_maara(pelattu_rivi: list)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...joka palauttaa kokonaislukuna tiedon siitä, kuinka monta osumaa rivissä oli. Metodin tulee käyttää listakoostetta! Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oikea "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lottorivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noma_rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osumien_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oma_rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lottorivi-osa-2","style":"position:relative;"},"children":[{"type":"text","value":"Lottorivi, osa 2"},{"type":"element","tagName":"a","properties":{"href":"#lottorivi-osa-2","ariaLabel":"lottorivi osa 2 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"osumat_paikoillaan(pelattu_rivi)"}]},{"type":"text","value":", joka palauttaa uuden listan. Uudessa listassa on vanhoilla paikoillaan oikeat numerot (eli ne, jotka löytyvät myös oikeasta rivistä), muiden paikalla on -1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin tulee käyttää listakoostetta. Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oikea "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lottorivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noma_rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osumat_paikoillaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oma_rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, -1, -1, 10, -1, 20, 30]"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan koosteella (comprehension)
    • \n
    • Osaat hyödyntää koosteita uusien listojen muodostamiseen
    • \n

    Ohjelmointiin liittyy usein erilaisten sekvenssien (eli sarjojen) käsittely. Aikaisemmissa osissa on käytetty runsaasti aikaa merkkijonojen, listojen ja sanakirjojen käsittelyyn eri tavoilla.

    Oletetaan tilanne, jossa meillä on lista kokonaislukuja. Tämän listan perusteella meidän pitäisi luoda vastaava merkkijonolista.

    Perinteinen tapa toteuttaa operaatio näyttäisi esimerkiksi tältä:

    luvut = [1, 2, 3, 6, 5, 4, 7]\n\nmerkkijonot = []\nfor luku in luvut:\n    merkkijonot.append(str(luku))

    Listakooste

    Python tarjoaa kuitenin \"pythonmaisemman\" tavan uuden listan muodostamiseksi vanhan perusteella. Menetelmää voidaan kutsua \"listakoosteeksi\", mutta huomattavasti yleisempää on käyttää englanninkielistä nimeä list comprehension.

    Menetelmässä ideana on kuvata yhden rivin lausekkeella, mikä operaatio listan kaikille alkioille tehdään, ennen kuin ne tallennetaan uuteen listaan.

    Esimerkiksi yllä esitetty ohjelma, joka luo merkkijonolistan kokonaislukulistan perusteella, näyttäisi listakoostetta hyödyntäen tältä:

    luvut = [1, 2, 3, 6, 5, 4, 7]\nmerkkijonot = [str(luku) for luku in luvut]

    Koosteessa näyttää siis olevan jotakuinkin samat elementit kuin perinteisessäkin toteutuksessa, mutta syntaksi on uudenlainen. Yleisemmin listakoosteen syntaksi voitaisiin esittää esimerkiksi näin:

    [<lauseke> for <alkio> in <sarja>]

    Koosteen ympärillä olevat hakasulkeet kertovat, että lopputuloksena on uusi lista. Koosteessa poimitaan yksi kerrallaan alkio alkuperäisestä sarjasta (esimerkkimme tapauksessa listasta) ja tallennetaan siihen liittyvän lausekkeen arvo uuteen listaan. Lopputuloksena on lista, jossa on yhtä paljon alkioita kuin alkuperäisessä listassa ja kaikki alkiot on käsitelty samalla tavalla.

    \n \n

    Tee funktio neliojuuret(luvut: list), joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan parametrina olevien lukujen neliöjuurista. Neliöjuuren laskemiseen löytyy sopiva funktio moduulista math

    Funktion tulee käyttää listakoostetta. Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Funktio toimii seuraavasti:

    rivit = neliojuuret([1,2,3,4])\nfor rivi in rivit:\n    print(rivi)

    1.0\n1.4142135623730951\n1.7320508075688772\n2.0

    Tee funktio tahtirivit(luvut: list), joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan, joka koostuu tähtiriveistä, joiden pituus vastaa parametrina olevan listan lukuja. Funktion tulee käyttää listakoostetta.

    Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Funktio toimii seuraavasti:

    rivit = tahtirivit([1,2,3,4])\nfor rivi in rivit:\n    print(rivi)\n\nprint()\n\nrivit = tahtirivit([4, 3, 2, 1, 10])\nfor rivi in rivit:\n    print(rivi)
    \n*\n**\n***\n****\n\n****\n***\n**\n*\n**********\n

    Tehtäväpohjassa on valmiina luokka Koesuoritus, jolla on seuraavat julkiset attribuutit:

      \n
    • nimi
    • \n
    • arvosana1
    • \n
    • arvosana2
    • \n
    • arvosana3
    • \n

    Kirjoita funktio parhaat_tulokset(suoritukset: list). Funktio saa parametrikseen listan koesuoritusolioita.

    Funktio palauttaa listakoostetta käyttäen uuden listan, johon on tallennettu jokaisen suorituksen paras arvosana.

    Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Esimerkki suorituksesta:

    suoritus1 = Koesuoritus(\"Pekka\",5,3,4)\nsuoritus2 = Koesuoritus(\"Pirjo\",3,4,1)\nsuoritus3 = Koesuoritus(\"Paavo\",2,1,3)\nsuoritukset = [suoritus1, suoritus2, suoritus3]\nprint(parhaat_tulokset(suoritukset))

    [5, 4, 3]

    Tee funktio pituudet(listat: list) joka saa parametriksi listan, joka sisältää listoja, jotka sisältävät kokonaislukuja. Funktio palauttaa listan, joka sisältää parametrina olevien listojen pituudet.

    Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Funktio toimii seuraavasti

    listat = [[1,2,3,4,5], [324, -1, 31, 7],[]]\nprint(pituudet(listat))

    [5, 4, 0]

    Alkioiden suodatus

    Edellisissä esimerkeissä uusi lista muodostettiin kaikista alkuperäisen listan alkioista. Joskus on kuitenkin näppärää, jos voitaisiin valita alkuperäiseltä listalta vain tietyt alkiot. Koosteessa tämä onnistuu yhdistämällä siihen ehto-osa. Yleinen syntaksi on seuraava:

    [<lauseke> for <alkio> in <sarja> if <ehtolauseke>]

    Erotuksena aiempaan koosteen loppuun kirjoitetaan siis ehtolause. Ainoastaan ne alkiot poimitaan mukaan tuloslistaan, joiden kohdalla ehtolauseke on tosi.

    Esimerkissä poimitaan kaikki parilliset alkiot uuteen listaan. Huomaa, että lausekkeena on esimerkissä ainoastaan listan alkio eli poimittavia alkioita ei käsitellä minkään operaation avulla ennen sijoittamista uuteen listaan:

    lista = [1, 1, 2, 3, 4, 6, 4, 5, 7, 10, 12, 3]\n\nparilliset = [alkio for alkio in lista if alkio % 2 == 0]\nprint(parilliset)

    [2, 4, 6, 4, 10, 12]

    Jos lausekkeeksi on määritelty jotain muuta kuin pelkkä alkio, mukaan otetuille alkioille toteutetaan tämä operaatio kuten ennenkin. Muokataan edellistä esimerkkiä niin, että uudessa listassa on kaikki alkuperäisen listan parilliset alkiot kerrottuna kymmenellä:

    lista = [1, 1, 2, 3, 4, 6, 4, 5, 7, 10, 12, 3]\n\nparilliset = [alkio * 10 for alkio in lista if alkio % 2 == 0]\nprint(parilliset)

    [20, 40, 60, 40, 100, 120]

    Seuraavassa esimerkissä lasketaan ainoastaan positiivisten alkioiden kertoma:

    def kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\"\n    k = 1\n    while n >= 2:\n        k *= n\n        n -= 1\n    return k\n\nif __name__ == \"__main__\":\n    lista = [-2, 3, -1, 4, -10, 5, 1]\n    kertomat = [kertoma(luku) for luku in lista if luku > 0]\n    print(kertomat)

    [6, 24, 120, 1]

    Tarkastellaan vielä edellisestä jatkettua esimerkkiä, jossa kertoma lasketaan vain parillisista positiivista luvuista. Lisäksi listaan tallennetaan tuplessa sekä alkuperäinen alkio että kertoma:

    \ndef kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\"\n    k = 1\n    while n >= 2:\n        k *= n\n        n -= 1\n    return k\n\nif __name__ == \"__main__\":\n    lista = [-2, 3, 2, 1, 4, -10, 5, 1, 6]\n    kertomat = [(luku, kertoma(luku)) for luku in lista if luku > 0 and luku % 2 == 0]\n    print(kertomat)\n

    [(2, 2), (4, 24), (6, 720)]

    Esimerkissä lauseke on siis (luku, kertoma(luku)), joka muodostaa tuplen, jossa ensimmäinen alkio on alkio alkuperäisestä listasta ja toinen alkio kertoma-funktion palauttama arvo. Ehtolauseke on luku > 0 and luku % 2 == 0, jossa valikoidaan mukaan vain alkiot, jotka ovat sekä positiivisia että jaollisia kahdella.

    Kirjoita funktio poista_pienemmat(luvut: list, raja: int), joka saa parametrikseen listan kokonaislukuja sekä raja-arvon, joka on myös kokonaisluku.

    Funktio muodostaa listakoostetta käyttäen uuden listan, josta on jätetty pois raja-arvoa pienemmät luvut.

    Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Esimerkki funktion käytöstä:

    lukuja = [1,65, 32, -6, 9, 11]\nprint(poista_pienemmat(lukuja, 10))\n\nprint(poista_pienemmat([-4, 7, 8, -100], 0))

    [65, 32, 11]\n[7, 8]

    Kirjoita funktio vokaalilla_alkavat(sanat: list), joka saa parametrikseen listan merkkijonoja.

    Tehtävänäsi on listakoostetta hyödyntäen muodostaa ja palauttaa uusi lista, joka sisältää vain alkuperäisen listan ne sanat, jotka alkavat vokaalilla (a, e, i, o, u, y, ä, ö). Sekä pienien että suurten kirjaimien pitää kelvata.

    Funktion maksimipituus on (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Esimerkki funktion käytöstä:

    klista = [\"auto\",\"mopo\",\"Etana\",\"kissa\",\"Koira\",\"OMENA\",\"appelsiini\"]\nfor vok in vokaalilla_alkavat(klista):\n    print(vok)

    auto\nEtana\nOMENA\nappelsiini

    Vaihtoehtoinen haara suodatuksessa

    Koosteessa voi käyttää ehtolauseen ohella myös vaihtoehtoista haaraa. Tämä onnistuu käyttämällä jo aiemmin mainittua ehtolauseketta:

    <lauseke 1> if <ehto> else <lauseke 2>

    ...joka saa arvokseen joko lausekkeen 1 tai 2 arvon riippuen siitä, onko ehto tosi vai epätosi.

    Niinpä esim. ohjelma, joka tulostaa kahdesta luvusta suuremman yhdellä print-lauseella voisi näyttää tältä:

    luku1 = int(input(\"Anna luku 1:\"))\nluku2 = int(input(\"Anna luku 2:\"))\nprint (luku1 if luku1 > luku2 else luku2)

    Kun yhdistetään syntaksi listakoosteeseen, saadaan seuraavankaltainen rakenne:

    [<lauseke 1> if <ehto> else <lauseke 2> for <alkio> in <sarja>]

    Lopputuloksena syntyvässä listassa on yksi alkio jokaista alkuperäisen sarjan alkiota kohti. Jokaiselle alkiolle suoritetaan joko lauseke 1 tai lauseke 2 riippuen siitä onko ehtolauseke tosi vai ei.

    Seuraava esimerkki muodostaa uuden listan, jossa alkuperäisen listan negatiiviset alkiot on käännetty vastaluvuikseen - positiiviset alkiot kelpuutetaan sellaisenaan. Käytännössä koostelause siis muodostaa listan alkuperäisen listan itseisarvoista.

    \nluvut = [1, -3, 45, -110, 2, 9, -11]\nitseisarvot = [luku if luku >= 0 else -luku for luku in luvut]\nprint(itseisarvot)\n

    [1, 3, 45, 110, 2, 9, 11]

    Suoritettava lauseke on siis luku (eli alkio sellaisenaan), jos ehto luku >= 0 on tosi, muuten suoritetaan lauseke -luku.

    Seuraavassa esimerkissä funktio merkkijonojen_pituudet saa parametrikseen sekalaisia alkioita sisältävän listan. Funktio laskee merkkijonoista tuloslistaan pituuden, muun tyyppisten alkioiden kohdalle asetetaan -1.

    \ndef merkkijonojen_pituudet(lista: list):\n    \"\"\" Funktio palauttaa uudessa listassa merkkijonojen pituudet \"\"\"\n    return [len(alkio) if type(alkio) == str else -1 for alkio in lista]\n\nif __name__ == \"__main__\":\n    testilista = [\"moi\", 3, True, \"kaikki\", -123.344, \"heipparallaa\", 2, False]\n    pituudet = merkkijonojen_pituudet(testilista)\n    print(pituudet)\n

    [3, -1, -1, 6, -1, 12, -1, -1]

    Lottorivi, osa 1

    Kirjoita luokka Lottorivi, joka saa konstruktorissaan parametrikseen kierroksen numeron (kokonaisluku) sekä seitsemänalkioisen kokonaislukulistan. Lista kuvaa kierroksen oikeita numeroita (eli oikeaa riviä). Kirjoita lisäksi luokalle metodi

    osumien_maara(pelattu_rivi: list)

    ...joka palauttaa kokonaislukuna tiedon siitä, kuinka monta osumaa rivissä oli. Metodin tulee käyttää listakoostetta! Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä.

    Esimerkki luokan käytöstä:

    oikea = Lottorivi(5, [1,2,3,4,5,6,7])\noma_rivi = [1,4,7,11,13,19,24]\n\nprint(oikea.osumien_maara(oma_rivi))

    3

    Lottorivi, osa 2

    Kirjoita luokkaan metodi osumat_paikoillaan(pelattu_rivi), joka palauttaa uuden listan. Uudessa listassa on vanhoilla paikoillaan oikeat numerot (eli ne, jotka löytyvät myös oikeasta rivistä), muiden paikalla on -1.

    Metodin tulee käyttää listakoostetta. Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä.

    Esimerkki metodin käytöstä:

    oikea = Lottorivi(8, [1,2,3,10,20,30,33])\noma_rivi = [1,4,7,10,11,20,30]\n\nprint(oikea.osumat_paikoillaan(oma_rivi))

    [1, -1, -1, 10, -1, 20, 30]

    ","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/1-koosteet.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan koosteella (comprehension)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää koosteita uusien listojen muodostamiseen"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointiin liittyy usein erilaisten sekvenssien (eli sarjojen) käsittely. Aikaisemmissa osissa on käytetty runsaasti aikaa merkkijonojen, listojen ja sanakirjojen käsittelyyn eri tavoilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan tilanne, jossa meillä on lista kokonaislukuja. Tämän listan perusteella meidän pitäisi luoda vastaava merkkijonolista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perinteinen tapa toteuttaa operaatio näyttäisi esimerkiksi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nmerkkijonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n merkkijonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"listakooste","style":"position:relative;"},"children":[{"type":"text","value":"Listakooste"},{"type":"element","tagName":"a","properties":{"href":"#listakooste","ariaLabel":"listakooste permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tarjoaa kuitenin \"pythonmaisemman\" tavan uuden listan muodostamiseksi vanhan perusteella. Menetelmää voidaan kutsua \"listakoosteeksi\", mutta huomattavasti yleisempää on käyttää englanninkielistä nimeä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"list comprehension"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Menetelmässä ideana on kuvata yhden rivin lausekkeella, mikä operaatio listan kaikille alkioille tehdään, ennen kuin ne tallennetaan uuteen listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi yllä esitetty ohjelma, joka luo merkkijonolistan kokonaislukulistan perusteella, näyttäisi listakoostetta hyödyntäen tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nmerkkijonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteessa näyttää siis olevan jotakuinkin samat elementit kuin perinteisessäkin toteutuksessa, mutta syntaksi on uudenlainen. Yleisemmin listakoosteen syntaksi voitaisiin esittää esimerkiksi näin:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ for in ]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteen ympärillä olevat hakasulkeet kertovat, että lopputuloksena on uusi lista. Koosteessa poimitaan yksi kerrallaan alkio alkuperäisestä sarjasta (esimerkkimme tapauksessa listasta) ja tallennetaan siihen liittyvän lausekkeen arvo uuteen listaan. Lopputuloksena on lista, jossa on yhtä paljon alkioita kuin alkuperäisessä listassa ja kaikki alkiot on käsitelty samalla tavalla."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 301px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/3f079cde22be6cf33b7be317492aa108/fb933/11_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 131.7391304347826%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAaCAYAAAC3g3x9AAAACXBIWXMAAAsTAAALEwEAmpwYAAACRUlEQVRIx42V16oCQQyG5/0fyStBRUQUbCCiggWx995y+AJZouyuJxAmk/JvJpnJBkmhx+Mh1WpVCoWCtFot+Q+F7XYrSbzb7eRyucj5fJbT6SRpvsZhNptpJtfrVZBZ2S8WCzkejyqv12vl5/OpOmxxMchhs9lE6XqZ7HCCyA62MmCLi0EOq9UqUiyXS3m/3yqT0e12U5msYAgdNghfYozACvP5XFMdjUZ6FHg8HuuKMzI+MDI6k82fWDDQB/sSGez3e/0SK42ACMBO/ew02LwvsXayYAJER+kUxAqI1ZIggExnPsQYgRX8Brrf7+pIrQ6HgwbAAGIjI2w0gL2P1Qy9wtbX66VgMLWyOgICIHp84mIjwG/mWLySSqUimUxGyuWyNJtN1WGLi4kAPagV2u5dHPmm+LgPQJ82R6P4dDiXy0mpVJJ8Pi/ZbDZqkjXPgyUC4kzBAbULTlPsqOx/AvrUAQMIEDrc7Xal1+upTEOw2bOMPbLvlO80GQ0GA6nVasrI6HyHU7tsZPeNZwaADQdkdNjsDn7Hf7wUvmz3jGDGEmyAtseGD76W7cdLofg4UGiuBAH2lnn42GFkuzbmQwyx2DVDXkC/39cacU2m06leXmQmCKOf1cvY8DGZWDB02vh5ljQP7Rn+mofIqRPbjsHRrAR+2sRO7OFwqA58FRklexu4yJPJRJl62UBFjy8xxLJHDrQ/iX0H/U1Iiwlp/1iuRaPRkHa7LfV6XYrFYvTkEv/LcWPIGkMjOp2OHhFG/p4y3/wHBFfbIcHIViUAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/3f079cde22be6cf33b7be317492aa108/a0b58/11_1_2.webp 230w","/static/3f079cde22be6cf33b7be317492aa108/c4c4c/11_1_2.webp 301w"],"sizes":"(max-width: 301px) 100vw, 301px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/3f079cde22be6cf33b7be317492aa108/81c8e/11_1_2.png 230w","/static/3f079cde22be6cf33b7be317492aa108/fb933/11_1_2.png 301w"],"sizes":"(max-width: 301px) 100vw, 301px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/3f079cde22be6cf33b7be317492aa108/fb933/11_1_2.png","alt":"11 1 2","title":"11 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisessa esimerkissä jokainen alkuperäisen listan alkio kerrotaan kymmenellä ja tallennetaan uuteen listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nluvut_kerrottuna "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut_kerrottuna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3, 4, 5, 6, 7, 8, 9]\n[10, 20, 30, 40, 50, 60, 70, 80, 90]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lauseke voi olla mikä tahansa Pythonin lauseke. Esimerkiksi koosteessa voidaan kutsua itse määriteltyä funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[120, 2, 24, 6, 1]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama ohjelma esitettynä perinteisellä silmukalla näyttäisi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteen avulla on siis mahdollista ilmaista sama toiminnallisuus tiiviimmin ja silti yhä helposti luettavassa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palauttamalla funktiosta suoraan kooste saadaan aikaiseksi hyvin tiivistä koodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertomat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neliojuuret","tmcname":"osa11-01_neliojuuret"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"neliojuuret(luvut: list)"}]},{"type":"text","value":", joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan parametrina olevien lukujen neliöjuurista. Neliöjuuren laskemiseen löytyy sopiva funktio moduulista "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"math"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee käyttää listakoostetta. Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rivit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" neliojuuret"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1.0\n1.4142135623730951\n1.7320508075688772\n2.0"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tähtirivit","tmcname":"osa11-02_tahtirivit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tahtirivit(luvut: list)"}]},{"type":"text","value":", joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan, joka koostuu tähtiriveistä, joiden pituus vastaa parametrina olevan listan lukuja. Funktion tulee käyttää listakoostetta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rivit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tahtirivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrivit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tahtirivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*\n**\n***\n****\n\n****\n***\n**\n*\n**********\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Paras koetulos","tmcname":"osa11-03_paras_koetulos"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Koesuoritus"}]},{"type":"text","value":", jolla on seuraavat julkiset attribuutit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvosana1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvosana2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvosana3"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"parhaat_tulokset(suoritukset: list)"}]},{"type":"text","value":". Funktio saa parametrikseen listan koesuoritusolioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa listakoostetta käyttäen uuden listan, johon on tallennettu jokaisen suorituksen paras arvosana."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki suorituksesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suoritus1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuoritus2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuoritus3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paavo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuoritukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"suoritus1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suoritus2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suoritus3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"parhaat_tulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[5, 4, 3]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pituudet","tmcname":"osa11-04_pituudet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituudet(listat: list)"}]},{"type":"text","value":" joka saa parametriksi listan, joka sisältää listoja, jotka sisältävät kokonaislukuja. Funktio palauttaa listan, joka sisältää parametrina olevien listojen pituudet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"listat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"324"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"31"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"listat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[5, 4, 0]"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"alkioiden-suodatus","style":"position:relative;"},"children":[{"type":"text","value":"Alkioiden suodatus"},{"type":"element","tagName":"a","properties":{"href":"#alkioiden-suodatus","ariaLabel":"alkioiden suodatus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisissä esimerkeissä uusi lista muodostettiin kaikista alkuperäisen listan alkioista. Joskus on kuitenkin näppärää, jos voitaisiin valita alkuperäiseltä listalta vain tietyt alkiot. Koosteessa tämä onnistuu yhdistämällä siihen ehto-osa. Yleinen syntaksi on seuraava:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ for in if ]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erotuksena aiempaan koosteen loppuun kirjoitetaan siis ehtolause. Ainoastaan ne alkiot poimitaan mukaan tuloslistaan, joiden kohdalla ehtolauseke on tosi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä poimitaan kaikki parilliset alkiot uuteen listaan. Huomaa, että lausekkeena on esimerkissä ainoastaan listan alkio eli poimittavia alkioita ei käsitellä minkään operaation avulla ennen sijoittamista uuteen listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 4, 6, 4, 10, 12]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lausekkeeksi on määritelty jotain muuta kuin pelkkä alkio, mukaan otetuille alkioille toteutetaan tämä operaatio kuten ennenkin. Muokataan edellistä esimerkkiä niin, että uudessa listassa on kaikki alkuperäisen listan parilliset alkiot kerrottuna kymmenellä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[20, 40, 60, 40, 100, 120]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä lasketaan ainoastaan positiivisten alkioiden kertoma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[6, 24, 120, 1]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä edellisestä jatkettua esimerkkiä, jossa kertoma lasketaan vain parillisista positiivista luvuista. Lisäksi listaan tallennetaan tuplessa sekä alkuperäinen alkio että kertoma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[(2, 2), (4, 24), (6, 720)]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä lauseke on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(luku, kertoma(luku))"}]},{"type":"text","value":", joka muodostaa tuplen, jossa ensimmäinen alkio on alkio alkuperäisestä listasta ja toinen alkio kertoma-funktion palauttama arvo. Ehtolauseke on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku > 0 and luku % 2 == 0"}]},{"type":"text","value":", jossa valikoidaan mukaan vain alkiot, jotka ovat sekä positiivisia että jaollisia kahdella."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Poista pienemmät","tmcname":"osa11-05_poista_pienemmat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_pienemmat(luvut: list, raja: int)"}]},{"type":"text","value":", joka saa parametrikseen listan kokonaislukuja sekä raja-arvon, joka on myös kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio muodostaa listakoostetta käyttäen uuden listan, josta on jätetty pois raja-arvoa pienemmät luvut."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on siis (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lukuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"65"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"poista_pienemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"poista_pienemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[65, 32, 11]\n[7, 8]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vokaalilla alkavat","tmcname":"osa11-06_vokaalilla_alkavat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vokaalilla_alkavat(sanat: list)"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävänäsi on listakoostetta hyödyntäen muodostaa ja palauttaa uusi lista, joka sisältää vain alkuperäisen listan ne sanat, jotka alkavat vokaalilla (a, e, i, o, u, y, ä, ö). Sekä pienien että suurten kirjaimien pitää kelvata."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion maksimipituus on (mukaanlukien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"klista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"auto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mopo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Etana\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kissa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Koira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"OMENA\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" vok "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" vokaalilla_alkavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"klista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"auto\nEtana\nOMENA\nappelsiini"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaihtoehtoinen-haara-suodatuksessa","style":"position:relative;"},"children":[{"type":"text","value":"Vaihtoehtoinen haara suodatuksessa"},{"type":"element","tagName":"a","properties":{"href":"#vaihtoehtoinen-haara-suodatuksessa","ariaLabel":"vaihtoehtoinen haara suodatuksessa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteessa voi käyttää ehtolauseen ohella myös vaihtoehtoista haaraa. Tämä onnistuu käyttämällä jo aiemmin mainittua "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehtolauseketta"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":" if else "}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...joka saa arvokseen joko lausekkeen 1 tai 2 arvon riippuen siitä, onko ehto tosi vai epätosi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niinpä esim. ohjelma, joka tulostaa kahdesta luvusta suuremman yhdellä print-lauseella voisi näyttää tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 1:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 2:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun yhdistetään syntaksi listakoosteeseen, saadaan seuraavankaltainen rakenne:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ if else for in ]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopputuloksena syntyvässä listassa on yksi alkio jokaista alkuperäisen sarjan alkiota kohti. Jokaiselle alkiolle suoritetaan joko lauseke 1 tai lauseke 2 riippuen siitä onko ehtolauseke tosi vai ei."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki muodostaa uuden listan, jossa alkuperäisen listan negatiiviset alkiot on käännetty vastaluvuikseen - positiiviset alkiot kelpuutetaan sellaisenaan. Käytännössä koostelause siis muodostaa listan alkuperäisen listan itseisarvoista."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nitseisarvot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"itseisarvot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 3, 45, 110, 2, 9, 11]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suoritettava lauseke on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" (eli alkio sellaisenaan), jos ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku >= 0"}]},{"type":"text","value":" on tosi, muuten suoritetaan lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-luku"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkijonojen_pituudet"}]},{"type":"text","value":" saa parametrikseen sekalaisia alkioita sisältävän listan. Funktio laskee merkkijonoista tuloslistaan pituuden, muun tyyppisten alkioiden kohdalle asetetaan -1."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"merkkijonojen_pituudet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio palauttaa uudessa listassa merkkijonojen pituudet \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n testilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"123.344"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"heipparallaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n pituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkkijonojen_pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[3, -1, -1, 6, -1, 12, -1, -1]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lottorivi","tmcname":"osa11-07_lottorivi"},"children":[{"type":"element","tagName":"h2","properties":{"id":"lottorivi-osa-1","style":"position:relative;"},"children":[{"type":"text","value":"Lottorivi, osa 1"},{"type":"element","tagName":"a","properties":{"href":"#lottorivi-osa-1","ariaLabel":"lottorivi osa 1 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lottorivi"}]},{"type":"text","value":", joka saa konstruktorissaan parametrikseen kierroksen numeron (kokonaisluku) sekä seitsemänalkioisen kokonaislukulistan. Lista kuvaa kierroksen oikeita numeroita (eli oikeaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"riviä"}]},{"type":"text","value":"). Kirjoita lisäksi luokalle metodi"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"osumien_maara(pelattu_rivi: list)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...joka palauttaa kokonaislukuna tiedon siitä, kuinka monta osumaa rivissä oli. Metodin tulee käyttää listakoostetta! Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oikea "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lottorivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noma_rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osumien_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oma_rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lottorivi-osa-2","style":"position:relative;"},"children":[{"type":"text","value":"Lottorivi, osa 2"},{"type":"element","tagName":"a","properties":{"href":"#lottorivi-osa-2","ariaLabel":"lottorivi osa 2 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"osumat_paikoillaan(pelattu_rivi)"}]},{"type":"text","value":", joka palauttaa uuden listan. Uudessa listassa on vanhoilla paikoillaan oikeat numerot (eli ne, jotka löytyvät myös oikeasta rivistä), muiden paikalla on -1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin tulee käyttää listakoostetta. Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oikea "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lottorivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noma_rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"osumat_paikoillaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"oma_rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, -1, -1, 10, -1, 20, 30]"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan koosteella (comprehension)
    • \n
    • Osaat hyödyntää koosteita uusien listojen muodostamiseen
    • \n

    Ohjelmointiin liittyy usein erilaisten sekvenssien (eli sarjojen) käsittely. Aikaisemmissa osissa on käytetty runsaasti aikaa merkkijonojen, listojen ja sanakirjojen käsittelyyn eri tavoilla.

    Oletetaan tilanne, jossa meillä on lista kokonaislukuja. Tämän listan perusteella meidän pitäisi luoda vastaava merkkijonolista.

    Perinteinen tapa toteuttaa operaatio näyttäisi esimerkiksi tältä:

    luvut = [1, 2, 3, 6, 5, 4, 7]\n\nmerkkijonot = []\nfor luku in luvut:\n    merkkijonot.append(str(luku))

    Listakooste

    Python tarjoaa kuitenin \"pythonmaisemman\" tavan uuden listan muodostamiseksi vanhan perusteella. Menetelmää voidaan kutsua \"listakoosteeksi\", mutta huomattavasti yleisempää on käyttää englanninkielistä nimeä list comprehension.

    Menetelmässä ideana on kuvata yhden rivin lausekkeella, mikä operaatio listan kaikille alkioille tehdään, ennen kuin ne tallennetaan uuteen listaan.

    Esimerkiksi yllä esitetty ohjelma, joka luo merkkijonolistan kokonaislukulistan perusteella, näyttäisi listakoostetta hyödyntäen tältä:

    luvut = [1, 2, 3, 6, 5, 4, 7]\nmerkkijonot = [str(luku) for luku in luvut]

    Koosteessa näyttää siis olevan jotakuinkin samat elementit kuin perinteisessäkin toteutuksessa, mutta syntaksi on uudenlainen. Yleisemmin listakoosteen syntaksi voitaisiin esittää esimerkiksi näin:

    [<lauseke> for <alkio> in <sarja>]

    Koosteen ympärillä olevat hakasulkeet kertovat, että lopputuloksena on uusi lista. Koosteessa poimitaan yksi kerrallaan alkio alkuperäisestä sarjasta (esimerkkimme tapauksessa listasta) ja tallennetaan siihen liittyvän lausekkeen arvo uuteen listaan. Lopputuloksena on lista, jossa on yhtä paljon alkioita kuin alkuperäisessä listassa ja kaikki alkiot on käsitelty samalla tavalla.

    \n \n

    Tee funktio neliojuuret(luvut: list), joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan parametrina olevien lukujen neliöjuurista. Neliöjuuren laskemiseen löytyy sopiva funktio moduulista math

    Funktion tulee käyttää listakoostetta. Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Funktio toimii seuraavasti:

    rivit = neliojuuret([1,2,3,4])\nfor rivi in rivit:\n    print(rivi)

    1.0\n1.4142135623730951\n1.7320508075688772\n2.0

    Tee funktio tahtirivit(luvut: list), joka saa parametriksi listan kokonaislukuja. Funktio palauttaa listan, joka koostuu tähtiriveistä, joiden pituus vastaa parametrina olevan listan lukuja. Funktion tulee käyttää listakoostetta.

    Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Funktio toimii seuraavasti:

    rivit = tahtirivit([1,2,3,4])\nfor rivi in rivit:\n    print(rivi)\n\nprint()\n\nrivit = tahtirivit([4, 3, 2, 1, 10])\nfor rivi in rivit:\n    print(rivi)
    \n*\n**\n***\n****\n\n****\n***\n**\n*\n**********\n

    Tehtäväpohjassa on valmiina luokka Koesuoritus, jolla on seuraavat julkiset attribuutit:

      \n
    • nimi
    • \n
    • arvosana1
    • \n
    • arvosana2
    • \n
    • arvosana3
    • \n

    Kirjoita funktio parhaat_tulokset(suoritukset: list). Funktio saa parametrikseen listan koesuoritusolioita.

    Funktio palauttaa listakoostetta käyttäen uuden listan, johon on tallennettu jokaisen suorituksen paras arvosana.

    Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Esimerkki suorituksesta:

    suoritus1 = Koesuoritus(\"Pekka\",5,3,4)\nsuoritus2 = Koesuoritus(\"Pirjo\",3,4,1)\nsuoritus3 = Koesuoritus(\"Paavo\",2,1,3)\nsuoritukset = [suoritus1, suoritus2, suoritus3]\nprint(parhaat_tulokset(suoritukset))

    [5, 4, 3]

    Tee funktio pituudet(listat: list) joka saa parametriksi listan, joka sisältää listoja, jotka sisältävät kokonaislukuja. Funktio palauttaa listan, joka sisältää parametrina olevien listojen pituudet.

    Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Funktio toimii seuraavasti

    listat = [[1,2,3,4,5], [324, -1, 31, 7],[]]\nprint(pituudet(listat))

    [5, 4, 0]

    Alkioiden suodatus

    Edellisissä esimerkeissä uusi lista muodostettiin kaikista alkuperäisen listan alkioista. Joskus on kuitenkin näppärää, jos voitaisiin valita alkuperäiseltä listalta vain tietyt alkiot. Koosteessa tämä onnistuu yhdistämällä siihen ehto-osa. Yleinen syntaksi on seuraava:

    [<lauseke> for <alkio> in <sarja> if <ehtolauseke>]

    Erotuksena aiempaan koosteen loppuun kirjoitetaan siis ehtolause. Ainoastaan ne alkiot poimitaan mukaan tuloslistaan, joiden kohdalla ehtolauseke on tosi.

    Esimerkissä poimitaan kaikki parilliset alkiot uuteen listaan. Huomaa, että lausekkeena on esimerkissä ainoastaan listan alkio eli poimittavia alkioita ei käsitellä minkään operaation avulla ennen sijoittamista uuteen listaan:

    lista = [1, 1, 2, 3, 4, 6, 4, 5, 7, 10, 12, 3]\n\nparilliset = [alkio for alkio in lista if alkio % 2 == 0]\nprint(parilliset)

    [2, 4, 6, 4, 10, 12]

    Jos lausekkeeksi on määritelty jotain muuta kuin pelkkä alkio, mukaan otetuille alkioille toteutetaan tämä operaatio kuten ennenkin. Muokataan edellistä esimerkkiä niin, että uudessa listassa on kaikki alkuperäisen listan parilliset alkiot kerrottuna kymmenellä:

    lista = [1, 1, 2, 3, 4, 6, 4, 5, 7, 10, 12, 3]\n\nparilliset = [alkio * 10 for alkio in lista if alkio % 2 == 0]\nprint(parilliset)

    [20, 40, 60, 40, 100, 120]

    Seuraavassa esimerkissä lasketaan ainoastaan positiivisten alkioiden kertoma:

    def kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\"\n    k = 1\n    while n >= 2:\n        k *= n\n        n -= 1\n    return k\n\nif __name__ == \"__main__\":\n    lista = [-2, 3, -1, 4, -10, 5, 1]\n    kertomat = [kertoma(luku) for luku in lista if luku > 0]\n    print(kertomat)

    [6, 24, 120, 1]

    Tarkastellaan vielä edellisestä jatkettua esimerkkiä, jossa kertoma lasketaan vain parillisista positiivista luvuista. Lisäksi listaan tallennetaan tuplessa sekä alkuperäinen alkio että kertoma:

    \ndef kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\"\n    k = 1\n    while n >= 2:\n        k *= n\n        n -= 1\n    return k\n\nif __name__ == \"__main__\":\n    lista = [-2, 3, 2, 1, 4, -10, 5, 1, 6]\n    kertomat = [(luku, kertoma(luku)) for luku in lista if luku > 0 and luku % 2 == 0]\n    print(kertomat)\n

    [(2, 2), (4, 24), (6, 720)]

    Esimerkissä lauseke on siis (luku, kertoma(luku)), joka muodostaa tuplen, jossa ensimmäinen alkio on alkio alkuperäisestä listasta ja toinen alkio kertoma-funktion palauttama arvo. Ehtolauseke on luku > 0 and luku % 2 == 0, jossa valikoidaan mukaan vain alkiot, jotka ovat sekä positiivisia että jaollisia kahdella.

    Kirjoita funktio poista_pienemmat(luvut: list, raja: int), joka saa parametrikseen listan kokonaislukuja sekä raja-arvon, joka on myös kokonaisluku.

    Funktio muodostaa listakoostetta käyttäen uuden listan, josta on jätetty pois raja-arvoa pienemmät luvut.

    Funktion maksimipituus on siis (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Esimerkki funktion käytöstä:

    lukuja = [1,65, 32, -6, 9, 11]\nprint(poista_pienemmat(lukuja, 10))\n\nprint(poista_pienemmat([-4, 7, 8, -100], 0))

    [65, 32, 11]\n[7, 8]

    Kirjoita funktio vokaalilla_alkavat(sanat: list), joka saa parametrikseen listan merkkijonoja.

    Tehtävänäsi on listakoostetta hyödyntäen muodostaa ja palauttaa uusi lista, joka sisältää vain alkuperäisen listan ne sanat, jotka alkavat vokaalilla (a, e, i, o, u, y, ä, ö). Sekä pienien että suurten kirjaimien pitää kelvata.

    Funktion maksimipituus on (mukaanlukien def-sanalla alkava otsikkorivi) kokonaisuudessaan kaksi riviä!

    Esimerkki funktion käytöstä:

    klista = [\"auto\",\"mopo\",\"Etana\",\"kissa\",\"Koira\",\"OMENA\",\"appelsiini\"]\nfor vok in vokaalilla_alkavat(klista):\n    print(vok)

    auto\nEtana\nOMENA\nappelsiini

    Vaihtoehtoinen haara suodatuksessa

    Koosteessa voi käyttää ehtolauseen ohella myös vaihtoehtoista haaraa. Tämä onnistuu käyttämällä jo aiemmin mainittua ehtolauseketta:

    <lauseke 1> if <ehto> else <lauseke 2>

    ...joka saa arvokseen joko lausekkeen 1 tai 2 arvon riippuen siitä, onko ehto tosi vai epätosi.

    Niinpä esim. ohjelma, joka tulostaa kahdesta luvusta suuremman yhdellä print-lauseella voisi näyttää tältä:

    luku1 = int(input(\"Anna luku 1:\"))\nluku2 = int(input(\"Anna luku 2:\"))\nprint (luku1 if luku1 > luku2 else luku2)

    Kun yhdistetään syntaksi listakoosteeseen, saadaan seuraavankaltainen rakenne:

    [<lauseke 1> if <ehto> else <lauseke 2> for <alkio> in <sarja>]

    Lopputuloksena syntyvässä listassa on yksi alkio jokaista alkuperäisen sarjan alkiota kohti. Jokaiselle alkiolle suoritetaan joko lauseke 1 tai lauseke 2 riippuen siitä onko ehtolauseke tosi vai ei.

    Seuraava esimerkki muodostaa uuden listan, jossa alkuperäisen listan negatiiviset alkiot on käännetty vastaluvuikseen - positiiviset alkiot kelpuutetaan sellaisenaan. Käytännössä koostelause siis muodostaa listan alkuperäisen listan itseisarvoista.

    \nluvut = [1, -3, 45, -110, 2, 9, -11]\nitseisarvot = [luku if luku >= 0 else -luku for luku in luvut]\nprint(itseisarvot)\n

    [1, 3, 45, 110, 2, 9, 11]

    Suoritettava lauseke on siis luku (eli alkio sellaisenaan), jos ehto luku >= 0 on tosi, muuten suoritetaan lauseke -luku.

    Seuraavassa esimerkissä funktio merkkijonojen_pituudet saa parametrikseen sekalaisia alkioita sisältävän listan. Funktio laskee merkkijonoista tuloslistaan pituuden, muun tyyppisten alkioiden kohdalle asetetaan -1.

    \ndef merkkijonojen_pituudet(lista: list):\n    \"\"\" Funktio palauttaa uudessa listassa merkkijonojen pituudet \"\"\"\n    return [len(alkio) if type(alkio) == str else -1 for alkio in lista]\n\nif __name__ == \"__main__\":\n    testilista = [\"moi\", 3, True, \"kaikki\", -123.344, \"heipparallaa\", 2, False]\n    pituudet = merkkijonojen_pituudet(testilista)\n    print(pituudet)\n

    [3, -1, -1, 6, -1, 12, -1, -1]

    Lottorivi, osa 1

    Kirjoita luokka Lottorivi, joka saa konstruktorissaan parametrikseen kierroksen numeron (kokonaisluku) sekä seitsemänalkioisen kokonaislukulistan. Lista kuvaa kierroksen oikeita numeroita (eli oikeaa riviä). Kirjoita lisäksi luokalle metodi

    osumien_maara(pelattu_rivi: list)

    ...joka palauttaa kokonaislukuna tiedon siitä, kuinka monta osumaa rivissä oli. Metodin tulee käyttää listakoostetta! Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä.

    Esimerkki luokan käytöstä:

    oikea = Lottorivi(5, [1,2,3,4,5,6,7])\noma_rivi = [1,4,7,11,13,19,24]\n\nprint(oikea.osumien_maara(oma_rivi))

    3

    Lottorivi, osa 2

    Kirjoita luokkaan metodi osumat_paikoillaan(pelattu_rivi), joka palauttaa uuden listan. Uudessa listassa on vanhoilla paikoillaan oikeat numerot (eli ne, jotka löytyvät myös oikeasta rivistä), muiden paikalla on -1.

    Metodin tulee käyttää listakoostetta. Metodin pituus kokonaisuudessaan (def-rivi mukaanlukien) saa olla korkeintaan 2 riviä.

    Esimerkki metodin käytöstä:

    oikea = Lottorivi(8, [1,2,3,10,20,30,33])\noma_rivi = [1,4,7,10,11,20,30]\n\nprint(oikea.osumat_paikoillaan(oma_rivi))

    [1, -1, -1, 10, -1, 20, 30]

    ","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/1-koosteet.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-11/2-lisaa-koosteesta/page-data.json b/page-data/osa-11/2-lisaa-koosteesta/page-data.json index 8640d0d8b..6fbb6fe94 100644 --- a/page-data/osa-11/2-lisaa-koosteesta/page-data.json +++ b/page-data/osa-11/2-lisaa-koosteesta/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-11/2-lisaa-koosteesta", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten koosteita voidaan hyödyntää merkkijonojen kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää omia olioita koosteissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa myös sanakirjakoosteita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska koosteen lähteenä voi olla mikä tahansa sarja, voidaan sitä soveltaa myös merkkijonojen käsittelyyn. Merkkijonon läpikäynnissä poimitaan merkit yksitellen jonosta, suoritetaan nille annettu lauseke ja tallennetaan lopputulos uuden listan alkioksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\n\nisot_kirjaimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"isot_kirjaimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['P', 'E', 'K', 'K', 'A', ' ', 'P', 'Y', 'T', 'H', 'O', 'N']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että lopputuloksena on lista. Jos halutaan muodostaa merkkijonon perusteella uusi merkkijono, voidaan hyödyntää aikaisemmin esiteltyä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodia. Metodin avulla voidaan yhdistää listan alkiot merkkijonoksi. Metodi kohdistuu välimerkkiin, jolla alkiot yhdistetään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi toimii siis esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ja \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['P', 'e', 'k', 'k', 'a']\nPekka\nP e k k a\nP,e,k,k,a\nP ja e ja k ja k ja a"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun yhdistetään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodin koosteeseen, voidaan muodostaa merkkijonosta uusi merkkijono helposti. Tarkastellaan esimerkkiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodin ja koosteen yhdistelmästä, joka muodostaa alkuperäisen merkkijonon pohjalta uuden merkkijonon, jossa on ainoastaan vokaalit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\ntestijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Heippa vaan kaikki, tämä on testi\""}]},{"type":"text","value":"\n\nvokaalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" testijono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aeiouyåäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nuusijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vokaalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eiaaaaiiääoei"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä on selkeyden vuoksi jaettu kooste ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodin kutsu omille riveilleen, mutta toki ne voi kirjoittaa myös yhdeksi lausekkeeksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\ntestijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Heippa vaan kaikki, tämä on testi\""}]},{"type":"text","value":"\n\nvokaalijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" testijono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aeiouyåäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vokaalijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyödyntämällä samassa yhteydessä vielä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":"-metodia, voidaan käsitellä esimerkiksi kokonaisia lauseita tehokkaasti yhdellä lausekkeella. Esimerkissä poistetaan lauseen jokaisesta sanasta ensimmäinen kirjain:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi se kuulkaa vaan sihisi hississä\""}]},{"type":"text","value":"\n\nlause_ilman_alkuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause_ilman_alkuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"esihiisi e uulkaa aan ihisi ississä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käydään läpi tarkemmin mitä koko lausekkeessa tapahtuu:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana[1:]"}]},{"type":"text","value":" ottaa osajonon sanasta alkaen toisesta merkistä (eli indeksistä 1)\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lause.split()"}]},{"type":"text","value":" purkaa merkkijonon listaksi annetun välimerkin kohdalta. Kun välimerkkiä ei ole määritelty, käytetään oletuksena tyhjiä välejä\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\" \".join()"}]},{"type":"text","value":" yhdistää listan palaset uudeksi jonoksi käyttäen välilyöntiä palojen välissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama esimerkki perinteisemmällä tavalla näyttäisi esimerkiksi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi se kuulkaa vaan sihisi hississä\""}]},{"type":"text","value":"\n\nsanalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sana_ilman_alkua "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana_ilman_alkua"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlause_ilman_alkuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause_ilman_alkuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suodata kielletyt","tmcname":"osa11-08_suodata_kielletyt"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suodata_kielletyt(merkkijono: str, kielletyt: str)"}]},{"type":"text","value":" joka palauttaa sen parametrina olevasta merkkijonosta version, joka ei sisällä yhtään merkkiä sen toisena parametrina olevasta \"kiellettyjen merkkien\" merkkijonosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee käyttää listakoostetta. Funktio saa sisältää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-rivi mukaanlukien maksimissaan 3 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suo! kuokka, ja python: hieno yhdistelmä!??!?!\""}]},{"type":"text","value":"\nsuodatettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suodata_kielletyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!?:,.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suodatettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suo kuokka ja python hieno yhdistelmä"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"omat-oliot-koosteissa","style":"position:relative;"},"children":[{"type":"text","value":"Omat oliot koosteissa"},{"type":"element","tagName":"a","properties":{"href":"#omat-oliot-koosteissa","ariaLabel":"omat oliot koosteissa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus omia olioita on näppärä käsitellä tai muodostaa koosteiden avulla. Tarkastellaan seuraavaksi muutamaa esimerkkiä tähän liittyen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisessä esimerkissä luokka Maa mallintaa yhtä maata asukaslukuineen. Koosteessa poimitaan listalta kaikkien sellaisten maiden nimet, joiden asukasluku on suurempi kuin 5 miljoonaa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Maa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä maata asukaslukuineen \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" asukasluku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"asukasluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" asukasluku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suomi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n malta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Malta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ruotsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n islanti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Islanti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"350000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"suomi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" malta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ruotsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" islanti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n isommat_maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" maat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"asukasluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" isommat_maat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suomi\nRuotsi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen vaihtoehto olisi luoda lista maa-olioista ja tulostaa sen jälkeen nimet. Tämä vaihtoehto olisi järkevämpi, jos maita tarvittaisiin vielä myöhemminkin (tai mikäli haluttaisiin esimerkiksi tarkemmin tarkastella maiden asukaslukuja silmukassa):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suomi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n malta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Malta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ruotsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n islanti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Islanti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"350000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"suomi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" malta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ruotsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" islanti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n isommat_maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" maat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"asukasluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" isommat_maat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisessa esimerkissä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"text","value":" mallintaa yhtä juoksumatkaa nimineen ja pituuksineen. Nyt koosteen avulla luodaan lista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"text","value":"-olioita annettujen pituuksien mukaaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"text","value":"-luokan konstruktorissa parametrilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on oletusarvo, eikä sitä olioita luodessa esimerkissä erikseen annetakaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä n metrin pituista juoksumatkaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" matka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ei nimeä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"matka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matka\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"matka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" m. ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42195"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n matkat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"Juoksumatka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pituus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan kaikki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poimitaan yksi listasta ja nimetään se"}]},{"type":"text","value":"\n maraton "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viimeisenä listassa"}]},{"type":"text","value":"\n maraton"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maraton\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan vielä uudella nimellä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (ei nimeä)]\n[100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (Maraton)]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos oma luokka on viime kerran esimerkin mukaisesti iteroitava, voidaan sitä käyttää lähteenä listakoosteessa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sivuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sivuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sivuja\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Iteraattorin alustusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa viittauksen olioon itseensä, koska"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# iteraattori on toteutettu samassa luokassa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa seuraavan alkion"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos ei ole enempää alkioita, heitetään tapahtuma"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# StopIteration"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__next__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poimitaan listasta nykyinen"}]},{"type":"text","value":"\n kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan laskuria yhdellä"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja palautetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kirja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Ei enempää kirjoja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" StopIteration\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Elämäni Pythoniassa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"123"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Hemingjava\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"204"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C-itsemän veljestä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n hylly "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjahylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan lista, jossa kaikkien kirjojen nimet"}]},{"type":"text","value":"\n kirjojen_nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirjojen_nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kauppalistan tuotteet","tmcname":"osa11-09_kauppalistan_tuotteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osan 10 tehtävässä teimme "},{"type":"element","tagName":"a","properties":{"href":"/osa-10/3-olio-ohjelmoinnin-tekniikoita#programming-exercise-iteroitava-kauppalista"},"children":[{"type":"text","value":"Kauppalista-luokasta iteroitavan"}]},{"type":"text","value":". Iteroitavan luokan oliota voidaan käyttää listakoosteiden yhteydessä. Tehtäväpohjassa on mukana luokasta typistetty versio, jonka toiminnallisuus riittää tähän tehtävään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kauppalistan_tuotteet(kauppalista, maara: int)"}]},{"type":"text","value":" joka saa parametriksi kauppalista-olion. Funktio palauttaa kauppalistan ostoksista niiden tuotteiden nimet, joita on listalla vähintään parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maara"}]},{"type":"text","value":" verran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa listakoosteen avulla, ja sen pituus saa olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-määrittelyriveineen yhteensä korkeintaan kaksi riviä. Luokan Kauppalista koodia ei saa muuttaa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omenat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alkoholiton olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ananas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kauppalistalla vähintään 8 seuraavia tuotteita:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kauppalistan_tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"kauppalistalla vähintään 8 seuraavia tuotteita:\nbanaanit\nalkoholiton olut"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Halvempien hintaero","tmcname":"osa11-10_halvempien_hintaero"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osan 9 tehtävässä teimme luokan "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/1-oliot-ja-viittaukset#programming-exercise-asuntovertailu"},"children":[{"type":"text","value":"Asunto"}]},{"type":"text","value":". Tässä tehtävässä on käytössä hieman laajennettu versio luokasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"halvemmat(asunnot: list, verrattava: Asunto)"}]},{"type":"text","value":", joka saa parametriksi listan asuntoja sekä yksittäisen vertailtavan asunnon. Funktio palauttaa listan, jolla on asunnoista ne, jotka ovat hinnaltaan halvempia kuin vertailtava asunto, sekä näiden hintaeron. Palautettavan listan alkiot ovat tupleja, joiden ensimmäinen jäsen on asunto ja toisena sen hintaero vertailtavaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-määrittelyrivi mukaanluettuna on 2 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Asunto"}]},{"type":"text","value":" koodia ei saa muuttaa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eira yksiö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kallio kaksio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jakomäki kolmio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"215"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomussalmi omakotitalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"105"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1700"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kerava 4h ja keittiö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na6 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Haikon kartano\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nasunnot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"a1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a6"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"asuntoa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"a3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" halvemmat vaihtoehdot:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" halvemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asunnot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" hintaero "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"asuntoa Jakomäki kolmio halvemmat vaihtoehdot:\nEira yksiö hintaero 107000 euroa\nKallio kaksio hintaero 35400 euroa\nSuomussalmi omakotitalo hintaero 87500 euroa\nKerava 4h ja keittiö hintaero 16500 euroa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"koosteet-sanakirjan-kanssa","style":"position:relative;"},"children":[{"type":"text","value":"Koosteet sanakirjan kanssa"},{"type":"element","tagName":"a","properties":{"href":"#koosteet-sanakirjan-kanssa","ariaLabel":"koosteet sanakirjan kanssa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteet toimivat samalla tavalla myös sanakirjan kanssa: jos vaihdetaan hakasulkeet aaltosulkeiksi, syntyy koosteen seurauksena listan sijasta sanakirja. Koska sanakirjan alkio muodostuu kahdesta komponentista - arvosta ja avaimesta, tulee molemmat komponentit antaa myös koostetta luodessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lähteenä voidaan edelleen käyttää mitä tahansa sarjaa, eli esimerkiksi listaa, merkkijonoa, tuplea, sanakirjaa tai omaa iteroinnin toteuttavaa luokkaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki, joka luo merkkijonon pohjalta sanakirjan, joka sisältää kaikki merkkijonon kirjaimet ja niiden esiintymämäärät:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei kaikki\""}]},{"type":"text","value":"\n\nmerkkimäärät "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirjain "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirjain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirjain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkimäärät"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'H': 1, 'e': 1, 'i': 3, ' ': 1, 'k': 3, 'a': 1}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Periaate on siis täsmälleen sama, mutta yksittäisen arvon sijasta annetaan erikseen avain ja arvo. Yleisesti merkittynä siis:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"{ : for in }"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toisena esimerkkinä ohjelmaa, joka laskee kaikkien listalla olevien positiivisten lukujen kertomat, mutta tällä kertaa sanakirjaan. Luku toimii avaimena ja kertoma arvona:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{3: 6, 2: 2, 1: 1, 4: 24, 5: 120, 6: 720}"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Merkkijonojen pituudet","tmcname":"osa11-11_merkkijonojen_pituudet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituudet(merkkijonot: list)"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sanakirjan"}]},{"type":"text","value":", jossa avaimina on listan merkkijonot ja arvoina merkkijonojen pituudet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa sanakirjakoosteen avulla. Funktion maksimipituus def-määrittelyrivi mukaanlukien on kaksi riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kuokka\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsanojen_pituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanojen_pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'suo': 3, 'kuokka': 6, 'python': 6, 'ja': 2, 'koodari': 7}"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Yleisimmät sanat","tmcname":"osa11-12_yleisimmat_sanat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yleisimmat_sanat(tiedoston_nimi: str, raja: int)"}]},{"type":"text","value":", joka saa parametrikseen tiedoston nimen. Funktio palauttaa sanakirjan, joka sisältää tiedostossa olevien sanojen esiintymislukumäärän niiden sanojen osalta, joilla on vähintään toisen parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"raja"}]},{"type":"text","value":" verran esiintymiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. jos funktiolla tarkasteltaisiin tiedostoa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"comprehensions.txt"}]},{"type":"text","value":" jonka sisältö on seuraava"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"txt"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-txt"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-txt"]},"children":[{"type":"text","value":"List comprehension is an elegant way to define and create lists based on existing lists.\nList comprehension is generally more compact and faster than normal functions and loops for creating list.\nHowever, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.\nRemember, every list comprehension can be rewritten in for loop, but every for loop can’t be rewritten in the form of list comprehension."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yleisimmat_sanat(\"comprehensions.txt\", 3)"}]},{"type":"text","value":" funktion palauttama sanakirja näyttäisi seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'comprehension': 4, 'is': 3, 'and': 3, 'for': 3, 'list': 4, 'in': 3}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kirjainkoko vaikuttaa ja vain kokonaiset sanat lasketaan - sanat 'List' ja 'lists' eivät siis saa kasvattaa sanan 'list' lukumäärää. Lisäksi kaikki sanoissa olevat välimerkit tulee poistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion toteutustapa on vapaa, helpoimmalla pääset hyödyntämällä lista- ja sanakirjakoosteita."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten koosteita voidaan hyödyntää merkkijonojen kanssa
    • \n
    • Osaat käyttää omia olioita koosteissa
    • \n
    • Osaat muodostaa myös sanakirjakoosteita
    • \n

    Koska koosteen lähteenä voi olla mikä tahansa sarja, voidaan sitä soveltaa myös merkkijonojen käsittelyyn. Merkkijonon läpikäynnissä poimitaan merkit yksitellen jonosta, suoritetaan nille annettu lauseke ja tallennetaan lopputulos uuden listan alkioksi.

    Esimerkiksi

    \nnimi = \"Pekka Python\"\n\nisot_kirjaimet = [merkki.upper() for merkki in nimi]\nprint(isot_kirjaimet)\n

    ['P', 'E', 'K', 'K', 'A', ' ', 'P', 'Y', 'T', 'H', 'O', 'N']

    Huomaa, että lopputuloksena on lista. Jos halutaan muodostaa merkkijonon perusteella uusi merkkijono, voidaan hyödyntää aikaisemmin esiteltyä join-metodia. Metodin avulla voidaan yhdistää listan alkiot merkkijonoksi. Metodi kohdistuu välimerkkiin, jolla alkiot yhdistetään.

    Metodi toimii siis esimerkiksi näin:

    \nnimi = \"Pekka\"\nlista = list(nimi)\nprint(lista)\n\nprint(\"\".join(lista))\nprint(\" \".join(lista))\nprint(\",\".join(lista))\nprint(\" ja \".join(lista))\n

    ['P', 'e', 'k', 'k', 'a']\nPekka\nP e k k a\nP,e,k,k,a\nP ja e ja k ja k ja a

    Kun yhdistetään join-metodin koosteeseen, voidaan muodostaa merkkijonosta uusi merkkijono helposti. Tarkastellaan esimerkkiä join-metodin ja koosteen yhdistelmästä, joka muodostaa alkuperäisen merkkijonon pohjalta uuden merkkijonon, jossa on ainoastaan vokaalit:

    \ntestijono = \"Heippa vaan kaikki, tämä on testi\"\n\nvokaalit = [merkki for merkki in testijono if merkki in \"aeiouyåäö\"]\nuusijono = \"\".join(vokaalit)\n\nprint(uusijono)\n

    eiaaaaiiääoei

    Esimerkissä on selkeyden vuoksi jaettu kooste ja join-metodin kutsu omille riveilleen, mutta toki ne voi kirjoittaa myös yhdeksi lausekkeeksi:

    \ntestijono = \"Heippa vaan kaikki, tämä on testi\"\n\nvokaalijono = \"\".join([merkki for merkki in testijono if merkki in \"aeiouyåäö\"])\n\nprint(vokaalijono)\n

    Hyödyntämällä samassa yhteydessä vielä split-metodia, voidaan käsitellä esimerkiksi kokonaisia lauseita tehokkaasti yhdellä lausekkeella. Esimerkissä poistetaan lauseen jokaisesta sanasta ensimmäinen kirjain:

    \nlause = \"Vesihiisi se kuulkaa vaan sihisi hississä\"\n\nlause_ilman_alkuja = \" \".join([sana[1:] for sana in lause.split()])\nprint(lause_ilman_alkuja)\n

    esihiisi e uulkaa aan ihisi ississä

    Käydään läpi tarkemmin mitä koko lausekkeessa tapahtuu:

    sana[1:] ottaa osajonon sanasta alkaen toisesta merkistä (eli indeksistä 1)\nlause.split() purkaa merkkijonon listaksi annetun välimerkin kohdalta. Kun välimerkkiä ei ole määritelty, käytetään oletuksena tyhjiä välejä\n\" \".join() yhdistää listan palaset uudeksi jonoksi käyttäen välilyöntiä palojen välissä.

    Sama esimerkki perinteisemmällä tavalla näyttäisi esimerkiksi tältä:

    \nlause = \"Vesihiisi se kuulkaa vaan sihisi hississä\"\n\nsanalista = []\nsanat = lause.split()\nfor sana in sanat:\n    sana_ilman_alkua = sana[1:]\n    sanalista.append(sana_ilman_alkua)\n\nlause_ilman_alkuja = \" \".join(sanalista)\n\n\nprint(lause_ilman_alkuja)\n

    Tee funktio suodata_kielletyt(merkkijono: str, kielletyt: str) joka palauttaa sen parametrina olevasta merkkijonosta version, joka ei sisällä yhtään merkkiä sen toisena parametrina olevasta \"kiellettyjen merkkien\" merkkijonosta.

    Funktion tulee käyttää listakoostetta. Funktio saa sisältää def-rivi mukaanlukien maksimissaan 3 riviä.

    Esimerkki funktion käytöstä

    lause = \"Suo! kuokka, ja python: hieno yhdistelmä!??!?!\"\nsuodatettu = suodata_kielletyt(lause, \"!?:,.\")\nprint(suodatettu)

    Suo kuokka ja python hieno yhdistelmä

    Omat oliot koosteissa

    Joskus omia olioita on näppärä käsitellä tai muodostaa koosteiden avulla. Tarkastellaan seuraavaksi muutamaa esimerkkiä tähän liittyen.

    Ensimmäisessä esimerkissä luokka Maa mallintaa yhtä maata asukaslukuineen. Koosteessa poimitaan listalta kaikkien sellaisten maiden nimet, joiden asukasluku on suurempi kuin 5 miljoonaa.

    \nclass Maa:\n    \"\"\" Luokka mallintaa yhtä maata asukaslukuineen \"\"\"\n    def __init__(self, nimi: str, asukasluku: int):\n        self.nimi = nimi\n        self.asukasluku = asukasluku\n\nif __name__ == \"__main__\":\n    suomi = Maa(\"Suomi\", 6000000)\n    malta = Maa(\"Malta\", 500000)\n    ruotsi = Maa(\"Ruotsi\", 10000000)\n    islanti = Maa(\"Islanti\", 350000)\n\n    maat = [suomi, malta, ruotsi, islanti]\n\n    isommat_maat = [maa.nimi for maa in maat if maa.asukasluku > 5000000]\n    for maa in isommat_maat:\n        print(maa)\n\n

    Suomi\nRuotsi

    Toinen vaihtoehto olisi luoda lista maa-olioista ja tulostaa sen jälkeen nimet. Tämä vaihtoehto olisi järkevämpi, jos maita tarvittaisiin vielä myöhemminkin (tai mikäli haluttaisiin esimerkiksi tarkemmin tarkastella maiden asukaslukuja silmukassa):

    \nif __name__ == \"__main__\":\n    suomi = Maa(\"Suomi\", 6000000)\n    malta = Maa(\"Malta\", 500000)\n    ruotsi = Maa(\"Ruotsi\", 10000000)\n    islanti = Maa(\"Islanti\", 350000)\n\n    maat = [suomi, malta, ruotsi, islanti]\n\n    isommat_maat = [maa for maa in maat if maa.asukasluku > 5000000]\n    for maa in isommat_maat:\n        print(maa.nimi)

    Toisessa esimerkissä luokka Juoksumatka mallintaa yhtä juoksumatkaa nimineen ja pituuksineen. Nyt koosteen avulla luodaan lista Juoksumatka-olioita annettujen pituuksien mukaaan.

    Huomaa, että Juoksumatka-luokan konstruktorissa parametrilla nimi on oletusarvo, eikä sitä olioita luodessa esimerkissä erikseen annetakaan:

    \nclass Juoksumatka:\n    \"\"\" Luokka mallintaa yhtä n metrin pituista juoksumatkaa \"\"\"\n    def __init__(self, matka:int, nimi:str = \"ei nimeä\"):\n        self.matka = matka\n        self.nimi = nimi\n\n    def __repr__(self):\n        return f\"{self.matka} m. ({self.nimi})\"\n\nif __name__ == \"__main__\":\n    pituudet = [100, 200, 1500, 3000, 42195]\n    matkat = [Juoksumatka(pituus) for pituus in pituudet]\n\n    # tulostetaan kaikki\n    print(matkat)\n\n    # Poimitaan yksi listasta ja nimetään se\n    maraton = matkat[-1] # viimeisenä listassa\n    maraton.nimi = \"Maraton\"\n\n    # Tulostetaan vielä uudella nimellä\n    print(matkat)\n

    [100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (ei nimeä)]\n[100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (Maraton)]

    Jos oma luokka on viime kerran esimerkin mukaisesti iteroitava, voidaan sitä käyttää lähteenä listakoosteessa:

    \nclass Kirja:\n    def __init__(self, nimi: str, kirjailija: str, sivuja: int):\n        self.nimi = nimi\n        self.kirjailija = kirjailija\n        self.sivuja = sivuja\n\nclass Kirjahylly:\n    def __init__(self):\n        self._kirjat = []\n\n    def lisaa_kirja(self, kirja: Kirja):\n        self._kirjat.append(kirja)\n\n    # Iteraattorin alustusmetodi\n    # Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)\n    def __iter__(self):\n        self.n = 0\n        # Metodi palauttaa viittauksen olioon itseensä, koska\n        # iteraattori on toteutettu samassa luokassa\n        return self\n\n    # Metodi palauttaa seuraavan alkion\n    # Jos ei ole enempää alkioita, heitetään tapahtuma\n    # StopIteration\n    def __next__(self):\n        if self.n < len(self._kirjat):\n            # Poimitaan listasta nykyinen\n            kirja = self._kirjat[self.n]\n            # Kasvatetaan laskuria yhdellä\n            self.n += 1\n            # ...ja palautetaan\n            return kirja\n        else:\n            # Ei enempää kirjoja\n            raise StopIteration\n\n# Testataan\nif __name__ == \"__main__\":\n    k1 = Kirja(\"Elämäni Pythoniassa\", \"Pekka Python\", 123)\n    k2 = Kirja(\"Vanhus ja Java\", \"Ernest Hemingjava\", 204)\n    k3 = Kirja(\"C-itsemän veljestä\", \"Keijo Koodari\", 997)\n\n    hylly = Kirjahylly()\n    hylly.lisaa_kirja(k1)\n    hylly.lisaa_kirja(k2)\n    hylly.lisaa_kirja(k3)\n\n    # Luodaan lista, jossa kaikkien kirjojen nimet\n    kirjojen_nimet = [kirja.nimi for kirja in hylly]\n    print(kirjojen_nimet)\n

    Osan 10 tehtävässä teimme Kauppalista-luokasta iteroitavan. Iteroitavan luokan oliota voidaan käyttää listakoosteiden yhteydessä. Tehtäväpohjassa on mukana luokasta typistetty versio, jonka toiminnallisuus riittää tähän tehtävään.

    Tee nyt funktio kauppalistan_tuotteet(kauppalista, maara: int) joka saa parametriksi kauppalista-olion. Funktio palauttaa kauppalistan ostoksista niiden tuotteiden nimet, joita on listalla vähintään parametrin maara verran.

    Funktio tulee toteuttaa listakoosteen avulla, ja sen pituus saa olla def-määrittelyriveineen yhteensä korkeintaan kaksi riviä. Luokan Kauppalista koodia ei saa muuttaa!

    Funktio toimii seuraavasti

    lista = Kauppalista()\nlista.lisaa(\"banaanit\", 10)\nlista.lisaa(\"omenat\", 5)\nlista.lisaa(\"alkoholiton olut\", 24)\nlista.lisaa(\"ananas\", 1)\n\nprint(\"kauppalistalla vähintään 8 seuraavia tuotteita:\")\nfor tuote in kauppalistan_tuotteet(lista, 8):\n    print(tuote)

    kauppalistalla vähintään 8 seuraavia tuotteita:\nbanaanit\nalkoholiton olut

    Osan 9 tehtävässä teimme luokan Asunto. Tässä tehtävässä on käytössä hieman laajennettu versio luokasta.

    Tee funktio halvemmat(asunnot: list, verrattava: Asunto), joka saa parametriksi listan asuntoja sekä yksittäisen vertailtavan asunnon. Funktio palauttaa listan, jolla on asunnoista ne, jotka ovat hinnaltaan halvempia kuin vertailtava asunto, sekä näiden hintaeron. Palautettavan listan alkiot ovat tupleja, joiden ensimmäinen jäsen on asunto ja toisena sen hintaero vertailtavaan.

    Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus def-määrittelyrivi mukaanluettuna on 2 riviä.

    Luokan Asunto koodia ei saa muuttaa!

    Funktio toimii seuraavasti

    a1 = Asunto(1, 16, 5500, \"Eira yksiö\")\na2 = Asunto(2, 38, 4200, \"Kallio kaksio\")\na3 = Asunto(3, 78, 2500, \"Jakomäki kolmio\")\na4 = Asunto(6, 215, 500, \"Suomussalmi omakotitalo\")\na5 = Asunto(4, 105, 1700, \"Kerava 4h ja keittiö\")\na6 = Asunto(25, 1200, 2500, \"Haikon kartano\")\n\nasunnot = [a1, a2, a3, a4, a5, a6]\n\nprint(f\"asuntoa {a3.kuvaus} halvemmat vaihtoehdot:\")\nfor alkio in halvemmat(asunnot, a3):\n    print(f\"{alkio[0].kuvaus:30} hintaero {alkio[1]} euroa\")

    asuntoa Jakomäki kolmio halvemmat vaihtoehdot:\nEira yksiö hintaero 107000 euroa\nKallio kaksio hintaero 35400 euroa\nSuomussalmi omakotitalo hintaero 87500 euroa\nKerava 4h ja keittiö hintaero 16500 euroa

    Koosteet sanakirjan kanssa

    Koosteet toimivat samalla tavalla myös sanakirjan kanssa: jos vaihdetaan hakasulkeet aaltosulkeiksi, syntyy koosteen seurauksena listan sijasta sanakirja. Koska sanakirjan alkio muodostuu kahdesta komponentista - arvosta ja avaimesta, tulee molemmat komponentit antaa myös koostetta luodessa.

    Lähteenä voidaan edelleen käyttää mitä tahansa sarjaa, eli esimerkiksi listaa, merkkijonoa, tuplea, sanakirjaa tai omaa iteroinnin toteuttavaa luokkaa.

    Esimerkki, joka luo merkkijonon pohjalta sanakirjan, joka sisältää kaikki merkkijonon kirjaimet ja niiden esiintymämäärät:

    \nlause = \"Hei kaikki\"\n\nmerkkimäärät = {kirjain : lause.count(kirjain) for kirjain in lause}\nprint(merkkimäärät)\n

    {'H': 1, 'e': 1, 'i': 3, ' ': 1, 'k': 3, 'a': 1}

    Periaate on siis täsmälleen sama, mutta yksittäisen arvon sijasta annetaan erikseen avain ja arvo. Yleisesti merkittynä siis:

    {<avainlauseke> : <arvolauseke> for <alkio> in <sarja>}

    Tarkastellaan vielä toisena esimerkkinä ohjelmaa, joka laskee kaikkien listalla olevien positiivisten lukujen kertomat, mutta tällä kertaa sanakirjaan. Luku toimii avaimena ja kertoma arvona:

    \ndef kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\"\n    k = 1\n    while n >= 2:\n        k *= n\n        n -= 1\n    return k\n\nif __name__ == \"__main__\":\n    lista = [-2, 3, 2, 1, 4, -10, 5, 1, 6]\n    kertomat = {luku : kertoma(luku) for luku in lista if luku > 0}\n    print(kertomat)\n

    {3: 6, 2: 2, 1: 1, 4: 24, 5: 120, 6: 720}

    Tee funktio pituudet(merkkijonot: list), joka saa parametriksi listan merkkijonoja. Funktio palauttaa sanakirjan, jossa avaimina on listan merkkijonot ja arvoina merkkijonojen pituudet.

    Funktio tulee toteuttaa sanakirjakoosteen avulla. Funktion maksimipituus def-määrittelyrivi mukaanlukien on kaksi riviä.

    Funktio toimii seuraavasti

    sanalista = [\"suo\", \"kuokka\" , \"python\", \"ja\", \"koodari\"]\n\nsanojen_pituudet = pituudet(sanalista)\nprint(sanojen_pituudet)

    {'suo': 3, 'kuokka': 6, 'python': 6, 'ja': 2, 'koodari': 7}

    Tee funktio yleisimmat_sanat(tiedoston_nimi: str, raja: int), joka saa parametrikseen tiedoston nimen. Funktio palauttaa sanakirjan, joka sisältää tiedostossa olevien sanojen esiintymislukumäärän niiden sanojen osalta, joilla on vähintään toisen parametrin raja verran esiintymiä.

    Esim. jos funktiolla tarkasteltaisiin tiedostoa comprehensions.txt jonka sisältö on seuraava

    List comprehension is an elegant way to define and create lists based on existing lists.\nList comprehension is generally more compact and faster than normal functions and loops for creating list.\nHowever, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.\nRemember, every list comprehension can be rewritten in for loop, but every for loop can’t be rewritten in the form of list comprehension.

    Kutsuttaessa yleisimmat_sanat(\"comprehensions.txt\", 3) funktion palauttama sanakirja näyttäisi seuraavalta:

    {'comprehension': 4, 'is': 3, 'and': 3, 'for': 3, 'list': 4, 'in': 3}

    Huomaa, että kirjainkoko vaikuttaa ja vain kokonaiset sanat lasketaan - sanat 'List' ja 'lists' eivät siis saa kasvattaa sanan 'list' lukumäärää. Lisäksi kaikki sanoissa olevat välimerkit tulee poistaa.

    Funktion toteutustapa on vapaa, helpoimmalla pääset hyödyntämällä lista- ja sanakirjakoosteita.

    ","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/2-lisaa-koosteesta.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten koosteita voidaan hyödyntää merkkijonojen kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää omia olioita koosteissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa myös sanakirjakoosteita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska koosteen lähteenä voi olla mikä tahansa sarja, voidaan sitä soveltaa myös merkkijonojen käsittelyyn. Merkkijonon läpikäynnissä poimitaan merkit yksitellen jonosta, suoritetaan nille annettu lauseke ja tallennetaan lopputulos uuden listan alkioksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\n\nisot_kirjaimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"isot_kirjaimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['P', 'E', 'K', 'K', 'A', ' ', 'P', 'Y', 'T', 'H', 'O', 'N']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että lopputuloksena on lista. Jos halutaan muodostaa merkkijonon perusteella uusi merkkijono, voidaan hyödyntää aikaisemmin esiteltyä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodia. Metodin avulla voidaan yhdistää listan alkiot merkkijonoksi. Metodi kohdistuu välimerkkiin, jolla alkiot yhdistetään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi toimii siis esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ja \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['P', 'e', 'k', 'k', 'a']\nPekka\nP e k k a\nP,e,k,k,a\nP ja e ja k ja k ja a"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun yhdistetään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodin koosteeseen, voidaan muodostaa merkkijonosta uusi merkkijono helposti. Tarkastellaan esimerkkiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodin ja koosteen yhdistelmästä, joka muodostaa alkuperäisen merkkijonon pohjalta uuden merkkijonon, jossa on ainoastaan vokaalit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\ntestijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Heippa vaan kaikki, tämä on testi\""}]},{"type":"text","value":"\n\nvokaalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" testijono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aeiouyåäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nuusijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vokaalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eiaaaaiiääoei"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä on selkeyden vuoksi jaettu kooste ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodin kutsu omille riveilleen, mutta toki ne voi kirjoittaa myös yhdeksi lausekkeeksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\ntestijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Heippa vaan kaikki, tämä on testi\""}]},{"type":"text","value":"\n\nvokaalijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" testijono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aeiouyåäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vokaalijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyödyntämällä samassa yhteydessä vielä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":"-metodia, voidaan käsitellä esimerkiksi kokonaisia lauseita tehokkaasti yhdellä lausekkeella. Esimerkissä poistetaan lauseen jokaisesta sanasta ensimmäinen kirjain:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi se kuulkaa vaan sihisi hississä\""}]},{"type":"text","value":"\n\nlause_ilman_alkuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause_ilman_alkuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"esihiisi e uulkaa aan ihisi ississä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käydään läpi tarkemmin mitä koko lausekkeessa tapahtuu:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sana[1:]"}]},{"type":"text","value":" ottaa osajonon sanasta alkaen toisesta merkistä (eli indeksistä 1)\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lause.split()"}]},{"type":"text","value":" purkaa merkkijonon listaksi annetun välimerkin kohdalta. Kun välimerkkiä ei ole määritelty, käytetään oletuksena tyhjiä välejä\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\" \".join()"}]},{"type":"text","value":" yhdistää listan palaset uudeksi jonoksi käyttäen välilyöntiä palojen välissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama esimerkki perinteisemmällä tavalla näyttäisi esimerkiksi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi se kuulkaa vaan sihisi hississä\""}]},{"type":"text","value":"\n\nsanalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sana_ilman_alkua "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana_ilman_alkua"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlause_ilman_alkuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause_ilman_alkuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suodata kielletyt","tmcname":"osa11-08_suodata_kielletyt"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suodata_kielletyt(merkkijono: str, kielletyt: str)"}]},{"type":"text","value":" joka palauttaa sen parametrina olevasta merkkijonosta version, joka ei sisällä yhtään merkkiä sen toisena parametrina olevasta \"kiellettyjen merkkien\" merkkijonosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee käyttää listakoostetta. Funktio saa sisältää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-rivi mukaanlukien maksimissaan 3 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suo! kuokka, ja python: hieno yhdistelmä!??!?!\""}]},{"type":"text","value":"\nsuodatettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suodata_kielletyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!?:,.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suodatettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suo kuokka ja python hieno yhdistelmä"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"omat-oliot-koosteissa","style":"position:relative;"},"children":[{"type":"text","value":"Omat oliot koosteissa"},{"type":"element","tagName":"a","properties":{"href":"#omat-oliot-koosteissa","ariaLabel":"omat oliot koosteissa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus omia olioita on näppärä käsitellä tai muodostaa koosteiden avulla. Tarkastellaan seuraavaksi muutamaa esimerkkiä tähän liittyen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisessä esimerkissä luokka Maa mallintaa yhtä maata asukaslukuineen. Koosteessa poimitaan listalta kaikkien sellaisten maiden nimet, joiden asukasluku on suurempi kuin 5 miljoonaa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Maa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä maata asukaslukuineen \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" asukasluku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"asukasluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" asukasluku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suomi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n malta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Malta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ruotsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n islanti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Islanti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"350000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"suomi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" malta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ruotsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" islanti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n isommat_maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" maat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"asukasluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" isommat_maat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suomi\nRuotsi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen vaihtoehto olisi luoda lista maa-olioista ja tulostaa sen jälkeen nimet. Tämä vaihtoehto olisi järkevämpi, jos maita tarvittaisiin vielä myöhemminkin (tai mikäli haluttaisiin esimerkiksi tarkemmin tarkastella maiden asukaslukuja silmukassa):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suomi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n malta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Malta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ruotsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n islanti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Islanti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"350000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"suomi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" malta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ruotsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" islanti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n isommat_maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" maat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"asukasluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" isommat_maat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisessa esimerkissä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"text","value":" mallintaa yhtä juoksumatkaa nimineen ja pituuksineen. Nyt koosteen avulla luodaan lista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"text","value":"-olioita annettujen pituuksien mukaaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"text","value":"-luokan konstruktorissa parametrilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on oletusarvo, eikä sitä olioita luodessa esimerkissä erikseen annetakaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Juoksumatka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä n metrin pituista juoksumatkaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" matka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ei nimeä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"matka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matka\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"matka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" m. ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42195"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n matkat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"Juoksumatka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pituus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan kaikki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poimitaan yksi listasta ja nimetään se"}]},{"type":"text","value":"\n maraton "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viimeisenä listassa"}]},{"type":"text","value":"\n maraton"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maraton\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan vielä uudella nimellä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (ei nimeä)]\n[100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (Maraton)]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos oma luokka on viime kerran esimerkin mukaisesti iteroitava, voidaan sitä käyttää lähteenä listakoosteessa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sivuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kirjailija\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sivuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sivuja\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kirjahylly"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_kirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Iteraattorin alustusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__iter__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa viittauksen olioon itseensä, koska"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# iteraattori on toteutettu samassa luokassa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa seuraavan alkion"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos ei ole enempää alkioita, heitetään tapahtuma"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# StopIteration"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__next__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poimitaan listasta nykyinen"}]},{"type":"text","value":"\n kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan laskuria yhdellä"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja palautetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kirja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Ei enempää kirjoja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" StopIteration\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Elämäni Pythoniassa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"123"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Hemingjava\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"204"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C-itsemän veljestä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n hylly "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirjahylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan lista, jossa kaikkien kirjojen nimet"}]},{"type":"text","value":"\n kirjojen_nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hylly"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirjojen_nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kauppalistan tuotteet","tmcname":"osa11-09_kauppalistan_tuotteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osan 10 tehtävässä teimme "},{"type":"element","tagName":"a","properties":{"href":"/osa-10/3-olio-ohjelmoinnin-tekniikoita#programming-exercise-iteroitava-kauppalista"},"children":[{"type":"text","value":"Kauppalista-luokasta iteroitavan"}]},{"type":"text","value":". Iteroitavan luokan oliota voidaan käyttää listakoosteiden yhteydessä. Tehtäväpohjassa on mukana luokasta typistetty versio, jonka toiminnallisuus riittää tähän tehtävään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kauppalistan_tuotteet(kauppalista, maara: int)"}]},{"type":"text","value":" joka saa parametriksi kauppalista-olion. Funktio palauttaa kauppalistan ostoksista niiden tuotteiden nimet, joita on listalla vähintään parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maara"}]},{"type":"text","value":" verran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa listakoosteen avulla, ja sen pituus saa olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-määrittelyriveineen yhteensä korkeintaan kaksi riviä. Luokan Kauppalista koodia ei saa muuttaa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omenat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alkoholiton olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ananas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kauppalistalla vähintään 8 seuraavia tuotteita:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kauppalistan_tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"kauppalistalla vähintään 8 seuraavia tuotteita:\nbanaanit\nalkoholiton olut"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Halvempien hintaero","tmcname":"osa11-10_halvempien_hintaero"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osan 9 tehtävässä teimme luokan "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/1-oliot-ja-viittaukset#programming-exercise-asuntovertailu"},"children":[{"type":"text","value":"Asunto"}]},{"type":"text","value":". Tässä tehtävässä on käytössä hieman laajennettu versio luokasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"halvemmat(asunnot: list, verrattava: Asunto)"}]},{"type":"text","value":", joka saa parametriksi listan asuntoja sekä yksittäisen vertailtavan asunnon. Funktio palauttaa listan, jolla on asunnoista ne, jotka ovat hinnaltaan halvempia kuin vertailtava asunto, sekä näiden hintaeron. Palautettavan listan alkiot ovat tupleja, joiden ensimmäinen jäsen on asunto ja toisena sen hintaero vertailtavaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-määrittelyrivi mukaanluettuna on 2 riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Asunto"}]},{"type":"text","value":" koodia ei saa muuttaa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eira yksiö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kallio kaksio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jakomäki kolmio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"215"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomussalmi omakotitalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"105"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1700"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kerava 4h ja keittiö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na6 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Haikon kartano\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nasunnot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"a1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a6"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"asuntoa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"a3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" halvemmat vaihtoehdot:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" halvemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asunnot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" hintaero "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"asuntoa Jakomäki kolmio halvemmat vaihtoehdot:\nEira yksiö hintaero 107000 euroa\nKallio kaksio hintaero 35400 euroa\nSuomussalmi omakotitalo hintaero 87500 euroa\nKerava 4h ja keittiö hintaero 16500 euroa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"koosteet-sanakirjan-kanssa","style":"position:relative;"},"children":[{"type":"text","value":"Koosteet sanakirjan kanssa"},{"type":"element","tagName":"a","properties":{"href":"#koosteet-sanakirjan-kanssa","ariaLabel":"koosteet sanakirjan kanssa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koosteet toimivat samalla tavalla myös sanakirjan kanssa: jos vaihdetaan hakasulkeet aaltosulkeiksi, syntyy koosteen seurauksena listan sijasta sanakirja. Koska sanakirjan alkio muodostuu kahdesta komponentista - arvosta ja avaimesta, tulee molemmat komponentit antaa myös koostetta luodessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lähteenä voidaan edelleen käyttää mitä tahansa sarjaa, eli esimerkiksi listaa, merkkijonoa, tuplea, sanakirjaa tai omaa iteroinnin toteuttavaa luokkaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki, joka luo merkkijonon pohjalta sanakirjan, joka sisältää kaikki merkkijonon kirjaimet ja niiden esiintymämäärät:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei kaikki\""}]},{"type":"text","value":"\n\nmerkkimäärät "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirjain "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirjain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirjain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkimäärät"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'H': 1, 'e': 1, 'i': 3, ' ': 1, 'k': 3, 'a': 1}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Periaate on siis täsmälleen sama, mutta yksittäisen arvon sijasta annetaan erikseen avain ja arvo. Yleisesti merkittynä siis:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"{ : for in }"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toisena esimerkkinä ohjelmaa, joka laskee kaikkien listalla olevien positiivisten lukujen kertomat, mutta tällä kertaa sanakirjaan. Luku toimii avaimena ja kertoma arvona:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\""}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" n\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kertomat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{3: 6, 2: 2, 1: 1, 4: 24, 5: 120, 6: 720}"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Merkkijonojen pituudet","tmcname":"osa11-11_merkkijonojen_pituudet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituudet(merkkijonot: list)"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sanakirjan"}]},{"type":"text","value":", jossa avaimina on listan merkkijonot ja arvoina merkkijonojen pituudet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulee toteuttaa sanakirjakoosteen avulla. Funktion maksimipituus def-määrittelyrivi mukaanlukien on kaksi riviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kuokka\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsanojen_pituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanojen_pituudet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'suo': 3, 'kuokka': 6, 'python': 6, 'ja': 2, 'koodari': 7}"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Yleisimmät sanat","tmcname":"osa11-12_yleisimmat_sanat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yleisimmat_sanat(tiedoston_nimi: str, raja: int)"}]},{"type":"text","value":", joka saa parametrikseen tiedoston nimen. Funktio palauttaa sanakirjan, joka sisältää tiedostossa olevien sanojen esiintymislukumäärän niiden sanojen osalta, joilla on vähintään toisen parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"raja"}]},{"type":"text","value":" verran esiintymiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. jos funktiolla tarkasteltaisiin tiedostoa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"comprehensions.txt"}]},{"type":"text","value":" jonka sisältö on seuraava"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"txt"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-txt"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-txt"]},"children":[{"type":"text","value":"List comprehension is an elegant way to define and create lists based on existing lists.\nList comprehension is generally more compact and faster than normal functions and loops for creating list.\nHowever, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.\nRemember, every list comprehension can be rewritten in for loop, but every for loop can’t be rewritten in the form of list comprehension."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yleisimmat_sanat(\"comprehensions.txt\", 3)"}]},{"type":"text","value":" funktion palauttama sanakirja näyttäisi seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'comprehension': 4, 'is': 3, 'and': 3, 'for': 3, 'list': 4, 'in': 3}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kirjainkoko vaikuttaa ja vain kokonaiset sanat lasketaan - sanat 'List' ja 'lists' eivät siis saa kasvattaa sanan 'list' lukumäärää. Lisäksi kaikki sanoissa olevat välimerkit tulee poistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion toteutustapa on vapaa, helpoimmalla pääset hyödyntämällä lista- ja sanakirjakoosteita."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten koosteita voidaan hyödyntää merkkijonojen kanssa
    • \n
    • Osaat käyttää omia olioita koosteissa
    • \n
    • Osaat muodostaa myös sanakirjakoosteita
    • \n

    Koska koosteen lähteenä voi olla mikä tahansa sarja, voidaan sitä soveltaa myös merkkijonojen käsittelyyn. Merkkijonon läpikäynnissä poimitaan merkit yksitellen jonosta, suoritetaan nille annettu lauseke ja tallennetaan lopputulos uuden listan alkioksi.

    Esimerkiksi

    \nnimi = \"Pekka Python\"\n\nisot_kirjaimet = [merkki.upper() for merkki in nimi]\nprint(isot_kirjaimet)\n

    ['P', 'E', 'K', 'K', 'A', ' ', 'P', 'Y', 'T', 'H', 'O', 'N']

    Huomaa, että lopputuloksena on lista. Jos halutaan muodostaa merkkijonon perusteella uusi merkkijono, voidaan hyödyntää aikaisemmin esiteltyä join-metodia. Metodin avulla voidaan yhdistää listan alkiot merkkijonoksi. Metodi kohdistuu välimerkkiin, jolla alkiot yhdistetään.

    Metodi toimii siis esimerkiksi näin:

    \nnimi = \"Pekka\"\nlista = list(nimi)\nprint(lista)\n\nprint(\"\".join(lista))\nprint(\" \".join(lista))\nprint(\",\".join(lista))\nprint(\" ja \".join(lista))\n

    ['P', 'e', 'k', 'k', 'a']\nPekka\nP e k k a\nP,e,k,k,a\nP ja e ja k ja k ja a

    Kun yhdistetään join-metodin koosteeseen, voidaan muodostaa merkkijonosta uusi merkkijono helposti. Tarkastellaan esimerkkiä join-metodin ja koosteen yhdistelmästä, joka muodostaa alkuperäisen merkkijonon pohjalta uuden merkkijonon, jossa on ainoastaan vokaalit:

    \ntestijono = \"Heippa vaan kaikki, tämä on testi\"\n\nvokaalit = [merkki for merkki in testijono if merkki in \"aeiouyåäö\"]\nuusijono = \"\".join(vokaalit)\n\nprint(uusijono)\n

    eiaaaaiiääoei

    Esimerkissä on selkeyden vuoksi jaettu kooste ja join-metodin kutsu omille riveilleen, mutta toki ne voi kirjoittaa myös yhdeksi lausekkeeksi:

    \ntestijono = \"Heippa vaan kaikki, tämä on testi\"\n\nvokaalijono = \"\".join([merkki for merkki in testijono if merkki in \"aeiouyåäö\"])\n\nprint(vokaalijono)\n

    Hyödyntämällä samassa yhteydessä vielä split-metodia, voidaan käsitellä esimerkiksi kokonaisia lauseita tehokkaasti yhdellä lausekkeella. Esimerkissä poistetaan lauseen jokaisesta sanasta ensimmäinen kirjain:

    \nlause = \"Vesihiisi se kuulkaa vaan sihisi hississä\"\n\nlause_ilman_alkuja = \" \".join([sana[1:] for sana in lause.split()])\nprint(lause_ilman_alkuja)\n

    esihiisi e uulkaa aan ihisi ississä

    Käydään läpi tarkemmin mitä koko lausekkeessa tapahtuu:

    sana[1:] ottaa osajonon sanasta alkaen toisesta merkistä (eli indeksistä 1)\nlause.split() purkaa merkkijonon listaksi annetun välimerkin kohdalta. Kun välimerkkiä ei ole määritelty, käytetään oletuksena tyhjiä välejä\n\" \".join() yhdistää listan palaset uudeksi jonoksi käyttäen välilyöntiä palojen välissä.

    Sama esimerkki perinteisemmällä tavalla näyttäisi esimerkiksi tältä:

    \nlause = \"Vesihiisi se kuulkaa vaan sihisi hississä\"\n\nsanalista = []\nsanat = lause.split()\nfor sana in sanat:\n    sana_ilman_alkua = sana[1:]\n    sanalista.append(sana_ilman_alkua)\n\nlause_ilman_alkuja = \" \".join(sanalista)\n\n\nprint(lause_ilman_alkuja)\n

    Tee funktio suodata_kielletyt(merkkijono: str, kielletyt: str) joka palauttaa sen parametrina olevasta merkkijonosta version, joka ei sisällä yhtään merkkiä sen toisena parametrina olevasta \"kiellettyjen merkkien\" merkkijonosta.

    Funktion tulee käyttää listakoostetta. Funktio saa sisältää def-rivi mukaanlukien maksimissaan 3 riviä.

    Esimerkki funktion käytöstä

    lause = \"Suo! kuokka, ja python: hieno yhdistelmä!??!?!\"\nsuodatettu = suodata_kielletyt(lause, \"!?:,.\")\nprint(suodatettu)

    Suo kuokka ja python hieno yhdistelmä

    Omat oliot koosteissa

    Joskus omia olioita on näppärä käsitellä tai muodostaa koosteiden avulla. Tarkastellaan seuraavaksi muutamaa esimerkkiä tähän liittyen.

    Ensimmäisessä esimerkissä luokka Maa mallintaa yhtä maata asukaslukuineen. Koosteessa poimitaan listalta kaikkien sellaisten maiden nimet, joiden asukasluku on suurempi kuin 5 miljoonaa.

    \nclass Maa:\n    \"\"\" Luokka mallintaa yhtä maata asukaslukuineen \"\"\"\n    def __init__(self, nimi: str, asukasluku: int):\n        self.nimi = nimi\n        self.asukasluku = asukasluku\n\nif __name__ == \"__main__\":\n    suomi = Maa(\"Suomi\", 6000000)\n    malta = Maa(\"Malta\", 500000)\n    ruotsi = Maa(\"Ruotsi\", 10000000)\n    islanti = Maa(\"Islanti\", 350000)\n\n    maat = [suomi, malta, ruotsi, islanti]\n\n    isommat_maat = [maa.nimi for maa in maat if maa.asukasluku > 5000000]\n    for maa in isommat_maat:\n        print(maa)\n\n

    Suomi\nRuotsi

    Toinen vaihtoehto olisi luoda lista maa-olioista ja tulostaa sen jälkeen nimet. Tämä vaihtoehto olisi järkevämpi, jos maita tarvittaisiin vielä myöhemminkin (tai mikäli haluttaisiin esimerkiksi tarkemmin tarkastella maiden asukaslukuja silmukassa):

    \nif __name__ == \"__main__\":\n    suomi = Maa(\"Suomi\", 6000000)\n    malta = Maa(\"Malta\", 500000)\n    ruotsi = Maa(\"Ruotsi\", 10000000)\n    islanti = Maa(\"Islanti\", 350000)\n\n    maat = [suomi, malta, ruotsi, islanti]\n\n    isommat_maat = [maa for maa in maat if maa.asukasluku > 5000000]\n    for maa in isommat_maat:\n        print(maa.nimi)

    Toisessa esimerkissä luokka Juoksumatka mallintaa yhtä juoksumatkaa nimineen ja pituuksineen. Nyt koosteen avulla luodaan lista Juoksumatka-olioita annettujen pituuksien mukaaan.

    Huomaa, että Juoksumatka-luokan konstruktorissa parametrilla nimi on oletusarvo, eikä sitä olioita luodessa esimerkissä erikseen annetakaan:

    \nclass Juoksumatka:\n    \"\"\" Luokka mallintaa yhtä n metrin pituista juoksumatkaa \"\"\"\n    def __init__(self, matka:int, nimi:str = \"ei nimeä\"):\n        self.matka = matka\n        self.nimi = nimi\n\n    def __repr__(self):\n        return f\"{self.matka} m. ({self.nimi})\"\n\nif __name__ == \"__main__\":\n    pituudet = [100, 200, 1500, 3000, 42195]\n    matkat = [Juoksumatka(pituus) for pituus in pituudet]\n\n    # tulostetaan kaikki\n    print(matkat)\n\n    # Poimitaan yksi listasta ja nimetään se\n    maraton = matkat[-1] # viimeisenä listassa\n    maraton.nimi = \"Maraton\"\n\n    # Tulostetaan vielä uudella nimellä\n    print(matkat)\n

    [100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (ei nimeä)]\n[100 m. (ei nimeä), 200 m. (ei nimeä), 1500 m. (ei nimeä), 3000 m. (ei nimeä), 42195 m. (Maraton)]

    Jos oma luokka on viime kerran esimerkin mukaisesti iteroitava, voidaan sitä käyttää lähteenä listakoosteessa:

    \nclass Kirja:\n    def __init__(self, nimi: str, kirjailija: str, sivuja: int):\n        self.nimi = nimi\n        self.kirjailija = kirjailija\n        self.sivuja = sivuja\n\nclass Kirjahylly:\n    def __init__(self):\n        self._kirjat = []\n\n    def lisaa_kirja(self, kirja: Kirja):\n        self._kirjat.append(kirja)\n\n    # Iteraattorin alustusmetodi\n    # Tässä tulee alustaa iteroinnissa käytettävä(t) muuttuja(t)\n    def __iter__(self):\n        self.n = 0\n        # Metodi palauttaa viittauksen olioon itseensä, koska\n        # iteraattori on toteutettu samassa luokassa\n        return self\n\n    # Metodi palauttaa seuraavan alkion\n    # Jos ei ole enempää alkioita, heitetään tapahtuma\n    # StopIteration\n    def __next__(self):\n        if self.n < len(self._kirjat):\n            # Poimitaan listasta nykyinen\n            kirja = self._kirjat[self.n]\n            # Kasvatetaan laskuria yhdellä\n            self.n += 1\n            # ...ja palautetaan\n            return kirja\n        else:\n            # Ei enempää kirjoja\n            raise StopIteration\n\n# Testataan\nif __name__ == \"__main__\":\n    k1 = Kirja(\"Elämäni Pythoniassa\", \"Pekka Python\", 123)\n    k2 = Kirja(\"Vanhus ja Java\", \"Ernest Hemingjava\", 204)\n    k3 = Kirja(\"C-itsemän veljestä\", \"Keijo Koodari\", 997)\n\n    hylly = Kirjahylly()\n    hylly.lisaa_kirja(k1)\n    hylly.lisaa_kirja(k2)\n    hylly.lisaa_kirja(k3)\n\n    # Luodaan lista, jossa kaikkien kirjojen nimet\n    kirjojen_nimet = [kirja.nimi for kirja in hylly]\n    print(kirjojen_nimet)\n

    Osan 10 tehtävässä teimme Kauppalista-luokasta iteroitavan. Iteroitavan luokan oliota voidaan käyttää listakoosteiden yhteydessä. Tehtäväpohjassa on mukana luokasta typistetty versio, jonka toiminnallisuus riittää tähän tehtävään.

    Tee nyt funktio kauppalistan_tuotteet(kauppalista, maara: int) joka saa parametriksi kauppalista-olion. Funktio palauttaa kauppalistan ostoksista niiden tuotteiden nimet, joita on listalla vähintään parametrin maara verran.

    Funktio tulee toteuttaa listakoosteen avulla, ja sen pituus saa olla def-määrittelyriveineen yhteensä korkeintaan kaksi riviä. Luokan Kauppalista koodia ei saa muuttaa!

    Funktio toimii seuraavasti

    lista = Kauppalista()\nlista.lisaa(\"banaanit\", 10)\nlista.lisaa(\"omenat\", 5)\nlista.lisaa(\"alkoholiton olut\", 24)\nlista.lisaa(\"ananas\", 1)\n\nprint(\"kauppalistalla vähintään 8 seuraavia tuotteita:\")\nfor tuote in kauppalistan_tuotteet(lista, 8):\n    print(tuote)

    kauppalistalla vähintään 8 seuraavia tuotteita:\nbanaanit\nalkoholiton olut

    Osan 9 tehtävässä teimme luokan Asunto. Tässä tehtävässä on käytössä hieman laajennettu versio luokasta.

    Tee funktio halvemmat(asunnot: list, verrattava: Asunto), joka saa parametriksi listan asuntoja sekä yksittäisen vertailtavan asunnon. Funktio palauttaa listan, jolla on asunnoista ne, jotka ovat hinnaltaan halvempia kuin vertailtava asunto, sekä näiden hintaeron. Palautettavan listan alkiot ovat tupleja, joiden ensimmäinen jäsen on asunto ja toisena sen hintaero vertailtavaan.

    Funktio tulee toteuttaa listakoosteen avulla. Funktion maksimipituus def-määrittelyrivi mukaanluettuna on 2 riviä.

    Luokan Asunto koodia ei saa muuttaa!

    Funktio toimii seuraavasti

    a1 = Asunto(1, 16, 5500, \"Eira yksiö\")\na2 = Asunto(2, 38, 4200, \"Kallio kaksio\")\na3 = Asunto(3, 78, 2500, \"Jakomäki kolmio\")\na4 = Asunto(6, 215, 500, \"Suomussalmi omakotitalo\")\na5 = Asunto(4, 105, 1700, \"Kerava 4h ja keittiö\")\na6 = Asunto(25, 1200, 2500, \"Haikon kartano\")\n\nasunnot = [a1, a2, a3, a4, a5, a6]\n\nprint(f\"asuntoa {a3.kuvaus} halvemmat vaihtoehdot:\")\nfor alkio in halvemmat(asunnot, a3):\n    print(f\"{alkio[0].kuvaus:30} hintaero {alkio[1]} euroa\")

    asuntoa Jakomäki kolmio halvemmat vaihtoehdot:\nEira yksiö hintaero 107000 euroa\nKallio kaksio hintaero 35400 euroa\nSuomussalmi omakotitalo hintaero 87500 euroa\nKerava 4h ja keittiö hintaero 16500 euroa

    Koosteet sanakirjan kanssa

    Koosteet toimivat samalla tavalla myös sanakirjan kanssa: jos vaihdetaan hakasulkeet aaltosulkeiksi, syntyy koosteen seurauksena listan sijasta sanakirja. Koska sanakirjan alkio muodostuu kahdesta komponentista - arvosta ja avaimesta, tulee molemmat komponentit antaa myös koostetta luodessa.

    Lähteenä voidaan edelleen käyttää mitä tahansa sarjaa, eli esimerkiksi listaa, merkkijonoa, tuplea, sanakirjaa tai omaa iteroinnin toteuttavaa luokkaa.

    Esimerkki, joka luo merkkijonon pohjalta sanakirjan, joka sisältää kaikki merkkijonon kirjaimet ja niiden esiintymämäärät:

    \nlause = \"Hei kaikki\"\n\nmerkkimäärät = {kirjain : lause.count(kirjain) for kirjain in lause}\nprint(merkkimäärät)\n

    {'H': 1, 'e': 1, 'i': 3, ' ': 1, 'k': 3, 'a': 1}

    Periaate on siis täsmälleen sama, mutta yksittäisen arvon sijasta annetaan erikseen avain ja arvo. Yleisesti merkittynä siis:

    {<avainlauseke> : <arvolauseke> for <alkio> in <sarja>}

    Tarkastellaan vielä toisena esimerkkinä ohjelmaa, joka laskee kaikkien listalla olevien positiivisten lukujen kertomat, mutta tällä kertaa sanakirjaan. Luku toimii avaimena ja kertoma arvona:

    \ndef kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n! \"\"\"\n    k = 1\n    while n >= 2:\n        k *= n\n        n -= 1\n    return k\n\nif __name__ == \"__main__\":\n    lista = [-2, 3, 2, 1, 4, -10, 5, 1, 6]\n    kertomat = {luku : kertoma(luku) for luku in lista if luku > 0}\n    print(kertomat)\n

    {3: 6, 2: 2, 1: 1, 4: 24, 5: 120, 6: 720}

    Tee funktio pituudet(merkkijonot: list), joka saa parametriksi listan merkkijonoja. Funktio palauttaa sanakirjan, jossa avaimina on listan merkkijonot ja arvoina merkkijonojen pituudet.

    Funktio tulee toteuttaa sanakirjakoosteen avulla. Funktion maksimipituus def-määrittelyrivi mukaanlukien on kaksi riviä.

    Funktio toimii seuraavasti

    sanalista = [\"suo\", \"kuokka\" , \"python\", \"ja\", \"koodari\"]\n\nsanojen_pituudet = pituudet(sanalista)\nprint(sanojen_pituudet)

    {'suo': 3, 'kuokka': 6, 'python': 6, 'ja': 2, 'koodari': 7}

    Tee funktio yleisimmat_sanat(tiedoston_nimi: str, raja: int), joka saa parametrikseen tiedoston nimen. Funktio palauttaa sanakirjan, joka sisältää tiedostossa olevien sanojen esiintymislukumäärän niiden sanojen osalta, joilla on vähintään toisen parametrin raja verran esiintymiä.

    Esim. jos funktiolla tarkasteltaisiin tiedostoa comprehensions.txt jonka sisältö on seuraava

    List comprehension is an elegant way to define and create lists based on existing lists.\nList comprehension is generally more compact and faster than normal functions and loops for creating list.\nHowever, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.\nRemember, every list comprehension can be rewritten in for loop, but every for loop can’t be rewritten in the form of list comprehension.

    Kutsuttaessa yleisimmat_sanat(\"comprehensions.txt\", 3) funktion palauttama sanakirja näyttäisi seuraavalta:

    {'comprehension': 4, 'is': 3, 'and': 3, 'for': 3, 'list': 4, 'in': 3}

    Huomaa, että kirjainkoko vaikuttaa ja vain kokonaiset sanat lasketaan - sanat 'List' ja 'lists' eivät siis saa kasvattaa sanan 'list' lukumäärää. Lisäksi kaikki sanoissa olevat välimerkit tulee poistaa.

    Funktion toteutustapa on vapaa, helpoimmalla pääset hyödyntämällä lista- ja sanakirjakoosteita.

    ","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/2-lisaa-koosteesta.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-11/3-rekursio/page-data.json b/page-data/osa-11/3-rekursio/page-data.json index 4a44e6d12..36706a24b 100644 --- a/page-data/osa-11/3-rekursio/page-data.json +++ b/page-data/osa-11/3-rekursio/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-11/3-rekursio", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan rekursiolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa itse yksinkertaisen rekursiivisen funktion"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten aiemmin on huomattu, funktiot voivat kutsua toisia funktioita. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kerrat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samaan tapaan funktio voi kutsua myös itseään. Jos kuitenkaan funktion parametrit eivät muutu kutsukertojen välissä, tästä syntyy \"ikuinen silmukka\":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällöin funktion kutsuminen millä tahansa merkkijonolla antaa virheilmoituksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"RecursionError: maximum recursion depth exceeded"}]}]},{"type":"element","tagName":"h2","properties":{"id":"mita-rekursio-tarkoittaa","style":"position:relative;"},"children":[{"type":"text","value":"Mitä rekursio tarkoittaa?"},{"type":"element","tagName":"a","properties":{"href":"#mita-rekursio-tarkoittaa","ariaLabel":"mita rekursio tarkoittaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virheilmoituksessakin mainitulla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"rekursiolla"}]},{"type":"text","value":" tarkoitetaan sitä, että funktio kutsuu itseään. Rekursiossa funktion parametrien pitää kuitenkin muuttua niin, että jossain vaiheessa kutsuminen lopetetaan. Perusperiaate on sama kuin silmukoissa: jotta silmukka ei jatkuisi ikuisesti, siinä tulee olla päättymisehto, joka toteutuu jossain vaiheessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan aluksi yksinkertaista funktiota, joka lisää listan loppuun 0-alkioita niin kauan kuin listan pituus on alle 10. Silmukan sijasta funktio kutsuukin itseään uudestaan, jos ehto ei täyty:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tayta_lista"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Lisää listaan alkoita jos sen pituus on alle 10 \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan uudestaaan"}]},{"type":"text","value":"\n tayta_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n testi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tayta_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"testi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"testi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3, 4, 0, 0, 0, 0, 0, 0]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perinteisellä silmukalla ohjelma näyttäisi esimerkiksi tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tayta_lista"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Lisää listaan alkoita jos sen pituus on alle 10 \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n testi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tayta_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"testi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"testi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkeistä huomataan, että perinteinen (eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iteratiivinen"}]},{"type":"text","value":") lähestymistapa tuottaa lyhyemmän ja selkeämmän ohjelman. Rekursiivinen ohjelma kuitenkin toimii ja tuottaa oikean lopputuloksen, koska funktio käsittelee jokaisella kutsukerralla samaa listaa viittauksen kautta."}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Iteratiivinen vai rekursiivinen?"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietojenkäsittelytieteteessä erotetaan usein "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iteratiiviset"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"rekursiiviset"}]},{"type":"text","value":" algoritmit. Iteratiivinen tarkoittaa kurssilla tähän asti yleensä käyttämäämme tapaa, jossa ratkaisu perustuu peräkkäisyyteen – yleensä siihen, että käsitellään rakenne silmukassa. Rekursiivinen tarkoittaa vaihtoehtoista tapaa, jossa funktio silmukan sijasta (tai lisäksi) kutsuu itseään muuttuvilla parametrien arvoilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä tahansa algoritmi on periaatteessa mahdollista toteuttaa sekä iteratiivisesti että rekursiivisesti, mutta monessa tapauksessa jompikumpi tapa soveltuu selkeästi paremmin ongelman ratkaisemiseen."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suurempia lukuja","tmcname":"osa11-13_listaan_lukuja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"rekursiivinen funktio"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"listaan_lukuja(luvut: list)"}]},{"type":"text","value":", joka lisää listaan lukuja niin kauan, kunnes listan pituus on viidellä jaollinen. Jokainen listaan lisättävä luku on aina yhden suurempi kuin listan viimeinen luku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion pitää kutsua itseään rekursiivisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsusta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlistaan_lukuja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 3, 4, 5, 10, 11, 12, 13, 14, 15]"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"rekursio-ja-paluuarvot","style":"position:relative;"},"children":[{"type":"text","value":"Rekursio ja paluuarvot"},{"type":"element","tagName":"a","properties":{"href":"#rekursio-ja-paluuarvot","ariaLabel":"rekursio ja paluuarvot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekursiivisella funktiolla voi olla myös palautusarvo. Tarkastellaan tätä tarkoitusta varten esimerkkiä, joka laskee kertoman rekursiivisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio laskee positiivisen luvun n kertoman n!, eli n * (n-1) ... * 2 * 1 \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lukujen 0 ja 1 kertoma on 1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsuu funktiota uudestaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Luvun "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kertoma on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvun 1 kertoma on 1\nLuvun 2 kertoma on 2\nLuvun 3 kertoma on 6\nLuvun 4 kertoma on 24\nLuvun 5 kertoma on 120\nLuvun 6 kertoma on 720"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion parametrin arvo on 0 tai 1, funktio palauttaa 1 (koska kertoman määritelmän mukaan lukujen 0 ja 1 kertoma on 1). Muuten funktio palauttaa lausekkeen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n * kertoma(n - 1)"}]},{"type":"text","value":". Tämä tarkoittaa, että parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kerrotaan funktion itsensä kutsun palauttamalla arvolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olennaista funktion toimivuuden kannalta on, että funktiossa on määritelty ehto, jolla se ei kutsu itseään enää uudestaan. Tässä tapauksessa ehto on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n < 2"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visualisaattori"}]},{"type":"text","value":" on oivallinen väline rekursiota käyttävien ohjelmien tutkimiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan kertoman laskevaa funktiota niin, että se käyttää apumuuttujia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n edellisen_luvun_kertoma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvun_n_kertoma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" edellisen_luvun_kertoma\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvun_n_kertoma\n \nkertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kokeile, miten "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#code=def%20kertoma%28n%3A%20int%29%3A%0A%20%20%20%20if%20n%20%3C%202%3A%0A%20%20%20%20%20%20%20%20return%201%0A%0A%20%20%20%20edellisen_luvun_kertoma%20%3D%20kertoma%28n%20-%201%29%0A%20%20%20%20luvun_n_kertoma%20%3D%20n%20*%20edellisen_luvun_kertoma%0A%20%20%20%20return%20luvun_n_kertoma%0A%20%20%20%20%0Akertoma%285%29&cumulative=false&curInstr=5&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattori"}]},{"type":"text","value":" demonstroi rekursion etenemisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hieman normaalista poiketen visualisaattorissa kutsupino \"kasvaa\" alaspäin. Suorituksessa oleva funktiokutsu on kutsupinon alimpana oleva sinisellä merkitty \"lohko\", jolla on omat muuttujansa. Hetken kuluttua palautettava tulos on laskettu muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvun_n_kertoma"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9d75a2d6b42864178f98c237765dbc86/6976b/11_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.913043478260875%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABKklEQVQoz42Ry04DMQxF+/+fxgapGwQSQtBKhcx08rJnbMeOUWcKpTuOoiwSnST3ZpcrlYq1lgJLKpeRCwCA/4Odu/cVNQtjHM7ZrG+L26ym3b2tiMg8zze5946I0zSllBaSpv1Xc3dZaKmwAJaYlEVEzuezqt5kMyuljOOIAIhYV4jIepcQecqOJBksVudm3brZVTZhJgor4zDEONUfmLmlyk3c3bzrTE5yl9lUAaCU0loDJJj57zaPaangaiZN6+zcfI10lWvOKaWtBhZjtt59y+LuMaSP18/xVE6HqXxGX+5v1tbMDAFCCMPl7V8hBADo6xkh4ePzcf9yfHh6D4fB9292HPtUvF062wFKRSFAYUorIqKq2/+xaEGKGWIGknYpayZjMTUz+wbqwQrKy5mcywAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9d75a2d6b42864178f98c237765dbc86/a0b58/11_1_1.webp 230w","/static/9d75a2d6b42864178f98c237765dbc86/bc10c/11_1_1.webp 460w","/static/9d75a2d6b42864178f98c237765dbc86/966d8/11_1_1.webp 920w","/static/9d75a2d6b42864178f98c237765dbc86/445df/11_1_1.webp 1380w","/static/9d75a2d6b42864178f98c237765dbc86/78de1/11_1_1.webp 1840w","/static/9d75a2d6b42864178f98c237765dbc86/129b4/11_1_1.webp 2172w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9d75a2d6b42864178f98c237765dbc86/81c8e/11_1_1.png 230w","/static/9d75a2d6b42864178f98c237765dbc86/08a84/11_1_1.png 460w","/static/9d75a2d6b42864178f98c237765dbc86/c0255/11_1_1.png 920w","/static/9d75a2d6b42864178f98c237765dbc86/b1001/11_1_1.png 1380w","/static/9d75a2d6b42864178f98c237765dbc86/161ec/11_1_1.png 1840w","/static/9d75a2d6b42864178f98c237765dbc86/6976b/11_1_1.png 2172w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9d75a2d6b42864178f98c237765dbc86/c0255/11_1_1.png","alt":"11 1 1","title":"11 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista funktiota, joka laskee halutun Fibonaccin luvun rekursiivisesti. Fibonaccin lukujonossa luku on aina kahden edellisen luvun summa. Niinpä jonon alku näyttää tältä: 1, 1, 2, 3, 5, 8, 13, 21, 34."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"fibonacci"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio palauttaa n:nen luvun Fibonaccin sarjasta (1, 1, 2, 3, 5, 8 jne.); n > 0\"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kaksi ekaa lukua ovat ykkösiä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten luku saadaan laskemalla kaksi edellistä yhteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" fibonacci"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" fibonacci"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan, että toimii"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Fibonaccin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":". luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"fibonacci"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Fibonaccin 1. luku on 1\nFibonaccin 2. luku on 1\nFibonaccin 3. luku on 2\nFibonaccin 4. luku on 3\nFibonaccin 5. luku on 5\nFibonaccin 6. luku on 8\nFibonaccin 7. luku on 13\nFibonaccin 8. luku on 21\nFibonaccin 9. luku on 34\nFibonaccin 10. luku on 55"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä kertaa lopetusehtona on, että luku on pienempi tai yhtä suuri kuin 2, koska Fibonaccin kaksi ensimmäistä lukua ovat molemmat ykkösiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Miten algoritmi käytännössä oikein toimii?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvuille 1 ja 2 algoritmi palauttaa arvon 1 ehdon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n <= 2"}]},{"type":"text","value":" mukaisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvulle 3 algoritmi palauttaa arvon lausekkeesta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(n - 1) + fibonacci(n - 2)"}]},{"type":"text","value":", eli käytännössä lausekkeen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(2) + fibonacci(1)"}]},{"type":"text","value":". Koska edellisessä kohdassa huomattiin, että näiden molempien arvo on 1, palauttaa funktio siis arvon 2 (joka onkin kolmas Fibonaccin luku)"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvulle 4 algoritmi palauttaa arvon lausekkeesta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(3) + fibonacci(2)"}]},{"type":"text","value":", mikä edellisten kohtien perusteella on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 + 1"}]},{"type":"text","value":" eli 3."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvulle 5 algoritmi palauttaa arvon lausekkeesta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(4) + fibonacci(3)"}]},{"type":"text","value":", mikä edellisten kohtien perusteella on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"3 + 2"}]},{"type":"text","value":" eli 5."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"jne."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekursiivinen algoritmimme siis toimii, koska voimme todistaa jokaisen luvun kohdalla ohjelman toimivuuden aikaisempien lukujen perusteella."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Rekursiivinen summa","tmcname":"osa11-14_rekursiivinen_summa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee rekursiivinen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa(luku: int)"}]},{"type":"text","value":" summan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1 + 2 + ... + luku"}]},{"type":"text","value":" laskemiseen. Funktion runko on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kun luku on 1, ei ole muita summattavia..."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luku\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# täydennä koodi..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"6\n15\n55"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sulut tasapainossa","tmcname":"osa11-15_sulut_tasapainossa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sulut_tasapainossa"}]},{"type":"text","value":", joka tarkastaa, onko sen parametrina olevassa merkkijonossa sulut tasapainossa, eli onko jokaista \"aukeavaa\" sulkumerkkiä ( kohti on oma \"sulkeutuva\" sulkumerkki ), ja että sulut eivät mene ristiin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sulut_tasapainossa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'('"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"')'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# poistetaan ensimmäinen ja viimeinen merkki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"(((())))\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä yksi loppusulku liikaa"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"()())\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä alussa virheellinen loppusulku"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\")()\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa, sillä funktio ei osaa käsitellä kuin sisäkkäisiä sulkuja"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"()(())\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nFalse\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna funktiota siten, että se jättää huomiotta kaikki muut kuin sulkumerkit, ja että se osaa kaarisulkujen lisäksi myös hakasulut. Haka- ja kaarisulut eivät saa mennä ristiin!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa muutama käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"([([])])\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"(python versio [3.7]) käytä tätä!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä virheellinen loppusulku"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"(()]\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä erityyppiset sulut menevät ristiin"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"([huono)]\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktion ei tarvitse osata kuin yksi sisäkkäinen sulutus - sen ei siis tarvitse ymmärtää esimerkiksi jonoa (x + 1)(y + 1)."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nFalse\nFalse"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"binaarihaku","style":"position:relative;"},"children":[{"type":"text","value":"Binäärihaku"},{"type":"element","tagName":"a","properties":{"href":"#binaarihaku","ariaLabel":"binaarihaku permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binäärihaussa yritetään löytää järjestyksessä olevasta listasta annettu alkio. Järjestys tarkoittaa tässä yhteydessä esimerkiksi lukujen järjestystä pienimmästä suurimpaan tai merkkijonoja aakkosjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binäärihaun ideana on, että tarkastellaan aina listan keskimmäistä alkiota. Jos"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"keskimmäinen alkio on etsitty alkio, palautetaan tieto siitä, että alkio löytyi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"keskimmäinen alkio on pienempi kuin etsittävä alkio, rajataan haku listan jälkimmäiselle puolikkaalle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"keskimmäinen alkio on suurempi kuin etsittävä alkio, rajataan haku listan ensimmäiselle puolikkaalle"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lista on tyhjä, palautetaan tieto siitä, että alkiota ei löytynyt."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava kuva havainnollistaa binäärihaun etenemistä, kun etsitään listasta lukua 24:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 777px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/ca600c1fe96166b67e6fe37b5f5dcc89/108f8/11_3_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.47826086956522%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABXklEQVQoz5WQ3UvCUBiH989FdN9dRBAUEhFd1G13EXQREQTdCAYl5AojMQrLKfRBNmSVusCczjn3gbYv5xlzO2/pBgVB4I/Dj/fmOec5LwHjRFGURqMhiiLP86ZpEhgAYwh7FB/7fjj8HDyCHcexLMu2bU3TEELEdCy1dHq7mMgskNeRk+xsKjHxuDGfPlsm86vn1EqSWrvIR8ib/IcAAJ1uV9d1wzACEYIR1bLcYSWNbeuV9iejtp8MlpZaBV6hBZkWlGJLfW7KimUDQK/Xs20bIRTCOzn64K60+ZRZf4/uFu6jD5U96pXrmADgh7LDBOLaKKZphnC8yCaZeqxE79fTx28vJFM9pMu8NhQb+P7vbwOAYRi6rluWFcKu5/Wh72DXcwHwWLsHYubocjK3NZXdnotfUdUmALie//eSQFsQBI7jarVaYE7Ipi0hTUK6avWRO/j/Kc/zMMZBf8Nfq6LsorLTvyMAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/ca600c1fe96166b67e6fe37b5f5dcc89/a0b58/11_3_1.webp 230w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/bc10c/11_3_1.webp 460w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/2e4ba/11_3_1.webp 777w"],"sizes":"(max-width: 777px) 100vw, 777px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/ca600c1fe96166b67e6fe37b5f5dcc89/81c8e/11_3_1.png 230w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/08a84/11_3_1.png 460w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/108f8/11_3_1.png 777w"],"sizes":"(max-width: 777px) 100vw, 777px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/ca600c1fe96166b67e6fe37b5f5dcc89/108f8/11_3_1.png","alt":"11 3 1","title":"11 3 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekursiivinen algoritmi binäärihaulle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"binaarihaku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio palauttaa True tai False sen mukaan, onko listalla alkiota \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos hakualue on tyhjä, ei löydy"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vasen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lasketaan hakualueen keskikohta"}]},{"type":"text","value":"\n keski "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vasen"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos keskellä on etsittävä alkio"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keski"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos pienempi, etsi jälkipuoliskolta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keski"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keski"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten täytyy olla suurempi, etsitään alkupuoliskolta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keski"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"18"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nFalse\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä funktiolle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"binaarihaku"}]},{"type":"text","value":" annetaan neljä parametria: viite listaan, etsittävä alkio sekä hakualueen vasen ja oikea kohta. Alussa hakualue on koko lista, jolloin vasen kohta on 0 ja oikea kohta on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(lista)-1"}]},{"type":"text","value":". Funktio tarkastaa hakualueen keskellä olevan alkion ja joko ilmoittaa, että haluttu alkio löytyi, tai jatkaa hakua vasemmasta tai oikeasta puoliskosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos verrataan binäärihakua "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"peräkkäishakuun"}]},{"type":"text","value":", algoritmien tehokkuus erottuu selvästi. Peräkkäishaussa alkiota lähdetään etsimään listan alusta ja listaa käydään läpi yksi alkio kerrallaan, kunnes alkio on löytynyt tai on päästy listan loppuun. Jos listan pituus on miljoona alkiota, tarvitaan perättäishaussa koko listan läpikäyntiin miljoona askelta, mutta binäärihaussa askelia tarvitaan vain 20."}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan rekursiolla
    • \n
    • Osaat kirjoittaa itse yksinkertaisen rekursiivisen funktion
    • \n

    Kuten aiemmin on huomattu, funktiot voivat kutsua toisia funktioita. Esimerkiksi näin:

    def tervehdi(nimi : str):\n    print(\"Moikka,\", nimi)\n\ndef tervehdi_monesti(nimi : str, kerrat : int):\n    for i in range(kerrat):\n        tervehdi(nimi)

    Samaan tapaan funktio voi kutsua myös itseään. Jos kuitenkaan funktion parametrit eivät muutu kutsukertojen välissä, tästä syntyy \"ikuinen silmukka\":

    def tervehdi(nimi : str):\n    print(\"Moikka,\", nimi)\n    tervehdi(nimi)

    Tällöin funktion kutsuminen millä tahansa merkkijonolla antaa virheilmoituksen:

    RecursionError: maximum recursion depth exceeded

    Mitä rekursio tarkoittaa?

    Virheilmoituksessakin mainitulla rekursiolla tarkoitetaan sitä, että funktio kutsuu itseään. Rekursiossa funktion parametrien pitää kuitenkin muuttua niin, että jossain vaiheessa kutsuminen lopetetaan. Perusperiaate on sama kuin silmukoissa: jotta silmukka ei jatkuisi ikuisesti, siinä tulee olla päättymisehto, joka toteutuu jossain vaiheessa.

    Tarkastellaan aluksi yksinkertaista funktiota, joka lisää listan loppuun 0-alkioita niin kauan kuin listan pituus on alle 10. Silmukan sijasta funktio kutsuukin itseään uudestaan, jos ehto ei täyty:

    def tayta_lista(luvut: list):\n    \"\"\" Lisää listaan alkoita jos sen pituus on alle 10 \"\"\"\n    if len(luvut) < 10:\n        luvut.append(0)\n        # Kutsutaan uudestaaan\n        tayta_lista(luvut)\n\n\nif __name__ == \"__main__\":\n    testi = [1,2,3,4]\n    tayta_lista(testi)\n    print(testi)

    [1, 2, 3, 4, 0, 0, 0, 0, 0, 0]

    Perinteisellä silmukalla ohjelma näyttäisi esimerkiksi tältä:

    \ndef tayta_lista(luvut: list):\n    \"\"\" Lisää listaan alkoita jos sen pituus on alle 10 \"\"\"\n    while len(luvut) < 10:\n        luvut.append(0)\n\nif __name__ == \"__main__\":\n    testi = [1,2,3,4]\n    tayta_lista(testi)\n    print(testi)\n

    Esimerkeistä huomataan, että perinteinen (eli iteratiivinen) lähestymistapa tuottaa lyhyemmän ja selkeämmän ohjelman. Rekursiivinen ohjelma kuitenkin toimii ja tuottaa oikean lopputuloksen, koska funktio käsittelee jokaisella kutsukerralla samaa listaa viittauksen kautta.

    Tietojenkäsittelytieteteessä erotetaan usein iteratiiviset ja rekursiiviset algoritmit. Iteratiivinen tarkoittaa kurssilla tähän asti yleensä käyttämäämme tapaa, jossa ratkaisu perustuu peräkkäisyyteen – yleensä siihen, että käsitellään rakenne silmukassa. Rekursiivinen tarkoittaa vaihtoehtoista tapaa, jossa funktio silmukan sijasta (tai lisäksi) kutsuu itseään muuttuvilla parametrien arvoilla.

    Mikä tahansa algoritmi on periaatteessa mahdollista toteuttaa sekä iteratiivisesti että rekursiivisesti, mutta monessa tapauksessa jompikumpi tapa soveltuu selkeästi paremmin ongelman ratkaisemiseen.

    Kirjoita rekursiivinen funktio listaan_lukuja(luvut: list), joka lisää listaan lukuja niin kauan, kunnes listan pituus on viidellä jaollinen. Jokainen listaan lisättävä luku on aina yhden suurempi kuin listan viimeinen luku.

    Funktion pitää kutsua itseään rekursiivisesti.

    Esimerkki funktion kutsusta:

    luvut = [1,3,4,5,10,11]\nlistaan_lukuja(luvut)\nprint(luvut)

    [1, 3, 4, 5, 10, 11, 12, 13, 14, 15]

    Rekursio ja paluuarvot

    Rekursiivisella funktiolla voi olla myös palautusarvo. Tarkastellaan tätä tarkoitusta varten esimerkkiä, joka laskee kertoman rekursiivisesti:

    \ndef kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n!, eli n * (n-1) ... * 2 * 1 \"\"\"\n    if n < 2:\n        # Lukujen 0 ja 1 kertoma on 1\n        return 1\n\n    # Kutsuu funktiota uudestaan\n    return n * kertoma(n - 1)\n\nif __name__ == \"__main__\":\n    # Testataan\n    for i in range(1, 7):\n        print(f\"Luvun {i} kertoma on {kertoma(i)}\")\n

    Luvun 1 kertoma on 1\nLuvun 2 kertoma on 2\nLuvun 3 kertoma on 6\nLuvun 4 kertoma on 24\nLuvun 5 kertoma on 120\nLuvun 6 kertoma on 720

    Jos funktion parametrin arvo on 0 tai 1, funktio palauttaa 1 (koska kertoman määritelmän mukaan lukujen 0 ja 1 kertoma on 1). Muuten funktio palauttaa lausekkeen n * kertoma(n - 1). Tämä tarkoittaa, että parametri n kerrotaan funktion itsensä kutsun palauttamalla arvolla.

    Olennaista funktion toimivuuden kannalta on, että funktiossa on määritelty ehto, jolla se ei kutsu itseään enää uudestaan. Tässä tapauksessa ehto on n < 2.

    Visualisaattori on oivallinen väline rekursiota käyttävien ohjelmien tutkimiseksi.

    Laajennetaan kertoman laskevaa funktiota niin, että se käyttää apumuuttujia:

    def kertoma(n: int):\n    if n < 2:\n        return 1\n\n    edellisen_luvun_kertoma = kertoma(n - 1)\n    luvun_n_kertoma = n * edellisen_luvun_kertoma\n    return luvun_n_kertoma\n    \nkertoma(5)

    Kokeile, miten visualisaattori demonstroi rekursion etenemisen.

    Hieman normaalista poiketen visualisaattorissa kutsupino \"kasvaa\" alaspäin. Suorituksessa oleva funktiokutsu on kutsupinon alimpana oleva sinisellä merkitty \"lohko\", jolla on omat muuttujansa. Hetken kuluttua palautettava tulos on laskettu muuttujaan luvun_n_kertoma.

    \n \n \n \n \n \n \"11\n \n \n

    Tarkastellaan vielä toista funktiota, joka laskee halutun Fibonaccin luvun rekursiivisesti. Fibonaccin lukujonossa luku on aina kahden edellisen luvun summa. Niinpä jonon alku näyttää tältä: 1, 1, 2, 3, 5, 8, 13, 21, 34.

    def fibonacci(n: int):\n    \"\"\" Funktio palauttaa n:nen luvun Fibonaccin sarjasta (1, 1, 2, 3, 5, 8 jne.); n > 0\"\"\"\n\n    if n <= 2:\n        # Kaksi ekaa lukua ovat ykkösiä\n        return 1\n\n    # Muuten luku saadaan laskemalla kaksi edellistä yhteen\n    return fibonacci(n - 1) + fibonacci(n - 2)\n\n# Testataan, että toimii\nif __name__ == \"__main__\":\n    for i in range(1, 11):\n        print(f\"Fibonaccin {i}. luku on {fibonacci(i)}\")

    Fibonaccin 1. luku on 1\nFibonaccin 2. luku on 1\nFibonaccin 3. luku on 2\nFibonaccin 4. luku on 3\nFibonaccin 5. luku on 5\nFibonaccin 6. luku on 8\nFibonaccin 7. luku on 13\nFibonaccin 8. luku on 21\nFibonaccin 9. luku on 34\nFibonaccin 10. luku on 55

    Tällä kertaa lopetusehtona on, että luku on pienempi tai yhtä suuri kuin 2, koska Fibonaccin kaksi ensimmäistä lukua ovat molemmat ykkösiä.

    Miten algoritmi käytännössä oikein toimii?

    Luvuille 1 ja 2 algoritmi palauttaa arvon 1 ehdon n <= 2 mukaisesti.

    Luvulle 3 algoritmi palauttaa arvon lausekkeesta fibonacci(n - 1) + fibonacci(n - 2), eli käytännössä lausekkeen fibonacci(2) + fibonacci(1). Koska edellisessä kohdassa huomattiin, että näiden molempien arvo on 1, palauttaa funktio siis arvon 2 (joka onkin kolmas Fibonaccin luku)

    Luvulle 4 algoritmi palauttaa arvon lausekkeesta fibonacci(3) + fibonacci(2), mikä edellisten kohtien perusteella on siis 2 + 1 eli 3.

    Luvulle 5 algoritmi palauttaa arvon lausekkeesta fibonacci(4) + fibonacci(3), mikä edellisten kohtien perusteella on siis 3 + 2 eli 5.

    jne.

    Rekursiivinen algoritmimme siis toimii, koska voimme todistaa jokaisen luvun kohdalla ohjelman toimivuuden aikaisempien lukujen perusteella.

    Tee rekursiivinen funktio summa(luku: int) summan 1 + 2 + ... + luku laskemiseen. Funktion runko on seuraava:

    def summa(luku: int):\n    # kun luku on 1, ei ole muita summattavia...\n    if luku <= 1:\n        return luku\n\n    # täydennä koodi...

    Muutama käyttöesimerkki:

    tulos = summa(3)\nprint(tulos)\n\nprint(summa(5))\nprint(summa(10))

    6\n15\n55

    Tehtäväpohjassa on valmiina funktio sulut_tasapainossa, joka tarkastaa, onko sen parametrina olevassa merkkijonossa sulut tasapainossa, eli onko jokaista \"aukeavaa\" sulkumerkkiä ( kohti on oma \"sulkeutuva\" sulkumerkki ), ja että sulut eivät mene ristiin.

    def sulut_tasapainossa(merkkijono: str):\n    if len(merkkijono) == 0:\n        return True\n    if not (merkkijono[0] == '(' and merkkijono[-1] == ')'):\n        return False\n\n    # poistetaan ensimmäinen ja viimeinen merkki\n    return sulut_tasapainossa(merkkijono[1:-1])\n\nok = sulut_tasapainossa(\"(((())))\")\nprint(ok)\n\n# ei kelpaa sillä yksi loppusulku liikaa\nok = sulut_tasapainossa(\"()())\")\nprint(ok)\n\n# ei kelpaa sillä alussa virheellinen loppusulku\nok = sulut_tasapainossa(\")()\")\nprint(ok)\n\n# ei kelpaa, sillä funktio ei osaa käsitellä kuin sisäkkäisiä sulkuja\nok = sulut_tasapainossa(\"()(())\")\nprint(ok)

    True\nFalse\nFalse\nFalse

    Laajenna funktiota siten, että se jättää huomiotta kaikki muut kuin sulkumerkit, ja että se osaa kaarisulkujen lisäksi myös hakasulut. Haka- ja kaarisulut eivät saa mennä ristiin!

    Seuraavassa muutama käyttöesimerkki:

    ok = sulut_tasapainossa(\"([([])])\")\nprint(ok)\n\nok = sulut_tasapainossa(\"(python versio [3.7]) käytä tätä!\")\nprint(ok)\n\n# ei kelpaa sillä virheellinen loppusulku\nok = sulut_tasapainossa(\"(()]\")\nprint(ok)\n\n\n# ei kelpaa sillä erityyppiset sulut menevät ristiin\nok = sulut_tasapainossa(\"([huono)]\")\nprint(ok)

    Huomaa, että funktion ei tarvitse osata kuin yksi sisäkkäinen sulutus - sen ei siis tarvitse ymmärtää esimerkiksi jonoa (x + 1)(y + 1).

    True\nTrue\nFalse\nFalse

    Binäärihaku

    Binäärihaussa yritetään löytää järjestyksessä olevasta listasta annettu alkio. Järjestys tarkoittaa tässä yhteydessä esimerkiksi lukujen järjestystä pienimmästä suurimpaan tai merkkijonoja aakkosjärjestyksessä.

    Binäärihaun ideana on, että tarkastellaan aina listan keskimmäistä alkiota. Jos

      \n
    • keskimmäinen alkio on etsitty alkio, palautetaan tieto siitä, että alkio löytyi
    • \n
    • keskimmäinen alkio on pienempi kuin etsittävä alkio, rajataan haku listan jälkimmäiselle puolikkaalle
    • \n
    • keskimmäinen alkio on suurempi kuin etsittävä alkio, rajataan haku listan ensimmäiselle puolikkaalle
    • \n

    Jos lista on tyhjä, palautetaan tieto siitä, että alkiota ei löytynyt.

    Seuraava kuva havainnollistaa binäärihaun etenemistä, kun etsitään listasta lukua 24:

    \n \n 0\"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kaksi ekaa lukua ovat ykkösiä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten luku saadaan laskemalla kaksi edellistä yhteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" fibonacci"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" fibonacci"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan, että toimii"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Fibonaccin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":". luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"fibonacci"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Fibonaccin 1. luku on 1\nFibonaccin 2. luku on 1\nFibonaccin 3. luku on 2\nFibonaccin 4. luku on 3\nFibonaccin 5. luku on 5\nFibonaccin 6. luku on 8\nFibonaccin 7. luku on 13\nFibonaccin 8. luku on 21\nFibonaccin 9. luku on 34\nFibonaccin 10. luku on 55"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä kertaa lopetusehtona on, että luku on pienempi tai yhtä suuri kuin 2, koska Fibonaccin kaksi ensimmäistä lukua ovat molemmat ykkösiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Miten algoritmi käytännössä oikein toimii?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvuille 1 ja 2 algoritmi palauttaa arvon 1 ehdon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n <= 2"}]},{"type":"text","value":" mukaisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvulle 3 algoritmi palauttaa arvon lausekkeesta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(n - 1) + fibonacci(n - 2)"}]},{"type":"text","value":", eli käytännössä lausekkeen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(2) + fibonacci(1)"}]},{"type":"text","value":". Koska edellisessä kohdassa huomattiin, että näiden molempien arvo on 1, palauttaa funktio siis arvon 2 (joka onkin kolmas Fibonaccin luku)"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvulle 4 algoritmi palauttaa arvon lausekkeesta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(3) + fibonacci(2)"}]},{"type":"text","value":", mikä edellisten kohtien perusteella on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 + 1"}]},{"type":"text","value":" eli 3."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvulle 5 algoritmi palauttaa arvon lausekkeesta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fibonacci(4) + fibonacci(3)"}]},{"type":"text","value":", mikä edellisten kohtien perusteella on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"3 + 2"}]},{"type":"text","value":" eli 5."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"jne."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekursiivinen algoritmimme siis toimii, koska voimme todistaa jokaisen luvun kohdalla ohjelman toimivuuden aikaisempien lukujen perusteella."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Rekursiivinen summa","tmcname":"osa11-14_rekursiivinen_summa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee rekursiivinen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa(luku: int)"}]},{"type":"text","value":" summan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1 + 2 + ... + luku"}]},{"type":"text","value":" laskemiseen. Funktion runko on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kun luku on 1, ei ole muita summattavia..."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luku\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# täydennä koodi..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"6\n15\n55"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sulut tasapainossa","tmcname":"osa11-15_sulut_tasapainossa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sulut_tasapainossa"}]},{"type":"text","value":", joka tarkastaa, onko sen parametrina olevassa merkkijonossa sulut tasapainossa, eli onko jokaista \"aukeavaa\" sulkumerkkiä ( kohti on oma \"sulkeutuva\" sulkumerkki ), ja että sulut eivät mene ristiin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sulut_tasapainossa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'('"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"')'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# poistetaan ensimmäinen ja viimeinen merkki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"(((())))\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä yksi loppusulku liikaa"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"()())\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä alussa virheellinen loppusulku"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\")()\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa, sillä funktio ei osaa käsitellä kuin sisäkkäisiä sulkuja"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"()(())\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nFalse\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna funktiota siten, että se jättää huomiotta kaikki muut kuin sulkumerkit, ja että se osaa kaarisulkujen lisäksi myös hakasulut. Haka- ja kaarisulut eivät saa mennä ristiin!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa muutama käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"([([])])\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"(python versio [3.7]) käytä tätä!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä virheellinen loppusulku"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"(()]\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ei kelpaa sillä erityyppiset sulut menevät ristiin"}]},{"type":"text","value":"\nok "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sulut_tasapainossa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"([huono)]\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktion ei tarvitse osata kuin yksi sisäkkäinen sulutus - sen ei siis tarvitse ymmärtää esimerkiksi jonoa (x + 1)(y + 1)."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nFalse\nFalse"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"binaarihaku","style":"position:relative;"},"children":[{"type":"text","value":"Binäärihaku"},{"type":"element","tagName":"a","properties":{"href":"#binaarihaku","ariaLabel":"binaarihaku permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binäärihaussa yritetään löytää järjestyksessä olevasta listasta annettu alkio. Järjestys tarkoittaa tässä yhteydessä esimerkiksi lukujen järjestystä pienimmästä suurimpaan tai merkkijonoja aakkosjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binäärihaun ideana on, että tarkastellaan aina listan keskimmäistä alkiota. Jos"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"keskimmäinen alkio on etsitty alkio, palautetaan tieto siitä, että alkio löytyi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"keskimmäinen alkio on pienempi kuin etsittävä alkio, rajataan haku listan jälkimmäiselle puolikkaalle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"keskimmäinen alkio on suurempi kuin etsittävä alkio, rajataan haku listan ensimmäiselle puolikkaalle"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lista on tyhjä, palautetaan tieto siitä, että alkiota ei löytynyt."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava kuva havainnollistaa binäärihaun etenemistä, kun etsitään listasta lukua 24:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 777px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/ca600c1fe96166b67e6fe37b5f5dcc89/108f8/11_3_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.47826086956522%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABXklEQVQoz5WQ3UvCUBiH989FdN9dRBAUEhFd1G13EXQREQTdCAYl5AojMQrLKfRBNmSVusCczjn3gbYv5xlzO2/pBgVB4I/Dj/fmOec5LwHjRFGURqMhiiLP86ZpEhgAYwh7FB/7fjj8HDyCHcexLMu2bU3TEELEdCy1dHq7mMgskNeRk+xsKjHxuDGfPlsm86vn1EqSWrvIR8ib/IcAAJ1uV9d1wzACEYIR1bLcYSWNbeuV9iejtp8MlpZaBV6hBZkWlGJLfW7KimUDQK/Xs20bIRTCOzn64K60+ZRZf4/uFu6jD5U96pXrmADgh7LDBOLaKKZphnC8yCaZeqxE79fTx28vJFM9pMu8NhQb+P7vbwOAYRi6rluWFcKu5/Wh72DXcwHwWLsHYubocjK3NZXdnotfUdUmALie//eSQFsQBI7jarVaYE7Ipi0hTUK6avWRO/j/Kc/zMMZBf8Nfq6LsorLTvyMAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/ca600c1fe96166b67e6fe37b5f5dcc89/a0b58/11_3_1.webp 230w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/bc10c/11_3_1.webp 460w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/2e4ba/11_3_1.webp 777w"],"sizes":"(max-width: 777px) 100vw, 777px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/ca600c1fe96166b67e6fe37b5f5dcc89/81c8e/11_3_1.png 230w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/08a84/11_3_1.png 460w","/static/ca600c1fe96166b67e6fe37b5f5dcc89/108f8/11_3_1.png 777w"],"sizes":"(max-width: 777px) 100vw, 777px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/ca600c1fe96166b67e6fe37b5f5dcc89/108f8/11_3_1.png","alt":"11 3 1","title":"11 3 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekursiivinen algoritmi binäärihaulle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"binaarihaku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Funktio palauttaa True tai False sen mukaan, onko listalla alkiota \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos hakualue on tyhjä, ei löydy"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vasen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lasketaan hakualueen keskikohta"}]},{"type":"text","value":"\n keski "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vasen"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos keskellä on etsittävä alkio"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keski"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos pienempi, etsi jälkipuoliskolta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keski"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keski"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten täytyy olla suurempi, etsitään alkupuoliskolta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keski"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"18"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"binaarihaku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nFalse\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä funktiolle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"binaarihaku"}]},{"type":"text","value":" annetaan neljä parametria: viite listaan, etsittävä alkio sekä hakualueen vasen ja oikea kohta. Alussa hakualue on koko lista, jolloin vasen kohta on 0 ja oikea kohta on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(lista)-1"}]},{"type":"text","value":". Funktio tarkastaa hakualueen keskellä olevan alkion ja joko ilmoittaa, että haluttu alkio löytyi, tai jatkaa hakua vasemmasta tai oikeasta puoliskosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos verrataan binäärihakua "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"peräkkäishakuun"}]},{"type":"text","value":", algoritmien tehokkuus erottuu selvästi. Peräkkäishaussa alkiota lähdetään etsimään listan alusta ja listaa käydään läpi yksi alkio kerrallaan, kunnes alkio on löytynyt tai on päästy listan loppuun. Jos listan pituus on miljoona alkiota, tarvitaan perättäishaussa koko listan läpikäyntiin miljoona askelta, mutta binäärihaussa askelia tarvitaan vain 20."}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan rekursiolla
    • \n
    • Osaat kirjoittaa itse yksinkertaisen rekursiivisen funktion
    • \n

    Kuten aiemmin on huomattu, funktiot voivat kutsua toisia funktioita. Esimerkiksi näin:

    def tervehdi(nimi : str):\n    print(\"Moikka,\", nimi)\n\ndef tervehdi_monesti(nimi : str, kerrat : int):\n    for i in range(kerrat):\n        tervehdi(nimi)

    Samaan tapaan funktio voi kutsua myös itseään. Jos kuitenkaan funktion parametrit eivät muutu kutsukertojen välissä, tästä syntyy \"ikuinen silmukka\":

    def tervehdi(nimi : str):\n    print(\"Moikka,\", nimi)\n    tervehdi(nimi)

    Tällöin funktion kutsuminen millä tahansa merkkijonolla antaa virheilmoituksen:

    RecursionError: maximum recursion depth exceeded

    Mitä rekursio tarkoittaa?

    Virheilmoituksessakin mainitulla rekursiolla tarkoitetaan sitä, että funktio kutsuu itseään. Rekursiossa funktion parametrien pitää kuitenkin muuttua niin, että jossain vaiheessa kutsuminen lopetetaan. Perusperiaate on sama kuin silmukoissa: jotta silmukka ei jatkuisi ikuisesti, siinä tulee olla päättymisehto, joka toteutuu jossain vaiheessa.

    Tarkastellaan aluksi yksinkertaista funktiota, joka lisää listan loppuun 0-alkioita niin kauan kuin listan pituus on alle 10. Silmukan sijasta funktio kutsuukin itseään uudestaan, jos ehto ei täyty:

    def tayta_lista(luvut: list):\n    \"\"\" Lisää listaan alkoita jos sen pituus on alle 10 \"\"\"\n    if len(luvut) < 10:\n        luvut.append(0)\n        # Kutsutaan uudestaaan\n        tayta_lista(luvut)\n\n\nif __name__ == \"__main__\":\n    testi = [1,2,3,4]\n    tayta_lista(testi)\n    print(testi)

    [1, 2, 3, 4, 0, 0, 0, 0, 0, 0]

    Perinteisellä silmukalla ohjelma näyttäisi esimerkiksi tältä:

    \ndef tayta_lista(luvut: list):\n    \"\"\" Lisää listaan alkoita jos sen pituus on alle 10 \"\"\"\n    while len(luvut) < 10:\n        luvut.append(0)\n\nif __name__ == \"__main__\":\n    testi = [1,2,3,4]\n    tayta_lista(testi)\n    print(testi)\n

    Esimerkeistä huomataan, että perinteinen (eli iteratiivinen) lähestymistapa tuottaa lyhyemmän ja selkeämmän ohjelman. Rekursiivinen ohjelma kuitenkin toimii ja tuottaa oikean lopputuloksen, koska funktio käsittelee jokaisella kutsukerralla samaa listaa viittauksen kautta.

    Tietojenkäsittelytieteteessä erotetaan usein iteratiiviset ja rekursiiviset algoritmit. Iteratiivinen tarkoittaa kurssilla tähän asti yleensä käyttämäämme tapaa, jossa ratkaisu perustuu peräkkäisyyteen – yleensä siihen, että käsitellään rakenne silmukassa. Rekursiivinen tarkoittaa vaihtoehtoista tapaa, jossa funktio silmukan sijasta (tai lisäksi) kutsuu itseään muuttuvilla parametrien arvoilla.

    Mikä tahansa algoritmi on periaatteessa mahdollista toteuttaa sekä iteratiivisesti että rekursiivisesti, mutta monessa tapauksessa jompikumpi tapa soveltuu selkeästi paremmin ongelman ratkaisemiseen.

    Kirjoita rekursiivinen funktio listaan_lukuja(luvut: list), joka lisää listaan lukuja niin kauan, kunnes listan pituus on viidellä jaollinen. Jokainen listaan lisättävä luku on aina yhden suurempi kuin listan viimeinen luku.

    Funktion pitää kutsua itseään rekursiivisesti.

    Esimerkki funktion kutsusta:

    luvut = [1,3,4,5,10,11]\nlistaan_lukuja(luvut)\nprint(luvut)

    [1, 3, 4, 5, 10, 11, 12, 13, 14, 15]

    Rekursio ja paluuarvot

    Rekursiivisella funktiolla voi olla myös palautusarvo. Tarkastellaan tätä tarkoitusta varten esimerkkiä, joka laskee kertoman rekursiivisesti:

    \ndef kertoma(n: int):\n    \"\"\" Funktio laskee positiivisen luvun n kertoman n!, eli n * (n-1) ... * 2 * 1 \"\"\"\n    if n < 2:\n        # Lukujen 0 ja 1 kertoma on 1\n        return 1\n\n    # Kutsuu funktiota uudestaan\n    return n * kertoma(n - 1)\n\nif __name__ == \"__main__\":\n    # Testataan\n    for i in range(1, 7):\n        print(f\"Luvun {i} kertoma on {kertoma(i)}\")\n

    Luvun 1 kertoma on 1\nLuvun 2 kertoma on 2\nLuvun 3 kertoma on 6\nLuvun 4 kertoma on 24\nLuvun 5 kertoma on 120\nLuvun 6 kertoma on 720

    Jos funktion parametrin arvo on 0 tai 1, funktio palauttaa 1 (koska kertoman määritelmän mukaan lukujen 0 ja 1 kertoma on 1). Muuten funktio palauttaa lausekkeen n * kertoma(n - 1). Tämä tarkoittaa, että parametri n kerrotaan funktion itsensä kutsun palauttamalla arvolla.

    Olennaista funktion toimivuuden kannalta on, että funktiossa on määritelty ehto, jolla se ei kutsu itseään enää uudestaan. Tässä tapauksessa ehto on n < 2.

    Visualisaattori on oivallinen väline rekursiota käyttävien ohjelmien tutkimiseksi.

    Laajennetaan kertoman laskevaa funktiota niin, että se käyttää apumuuttujia:

    def kertoma(n: int):\n    if n < 2:\n        return 1\n\n    edellisen_luvun_kertoma = kertoma(n - 1)\n    luvun_n_kertoma = n * edellisen_luvun_kertoma\n    return luvun_n_kertoma\n    \nkertoma(5)

    Kokeile, miten visualisaattori demonstroi rekursion etenemisen.

    Hieman normaalista poiketen visualisaattorissa kutsupino \"kasvaa\" alaspäin. Suorituksessa oleva funktiokutsu on kutsupinon alimpana oleva sinisellä merkitty \"lohko\", jolla on omat muuttujansa. Hetken kuluttua palautettava tulos on laskettu muuttujaan luvun_n_kertoma.

    \n \n \n \n \n \n \"11\n \n \n

    Tarkastellaan vielä toista funktiota, joka laskee halutun Fibonaccin luvun rekursiivisesti. Fibonaccin lukujonossa luku on aina kahden edellisen luvun summa. Niinpä jonon alku näyttää tältä: 1, 1, 2, 3, 5, 8, 13, 21, 34.

    def fibonacci(n: int):\n    \"\"\" Funktio palauttaa n:nen luvun Fibonaccin sarjasta (1, 1, 2, 3, 5, 8 jne.); n > 0\"\"\"\n\n    if n <= 2:\n        # Kaksi ekaa lukua ovat ykkösiä\n        return 1\n\n    # Muuten luku saadaan laskemalla kaksi edellistä yhteen\n    return fibonacci(n - 1) + fibonacci(n - 2)\n\n# Testataan, että toimii\nif __name__ == \"__main__\":\n    for i in range(1, 11):\n        print(f\"Fibonaccin {i}. luku on {fibonacci(i)}\")

    Fibonaccin 1. luku on 1\nFibonaccin 2. luku on 1\nFibonaccin 3. luku on 2\nFibonaccin 4. luku on 3\nFibonaccin 5. luku on 5\nFibonaccin 6. luku on 8\nFibonaccin 7. luku on 13\nFibonaccin 8. luku on 21\nFibonaccin 9. luku on 34\nFibonaccin 10. luku on 55

    Tällä kertaa lopetusehtona on, että luku on pienempi tai yhtä suuri kuin 2, koska Fibonaccin kaksi ensimmäistä lukua ovat molemmat ykkösiä.

    Miten algoritmi käytännössä oikein toimii?

    Luvuille 1 ja 2 algoritmi palauttaa arvon 1 ehdon n <= 2 mukaisesti.

    Luvulle 3 algoritmi palauttaa arvon lausekkeesta fibonacci(n - 1) + fibonacci(n - 2), eli käytännössä lausekkeen fibonacci(2) + fibonacci(1). Koska edellisessä kohdassa huomattiin, että näiden molempien arvo on 1, palauttaa funktio siis arvon 2 (joka onkin kolmas Fibonaccin luku)

    Luvulle 4 algoritmi palauttaa arvon lausekkeesta fibonacci(3) + fibonacci(2), mikä edellisten kohtien perusteella on siis 2 + 1 eli 3.

    Luvulle 5 algoritmi palauttaa arvon lausekkeesta fibonacci(4) + fibonacci(3), mikä edellisten kohtien perusteella on siis 3 + 2 eli 5.

    jne.

    Rekursiivinen algoritmimme siis toimii, koska voimme todistaa jokaisen luvun kohdalla ohjelman toimivuuden aikaisempien lukujen perusteella.

    Tee rekursiivinen funktio summa(luku: int) summan 1 + 2 + ... + luku laskemiseen. Funktion runko on seuraava:

    def summa(luku: int):\n    # kun luku on 1, ei ole muita summattavia...\n    if luku <= 1:\n        return luku\n\n    # täydennä koodi...

    Muutama käyttöesimerkki:

    tulos = summa(3)\nprint(tulos)\n\nprint(summa(5))\nprint(summa(10))

    6\n15\n55

    Tehtäväpohjassa on valmiina funktio sulut_tasapainossa, joka tarkastaa, onko sen parametrina olevassa merkkijonossa sulut tasapainossa, eli onko jokaista \"aukeavaa\" sulkumerkkiä ( kohti on oma \"sulkeutuva\" sulkumerkki ), ja että sulut eivät mene ristiin.

    def sulut_tasapainossa(merkkijono: str):\n    if len(merkkijono) == 0:\n        return True\n    if not (merkkijono[0] == '(' and merkkijono[-1] == ')'):\n        return False\n\n    # poistetaan ensimmäinen ja viimeinen merkki\n    return sulut_tasapainossa(merkkijono[1:-1])\n\nok = sulut_tasapainossa(\"(((())))\")\nprint(ok)\n\n# ei kelpaa sillä yksi loppusulku liikaa\nok = sulut_tasapainossa(\"()())\")\nprint(ok)\n\n# ei kelpaa sillä alussa virheellinen loppusulku\nok = sulut_tasapainossa(\")()\")\nprint(ok)\n\n# ei kelpaa, sillä funktio ei osaa käsitellä kuin sisäkkäisiä sulkuja\nok = sulut_tasapainossa(\"()(())\")\nprint(ok)

    True\nFalse\nFalse\nFalse

    Laajenna funktiota siten, että se jättää huomiotta kaikki muut kuin sulkumerkit, ja että se osaa kaarisulkujen lisäksi myös hakasulut. Haka- ja kaarisulut eivät saa mennä ristiin!

    Seuraavassa muutama käyttöesimerkki:

    ok = sulut_tasapainossa(\"([([])])\")\nprint(ok)\n\nok = sulut_tasapainossa(\"(python versio [3.7]) käytä tätä!\")\nprint(ok)\n\n# ei kelpaa sillä virheellinen loppusulku\nok = sulut_tasapainossa(\"(()]\")\nprint(ok)\n\n\n# ei kelpaa sillä erityyppiset sulut menevät ristiin\nok = sulut_tasapainossa(\"([huono)]\")\nprint(ok)

    Huomaa, että funktion ei tarvitse osata kuin yksi sisäkkäinen sulutus - sen ei siis tarvitse ymmärtää esimerkiksi jonoa (x + 1)(y + 1).

    True\nTrue\nFalse\nFalse

    Binäärihaku

    Binäärihaussa yritetään löytää järjestyksessä olevasta listasta annettu alkio. Järjestys tarkoittaa tässä yhteydessä esimerkiksi lukujen järjestystä pienimmästä suurimpaan tai merkkijonoja aakkosjärjestyksessä.

    Binäärihaun ideana on, että tarkastellaan aina listan keskimmäistä alkiota. Jos

      \n
    • keskimmäinen alkio on etsitty alkio, palautetaan tieto siitä, että alkio löytyi
    • \n
    • keskimmäinen alkio on pienempi kuin etsittävä alkio, rajataan haku listan jälkimmäiselle puolikkaalle
    • \n
    • keskimmäinen alkio on suurempi kuin etsittävä alkio, rajataan haku listan ensimmäiselle puolikkaalle
    • \n

    Jos lista on tyhjä, palautetaan tieto siitä, että alkiota ei löytynyt.

    Seuraava kuva havainnollistaa binäärihaun etenemistä, kun etsitään listasta lukua 24:

    \n \n "}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" etsi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" etsi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pomot ja alaiset","tmcname":"osa11-17_pomot_ja_alaiset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tyontekija"}]},{"type":"text","value":" mallintaa yrityksen työntekijää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tyontekija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alaiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_alainen"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Tyontekija'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laske_alaiset(tyontekija: Tyontekija)"}]},{"type":"text","value":", joka laskee rekursiivisesti annetun työntekijän alaisten määrän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n t1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sasu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t6 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kjell\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t6"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3\n0"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"paluu-aikaan-ennen-rekursiota","style":"position:relative;"},"children":[{"type":"text","value":"Paluu aikaan ennen rekursiota"},{"type":"element","tagName":"a","properties":{"href":"#paluu-aikaan-ennen-rekursiota","ariaLabel":"paluu aikaan ennen rekursiota permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tässä tehtäväsarjassa ei rekursiota tarvitse eikä edes kannata käyttää. Listakoosteita sen sijaan pääsee hyödyntämään!"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tilauskirja","tmcname":"osa11-18_tilauskirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teemme tässä tehtävässä kaksi luokkaa, joitka toimivat rakennuspalikoina seuraavassa tehtävässä aiheena olevassa sovelluksessa."}]},{"type":"element","tagName":"h2","properties":{"id":"tehtava","style":"position:relative;"},"children":[{"type":"text","value":"Tehtava"},{"type":"element","tagName":"a","properties":{"href":"#tehtava","ariaLabel":"tehtava permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtava"}]},{"type":"text","value":", joka mallintaa ohjelmistoyritykselle annettavia työtehtäviä. Tehtävillä on"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kuvaus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvio sen viemästä työmäärästä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tieto koodarista, joka toteuttaa tehtävän"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tieto siitä, onko tehtävä valmis vai ei"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"yksikäsitteinen tunniste eli id"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"t1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa hello world\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tyomaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_valmis"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_valmis"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 koodaa hello world Erkki 3\n1: koodaa hello world (3 tuntia), koodari Erkki EI VALMIS\nFalse\n1: koodaa hello world (3 tuntia), koodari Erkki VALMIS\nTrue\n2: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n3: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täsmennyksiä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävän tilan (valmis vai ei vielä valmis) voi tarkistaa metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"on_valmis(self)"}]},{"type":"text","value":" joka palauttaa totuusarvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävä ei ole siinä vaiheessa valmis kun se luodaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävä merkataan valmiiksi kutsumalla metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkaa_valmiiksi(self)"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävien id on juokseva numero, joka alkaa arvosta 1 (ensimmäisenä luotava tehtävä saa id:n 1, seuraava id:n 2 jne.)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":": id kannattaa toteuttaa "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/5-staattiset-piirteet#luokkamuuttujat"},"children":[{"type":"text","value":"luokkamuuttujana"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"tilauskirja","style":"position:relative;"},"children":[{"type":"text","value":"Tilauskirja"},{"type":"element","tagName":"a","properties":{"href":"#tilauskirja","ariaLabel":"tilauskirja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":", joka kokoaa kaikki ohjelmistoyritykseltä tilatut työtehtävät, joita siis mallinnetaan luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtava"}]},{"type":"text","value":" olioilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tilauskirjan perusversiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tilauskirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee ohjelma matematiikan harjoitteluun\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tilaus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kaikki_tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koodari "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Antti\nErkki"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä vaiheessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":" tarjoaa kolme metodia:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_tilaus(self, kuvaus, koodari, tyomaara)"}]},{"type":"text","value":" lisää uuden tilauksen tilauskirjaan. Tilauskirja tallettaa tilaukset sisäisesti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtava"}]},{"type":"text","value":"-olioina. Huomaa, että metodilla täytyy olla juuri nämä parametrit, muuten testit eivät hyväksy metodia!"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki_tilaukset(self)"}]},{"type":"text","value":" palauttaa listana kaikki tilauskirjalla olevat tehtävät"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"koodarit(self)"}]},{"type":"text","value":" palauttaa listana kaikki koodarit, joille on tehtävä tilauskirjassa, metodin palauttama lista ei saa sisältää yhtä koodia useampaan kertaan"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" Listalta on helppo poistaa duplikaatit siten että muutetaan ensin lista "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3.8/library/stdtypes.html#set","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"set"}]},{"type":"text","value":"-tyyppiseksi. Set siis tarkoittaa joukkoa, ja joukossa kutakin alkiota voi olla vain yksi kappale. Tämän jälkeen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"set"}]},{"type":"text","value":" voidaan muuttaa takaisin listaksi, ja duplikaatit ovat kadonneet:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"set"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 1, 3, 6, 4, 1, 3]\n[1, 3, 4, 6]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"tilauskirjan-viimeistely","style":"position:relative;"},"children":[{"type":"text","value":"Tilauskirjan viimeistely"},{"type":"element","tagName":"a","properties":{"href":"#tilauskirjan-viimeistely","ariaLabel":"tilauskirjan viimeistely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":" vielä kolme uutta metodia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkaa_valmiiksi(self, id: int)"}]},{"type":"text","value":" saa parametriksi tehtävän id:n ja merkkaa kyseisen tehtävän valmiiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tilauskirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee ohjelma matematiikan harjoitteluun\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tilaus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kaikki_tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1: koodaa webbikauppa (10 tuntia), koodari Antti VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos parametria vastaavaa tilausta ei löydy, tuottaa metodi poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":". Kertaa tarvittaessa "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"täältä"}]},{"type":"text","value":", miten poikkeus tuotetaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"valmiit_tilaukset(self)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ei_valmiit_tilaukset(self)"}]},{"type":"text","value":" toimivat kuten olettaa saattaa, ne palauttavat nimensä mukaisen osajoukon tilauskirjan tehtävistä listana."}]},{"type":"element","tagName":"h2","properties":{"id":"tilauskirjan-loppusilaus","style":"position:relative;"},"children":[{"type":"text","value":"Tilauskirjan loppusilaus"},{"type":"element","tagName":"a","properties":{"href":"#tilauskirjan-loppusilaus","ariaLabel":"tilauskirjan loppusilaus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":" vielä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"koodarin_status(self, koodari: str)"}]},{"type":"text","value":", joka palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tuplen"}]},{"type":"text","value":", joka kertoo koodarin valmistuneiden ja vielä valmistumattomien töiden määrän sekä näihin kuluneiden työtuntien summan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tilauskirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee ohjelma matematiikan harjoitteluun\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee uusi facebook\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nstatus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodarin_status"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"status"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(2, 1, 35, 100)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen ensimmäinen alkio siis kertoo valmiiden töiden määrän ja toinen valmistumattomien töiden määrän. Kolmas alkio on valmiiden töiden työaika-arvioiden summa ja neljäs alkio vielä valmistumattomien töiden työmääräarvioiden summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos parametria vastaavaa koodaria ei löydy, tuottaa metodi poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tilauskirjasovellus","tmcname":"osa11-19_tilauskirjasovellus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään interaktiivinen sovellus softafirmalta tilattujen tehtävien hallintaan. Tyyli on täysin vapaa, mutta voit hyödyntää sovelluksessa edellisen tehtävän aikana koodattuja rakennuspalikoita. Myös "},{"type":"element","tagName":"a","properties":{"href":"/osa-10/4-lisaa-esimerkkeja"},"children":[{"type":"text","value":"edellisen osan viimeisen luvun"}]},{"type":"text","value":" materiaalin kertaaminen saattaa olla hyödyksi."}]},{"type":"element","tagName":"h2","properties":{"id":"ei-virheiden-kasittelya","style":"position:relative;"},"children":[{"type":"text","value":"Ei virheiden käsittelyä"},{"type":"element","tagName":"a","properties":{"href":"#ei-virheiden-kasittelya","ariaLabel":"ei virheiden kasittelya permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovelluksen tulee toimia "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"täsmälleen"}]},{"type":"text","value":" seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 lisää tilaus\n2 listaa valmiit\n3 listaa ei valmiit\n4 merkitse tehtävä valmiiksi\n5 koodarit\n6 koodarin status"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koodaa uusi facebook"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"joona 1000"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tee sovellus ajanhallintaan"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erkki 25"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ohjelma musiikin teorian harjoitteluun"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"niina 12"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koodaa uusi twitter"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"joona 55"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nei valmiita"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona EI VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nmerkitty valmiiksi"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nmerkitty valmiiksi"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\njoona\nerkki\nniina"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkoodari: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"joona"}]},{"type":"text","value":"\ntyöt: valmiina 2 ei valmiina 1, tunteja: tehty 55 tekemättä 1000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäiseen tehtäväpisteeseen riittää, että sovellus toimii jos kaikki syötteet ovat virheettömiä."}]},{"type":"element","tagName":"h2","properties":{"id":"virheiden-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Virheiden käsittely"},{"type":"element","tagName":"a","properties":{"href":"#virheiden-kasittely","ariaLabel":"virheiden kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiseen tehtäväpisteeseen edellytetään, että sovellus toipuu käyttäjän syötteessä olevista virheistä. Virheiden käsittelyn tulee toimia siten, että missä tahansa syötteessa annettu virheellinen syöte aiheuttaa virheilmoituksen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"virheellinen syöte"}]},{"type":"text","value":", ja johtaa siihen, että komentoa pyydetään uudelleen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tee sovellus ajanhallintaan"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erkki xxx"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tee sovellus ajanhallintaan"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erkki"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1000000"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"XXXX"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkoodari: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tuntematonkoodari"}]},{"type":"text","value":"\nvirheellinen syöte"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542"},"children":[]}]}]},"html":"

    Tässä osiossa

      \n
    • Käydään läpi muutamia binääripuuhun liittyviä rekursiivisia esimerkkialgoritmeja
    • \n

    Rekursion todellinen hyöty tulee esiin tilanteissa, joissa iteratiivinen ratkaisu on hankala kirjoittaa. Tarkastellaan esimerkkinä binääripuuta. Binääripuulla tarkoitetaan puurakennetta, jossa jokaisella alkiolla on korkeintaan kaksi \"lasta\". Binääripuu voisi siis näyttää esim. tältä (huomaa, että vaikka tietojenkäsittelijöitä pidetään joissain yhteyksissä luonnontieteilijöinä, käsityksemme puiden kasvusuunnasta on nurinkurinen):

    \n
    \n \n \n \n \n \"11\n \n \n

    Binääripuiden (ja puiden yleensäkin) käsittely rekursiivisesti on ainakin teoriassa helppoa: jos halutaan tehdä jokin operaatio binääripuun kaikille alkioille - esim. etsiä jokin tietty alkio puusta, voidaan kirjoittaa rekursiivinen algoritmi, joka

      \n
    1. Käsittelee nykyisen alkion
    2. \n
    3. Kutsuu itseään vasemmasta lapsesta alkavalle \"alipuulle\"
    4. \n
    5. Kutsuu itseään oikeasta lapsesta alkavalle \"alipuulle\"
    6. \n
    \n \n \n \n \n \n \"11\n \n \n

    Kun koko rekursiivinen algoritmi on käsitelty, on vierailtu kerran puun jokaisessa solussa. Iteratiivinen versio algoritmista on yleensä hankalampi kirjoittaa, koska kirjanpito vieralluista alkioista menee äkkiä monimutkaiseksi.

    Binääripuuta voidaan mallintaa helposti kirjoittamalla luokka, joka mallintaa yhtä alkiota puussa. Alkiolla on arvon lisäksi tieto vasemmasta ja oikeasta lapsestaan:

    \nclass Alkio:\n    \"\"\" Luokka mallintaa yhtä alkiota binääripuussa \"\"\"\n    def __init__(self, arvo, vasen_lapsi:'Alkio' = None, oikea_lapsi:'Alkio' = None):\n        self.arvo = arvo\n        self.vasen_lapsi = vasen_lapsi\n        self.oikea_lapsi = oikea_lapsi

    Nyt jos halutaan mallintaa esimerkiksi oheisen kaltainen puu:

    \n \n \n \n \n \n \"11\n \n \n

    ...se voidaan muodostaa seuraavalla ohjelmalla:

    if __name__ == \"__main__\":\n    puu = Alkio(2)\n\n    puu.vasen_lapsi = Alkio(3)\n    puu.vasen_lapsi.vasen_lapsi = Alkio(5)\n    puu.vasen_lapsi.oikea_lapsi = Alkio(8)\n\n    puu.oikea_lapsi = Alkio(4)\n    puu.oikea_lapsi.oikea_lapsi = Alkio(11)\n

    Rekursiiviset binääripuualgoritmit

    Tarkastellaan ensin algoritmia, joka tulostaa kaikki binääripuun alkiot allekkain. Käytetään esimerkkinä tässä ja tulevissa tehtävissä yllä muodostettua puuta.

    Funktio saa parametrikseen juurialkion (eli kaikkein ylimmäisenä olevan alkion, jonka jälkeläisiä kaikki muut alkiot ovat):

    \ndef tulosta_alkiot(juuri: Alkio):\n    print(juuri.arvo)\n\n    if juuri.vasen_lapsi is not None:\n        tulosta_alkiot(juuri.vasen_lapsi)\n\n    if juuri.oikea_lapsi is not None:\n        tulosta_alkiot(juuri.oikea_lapsi)\n

    Funktio tulostaa annetun alkion arvon, ja sen jälkeen kutsuu itseään uudestaan vasemmalle ja oikealla alipuulle (edellyttäen, että vasen ja/tai oikea alkio on määritelty). Algoritmi on melko yksinkertainen, mutta käy tehokkaasti läpi kaikki puun alkiot riippumatta puun koosta. Algoritmi ei myöskään vieraile missään puun alkiossa kahta kertaa.

    Kun funktiolle annetaan parametriksi aikaisemmin luodun binääripuun juurialkio puu, se tulostaa

    2\n3\n5\n8\n4\n11

    Vastaavalla tavalla voidaan kirjoittaa algoritmi, joka laskee kaikkien puun alkioiden summan:

    \ndef alkioiden_summa(juuri: Alkio):\n    summa = juuri.arvo\n\n    if juuri.vasen_lapsi is not None:\n        summa += alkioiden_summa(juuri.vasen_lapsi)\n\n    if juuri.oikea_lapsi is not None:\n        summa += alkioiden_summa(juuri.oikea_lapsi)\n\n    return summa\n

    Muuttuja summa alustetaan nykyisen alkion arvolla. Tämän jälkeen siihen lisätään rekursiivisesti vasemman ja oikean alipuun summat (tarkastaen taas ensin, että ne ovat olemassa). Lopuksi summa palautetaan.

    Kirjoita funktio suurin_alkio(juuri: Alkio), joka saa parametrikseen binääripuun juurialkion.

    Funktion palauttaa puun suurimman alkion. Puun arvot tulee käydä läpi rekursiivisesti.

    Vinkki: voit hyödyntää ratkaisussasi ylempänä esitettyä alkoiden_summa -funktiota.

    Esimerkki funktion kutsumisesta:

    \nif __name__ == \"__main__\":\n    puu = Alkio(2)\n\n    puu.vasen_lapsi = Alkio(3)\n    puu.vasen_lapsi.vasen_lapsi = Alkio(5)\n    puu.vasen_lapsi.oikea_lapsi = Alkio(8)\n\n    puu.oikea_lapsi = Alkio(4)\n    puu.oikea_lapsi.oikea_lapsi = Alkio(11)\n\n    print(suurin_alkio(puu))\n

    11

    Järjestetty binääripuu

    Binääripuusta on erityisesti hyötyä silloin, kun alkiot on järjestetty tietyllä tavalla. Alkion löytäminen järjestetystä puusta on nopeaa.

    Tarkastellaan esimerkkinä puuta, jossa alkiot on järjestetty seuraavasti: jokaisen alkion vasen lapsi on pienempi kuin alkio itse, ja vastaavasti oikea alkio on suurempi kuin alkio itse.

    \n \n \n \n \n \n \"11\n \n \n

    Nyt alkion etsimiseen voidaan kirjoittaa rekursiivinen algoritmi, joka toimii hyvin samankaltaisesti kuin aiemmin tarkastelemamme binäärihaku: jos juurialkio on tarkasteltava alkio, palautetaan arvo True. Muuten jatketaan rekursiivisesti hakua joko vasemmasta tai oikeasta alipuusta. Jos alkio on tyhjä, palautetaan False.

    \ndef etsi_alkio(juuri: Alkio, arvo):\n    if juuri is None:\n        return False\n\n    if arvo == juuri.arvo:\n        return True\n\n    if arvo > juuri.arvo:\n        return etsi_alkio(juuri.oikea_lapsi, arvo)\n\n    return etsi_alkio(juuri.vasen_lapsi, arvo)\n

    Luokka Tyontekija mallintaa yrityksen työntekijää:

    class Tyontekija:\n    def __init__(self, nimi: str):\n        self.nimi = nimi\n        self.alaiset = []\n\n    def lisaa_alainen(self, tyontekija: 'Tyontekija'):\n        self.alaiset.append(tyontekija)

    Tee funktio laske_alaiset(tyontekija: Tyontekija), joka laskee rekursiivisesti annetun työntekijän alaisten määrän.

    Esimerkki funktion käyttämisestä:

    if __name__ == \"__main__\":\n    t1 = Tyontekija(\"Sasu\")\n    t2 = Tyontekija(\"Erkki\")\n    t3 = Tyontekija(\"Matti\")\n    t4 = Tyontekija(\"Emilia\")\n    t5 = Tyontekija(\"Antti\")\n    t6 = Tyontekija(\"Kjell\")\n    t1.lisaa_alainen(t4)\n    t1.lisaa_alainen(t6)\n    t4.lisaa_alainen(t2)\n    t4.lisaa_alainen(t3)\n    t4.lisaa_alainen(t5)\n    print(laske_alaiset(t1))\n    print(laske_alaiset(t4))\n    print(laske_alaiset(t5))

    5\n3\n0

    Paluu aikaan ennen rekursiota

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tässä tehtäväsarjassa ei rekursiota tarvitse eikä edes kannata käyttää. Listakoosteita sen sijaan pääsee hyödyntämään!

    Teemme tässä tehtävässä kaksi luokkaa, joitka toimivat rakennuspalikoina seuraavassa tehtävässä aiheena olevassa sovelluksessa.

    Tehtava

    Toteuta luokka Tehtava, joka mallintaa ohjelmistoyritykselle annettavia työtehtäviä. Tehtävillä on

      \n
    • kuvaus
    • \n
    • arvio sen viemästä työmäärästä
    • \n
    • tieto koodarista, joka toteuttaa tehtävän
    • \n
    • tieto siitä, onko tehtävä valmis vai ei
    • \n
    • yksikäsitteinen tunniste eli id
    • \n

    Luokka toimii seuraavasti:

    t1 = Tehtava(\"koodaa hello world\", \"Erkki\", 3)\nprint(t1.id, t1.kuvaus, t1.koodari, t1.tyomaara)\nprint(t1)\nprint(t1.on_valmis())\nt1.merkkaa_valmiiksi()\nprint(t1)\nprint(t1.on_valmis())\nt2 = Tehtava(\"koodaa webbikauppa\", \"Antti\", 10)\nt3 = Tehtava(\"tee mobiilisovellus työaikakirjanpitoon\", \"Erkki\", 25)\nprint(t2)\nprint(t3)

    1 koodaa hello world Erkki 3\n1: koodaa hello world (3 tuntia), koodari Erkki EI VALMIS\nFalse\n1: koodaa hello world (3 tuntia), koodari Erkki VALMIS\nTrue\n2: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n3: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS

    Täsmennyksiä:

      \n
    • tehtävän tilan (valmis vai ei vielä valmis) voi tarkistaa metodilla on_valmis(self) joka palauttaa totuusarvon
    • \n
    • tehtävä ei ole siinä vaiheessa valmis kun se luodaan
    • \n
    • tehtävä merkataan valmiiksi kutsumalla metodia merkkaa_valmiiksi(self)
    • \n
    • tehtävien id on juokseva numero, joka alkaa arvosta 1 (ensimmäisenä luotava tehtävä saa id:n 1, seuraava id:n 2 jne.)
    • \n

    Vihje: id kannattaa toteuttaa luokkamuuttujana.

    Tilauskirja

    Tehdään nyt luokka Tilauskirja, joka kokoaa kaikki ohjelmistoyritykseltä tilatut työtehtävät, joita siis mallinnetaan luokan Tehtava olioilla.

    Tilauskirjan perusversiota käytetään seuraavasti:

    tilaukset = Tilauskirja()\ntilaukset.lisaa_tilaus(\"koodaa webbikauppa\", \"Antti\", 10)\ntilaukset.lisaa_tilaus(\"tee mobiilisovellus työaikakirjanpitoon\", \"Erkki\", 25)\ntilaukset.lisaa_tilaus(\"tee ohjelma matematiikan harjoitteluun\", \"Antti\", 100)\n\nfor tilaus in tilaukset.kaikki_tilaukset():\n    print(tilaus)\n\nprint()\n\nfor koodari in tilaukset.koodarit():\n    print(koodari)

    1: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS

    Antti\nErkki

    Tässä vaiheessa Tilauskirja tarjoaa kolme metodia:

      \n
    • lisaa_tilaus(self, kuvaus, koodari, tyomaara) lisää uuden tilauksen tilauskirjaan. Tilauskirja tallettaa tilaukset sisäisesti Tehtava-olioina. Huomaa, että metodilla täytyy olla juuri nämä parametrit, muuten testit eivät hyväksy metodia!
    • \n
    • kaikki_tilaukset(self) palauttaa listana kaikki tilauskirjalla olevat tehtävät
    • \n
    • koodarit(self) palauttaa listana kaikki koodarit, joille on tehtävä tilauskirjassa, metodin palauttama lista ei saa sisältää yhtä koodia useampaan kertaan
    • \n

    Vihje Listalta on helppo poistaa duplikaatit siten että muutetaan ensin lista set-tyyppiseksi. Set siis tarkoittaa joukkoa, ja joukossa kutakin alkiota voi olla vain yksi kappale. Tämän jälkeen set voidaan muuttaa takaisin listaksi, ja duplikaatit ovat kadonneet:

    lista = [1,1,3,6,4,1,3]\nlista2 = list(set(lista))\nprint(lista)\nprint(lista2)

    [1, 1, 3, 6, 4, 1, 3]\n[1, 3, 4, 6]

    Tilauskirjan viimeistely

    Tehdään luokalle Tilauskirja vielä kolme uutta metodia.

    Metodi merkkaa_valmiiksi(self, id: int) saa parametriksi tehtävän id:n ja merkkaa kyseisen tehtävän valmiiksi:

    tilaukset = Tilauskirja()\ntilaukset.lisaa_tilaus(\"koodaa webbikauppa\", \"Antti\", 10)\ntilaukset.lisaa_tilaus(\"tee mobiilisovellus työaikakirjanpitoon\", \"Erkki\", 25)\ntilaukset.lisaa_tilaus(\"tee ohjelma matematiikan harjoitteluun\", \"Antti\", 100)\n\ntilaukset.merkkaa_valmiiksi(1)\ntilaukset.merkkaa_valmiiksi(2)\n\nfor tilaus in tilaukset.kaikki_tilaukset():\n    print(tilaus)

    1: koodaa webbikauppa (10 tuntia), koodari Antti VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS

    Jos parametria vastaavaa tilausta ei löydy, tuottaa metodi poikkeuksen ValueError. Kertaa tarvittaessa täältä, miten poikkeus tuotetaan.

    Metodit valmiit_tilaukset(self) ja ei_valmiit_tilaukset(self) toimivat kuten olettaa saattaa, ne palauttavat nimensä mukaisen osajoukon tilauskirjan tehtävistä listana.

    Tilauskirjan loppusilaus

    Tehdään luokalle Tilauskirja vielä metodi koodarin_status(self, koodari: str), joka palauttaa tuplen, joka kertoo koodarin valmistuneiden ja vielä valmistumattomien töiden määrän sekä näihin kuluneiden työtuntien summan.

    tilaukset = Tilauskirja()\ntilaukset.lisaa_tilaus(\"koodaa webbikauppa\", \"Antti\", 10)\ntilaukset.lisaa_tilaus(\"tee mobiilisovellus työaikakirjanpitoon\", \"Antti\", 25)\ntilaukset.lisaa_tilaus(\"tee ohjelma matematiikan harjoitteluun\", \"Antti\", 100)\ntilaukset.lisaa_tilaus(\"tee uusi facebook\", \"Erkki\", 1000)\n\ntilaukset.merkkaa_valmiiksi(1)\ntilaukset.merkkaa_valmiiksi(2)\n\nstatus = tilaukset.koodarin_status(\"Antti\")\nprint(status)

    (2, 1, 35, 100)

    Tuplen ensimmäinen alkio siis kertoo valmiiden töiden määrän ja toinen valmistumattomien töiden määrän. Kolmas alkio on valmiiden töiden työaika-arvioiden summa ja neljäs alkio vielä valmistumattomien töiden työmääräarvioiden summan.

    Jos parametria vastaavaa koodaria ei löydy, tuottaa metodi poikkeuksen ValueError.

    Tässä tehtävässä tehdään interaktiivinen sovellus softafirmalta tilattujen tehtävien hallintaan. Tyyli on täysin vapaa, mutta voit hyödyntää sovelluksessa edellisen tehtävän aikana koodattuja rakennuspalikoita. Myös edellisen osan viimeisen luvun materiaalin kertaaminen saattaa olla hyödyksi.

    Ei virheiden käsittelyä

    Sovelluksen tulee toimia täsmälleen seuraavasti:

    komennot:\n0 lopetus\n1 lisää tilaus\n2 listaa valmiit\n3 listaa ei valmiit\n4 merkitse tehtävä valmiiksi\n5 koodarit\n6 koodarin status

    komento: 1\nkuvaus: koodaa uusi facebook\nkoodari ja työmääräarvio: joona 1000\nlisätty!

    komento: 1\nkuvaus: tee sovellus ajanhallintaan\nkoodari ja työmääräarvio: erkki 25\nlisätty!

    komento: 1\nkuvaus: ohjelma musiikin teorian harjoitteluun\nkoodari ja työmääräarvio: niina 12\nlisätty!

    komento: 1\nkuvaus: koodaa uusi twitter\nkoodari ja työmääräarvio: joona 55\nlisätty!

    komento: 2\nei valmiita

    komento: 3\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona EI VALMIS

    komento: 4\ntunniste: 2\nmerkitty valmiiksi

    komento: 4\ntunniste: 4\nmerkitty valmiiksi

    komento: 2\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona VALMIS

    komento: 3\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS

    komento: 5\njoona\nerkki\nniina

    komento: 6\nkoodari: joona\ntyöt: valmiina 2 ei valmiina 1, tunteja: tehty 55 tekemättä 1000

    Ensimmäiseen tehtäväpisteeseen riittää, että sovellus toimii jos kaikki syötteet ovat virheettömiä.

    Virheiden käsittely

    Toiseen tehtäväpisteeseen edellytetään, että sovellus toipuu käyttäjän syötteessä olevista virheistä. Virheiden käsittelyn tulee toimia siten, että missä tahansa syötteessa annettu virheellinen syöte aiheuttaa virheilmoituksen virheellinen syöte, ja johtaa siihen, että komentoa pyydetään uudelleen:

    komento: 1\nkuvaus: tee sovellus ajanhallintaan\nkoodari ja työmääräarvio: erkki xxx\nvirheellinen syöte

    komento: 1\nkuvaus: tee sovellus ajanhallintaan\nkoodari ja työmääräarvio: erkki\nvirheellinen syöte

    komento: 4\ntunniste: 1000000\nvirheellinen syöte

    komento: 4\ntunniste: XXXX\nvirheellinen syöte

    komento: 6\nkoodari: tuntematonkoodari\nvirheellinen syöte

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/4-lisaa-esimerkkeja.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä osiossa"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Käydään läpi muutamia binääripuuhun liittyviä rekursiivisia esimerkkialgoritmeja"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekursion todellinen hyöty tulee esiin tilanteissa, joissa iteratiivinen ratkaisu on hankala kirjoittaa. Tarkastellaan esimerkkinä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"binääripuuta"}]},{"type":"text","value":". Binääripuulla tarkoitetaan puurakennetta, jossa jokaisella alkiolla on korkeintaan kaksi \"lasta\". Binääripuu voisi siis näyttää esim. tältä (huomaa, että vaikka tietojenkäsittelijöitä pidetään joissain yhteyksissä luonnontieteilijöinä, käsityksemme puiden kasvusuunnasta on nurinkurinen):"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 307px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/42ada93f7fad74a8205a13a46dc4de57/4651d/11_4_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 78.69565217391303%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsElEQVQ4y3WU54rDQAyE/f5PlUD+JIT03ntvpHcdn0C+9Z5PYFxWO5rRaB2IF9/vV++fz0fa7bZ0u13pdDryer3CdcuJi8AHs+Tr9apgAHHn3c35DzRwF7nDjHg8HpJOp6XX60k2m5XNZhMy53L3uOCBL9WiXq/L7XYL35E9n89j2xMBdCvsdjsZDodSLBb12RhZjEYjLTQYDMJ1n0hgH5CICSQ2m82QnVvwcrlIo9GQ9XqtuX5fI4DP51Oq1arKqlQqcr/f/ySfz2ft6Ww2k1KppCR8o0JAAABarVZSq9UiJrjSDoeDFiWHZz8nMMfoC5IskH08Hv9tvhnnylbJzBjMuKyaycec7XYbC0qP2VMul2W/3/8yHI/HcjqddCwslsulOkrPYOqfIGI6ncpkMtFcJiMEZAPOsWiBjFwup98xIO6EULBQKChL1IRjgzy3d7BCZr/fD110Gb7fbzUFtynMflhikjJ0mwx1zMlkMhHn/PPNyCDZgsngG2uBm9xqtfQZdq7DlgMI7DDEcm0iMAaWkaNHhUQioQlxhx8gfhSpVEpPi8VisZBkMin5fF5+ALPgzivet7o7AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/42ada93f7fad74a8205a13a46dc4de57/a0b58/11_4_1.webp 230w","/static/42ada93f7fad74a8205a13a46dc4de57/b1a97/11_4_1.webp 307w"],"sizes":"(max-width: 307px) 100vw, 307px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/42ada93f7fad74a8205a13a46dc4de57/81c8e/11_4_1.png 230w","/static/42ada93f7fad74a8205a13a46dc4de57/4651d/11_4_1.png 307w"],"sizes":"(max-width: 307px) 100vw, 307px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/42ada93f7fad74a8205a13a46dc4de57/4651d/11_4_1.png","alt":"11 4 1","title":"11 4 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binääripuiden (ja puiden yleensäkin) käsittely rekursiivisesti on ainakin teoriassa helppoa: jos halutaan tehdä jokin operaatio binääripuun kaikille alkioille - esim. etsiä jokin tietty alkio puusta, voidaan kirjoittaa rekursiivinen algoritmi, joka"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Käsittelee nykyisen alkion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Kutsuu itseään vasemmasta lapsesta alkavalle \"alipuulle\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Kutsuu itseään oikeasta lapsesta alkavalle \"alipuulle\""}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 362px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/876ad26e1b0c7b303582f9e0f2cb0148/10600/11_4_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 77.82608695652173%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAABtklEQVQ4y4WU147CUAxE8/9/xQMvCCFEh9B7C703r45XvrrJAmvJCjjxeGauk+D1ekkyCa7dbleq1apMJhNX+y8DSYQB3m43CcNQTqeTXn3AbxG8Y0fs93upVCrS7/el0Wjof3/oR4ar1Uq2261sNhvZ7XYyn89lPB5LPp+X9XqtNRLpWDCdTsXvSWZwPp9jrGBULpcliiLHxoZR73Q6MhgMPkqPAS6XS2XRbDaVgQ9Icm84HEq9XpfH4/FeMqZbzGYzBWu1Wio7yfBwOGgd+dbnb4UyvF6vQiIRuRZIM1Bj6Afyk6AKiMHIYDVGo5EWGdDr9ZQtg/AWQGTaAFNiljnJsACIqzFCGoCYzz3++4A8h594iRXE8/n8ZXi5XGSxWGizNZgkaiy4rYhvB4B2SP5+xk75fr/rA6VSya2NSQSUwcViMQZSq9U0senP2thSM9lnBBgDaGS17PBYfJ6FsfkfHI9Hd0p4hdEkJ0gdG2i0PeQegwnsarfb+mryjDtlY4DByCLtZEl+o4QmXj17HalTY4A97742uVxO0um0ykqlUpLJZNxUP2jMZrP64aCnUCg4/2D4Ax3myJowab4fAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/876ad26e1b0c7b303582f9e0f2cb0148/a0b58/11_4_2.webp 230w","/static/876ad26e1b0c7b303582f9e0f2cb0148/c2de8/11_4_2.webp 362w"],"sizes":"(max-width: 362px) 100vw, 362px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/876ad26e1b0c7b303582f9e0f2cb0148/81c8e/11_4_2.png 230w","/static/876ad26e1b0c7b303582f9e0f2cb0148/10600/11_4_2.png 362w"],"sizes":"(max-width: 362px) 100vw, 362px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/876ad26e1b0c7b303582f9e0f2cb0148/10600/11_4_2.png","alt":"11 4 2","title":"11 4 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun koko rekursiivinen algoritmi on käsitelty, on vierailtu kerran puun jokaisessa solussa. Iteratiivinen versio algoritmista on yleensä hankalampi kirjoittaa, koska kirjanpito vieralluista alkioista menee äkkiä monimutkaiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binääripuuta voidaan mallintaa helposti kirjoittamalla luokka, joka mallintaa yhtä alkiota puussa. Alkiolla on arvon lisäksi tieto vasemmasta ja oikeasta lapsestaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Alkio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä alkiota binääripuussa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Alkio'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Alkio'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vasen_lapsi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_lapsi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt jos halutaan mallintaa esimerkiksi oheisen kaltainen puu:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 267px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/2d27ece550ee70e685bb54be04c9ea65/19e8f/11_4_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 68.26086956521739%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfUlEQVQ4y4VTWcuDQAzc///sDyr0wRdrRVuqvbx6aA96gtArHxPIsm4t34LEI5lMZqKijvP5fDjebjfyPI+v+Xyuv8n3rqO6wKQgjmO63+/0er0oyzI6nU7/giqTkcT3+80xz3MKw5CKomCWAO7KN8GV2U3u5Xk0GvGo6/WakiTRY0tTu1YD2l1wAFBVVevdZrPhJr80/xoZAIvFgobDIaVpyu8wJtiIDMfjkXzf57zZbEZN03QzPJ/PbILE7Xb7ZYBoGEURy1DXNU0mk1aeBtzv9+wkOoIpDLF1lVzIAaZwHc1bDGWU5/NJ/X6fx0CEXqbjJiDAwAxMB4NByyS9h8vlkhOlcDwe0+PxaIGaTEAApyxLWq1WOk/hAXpMp9NWwfV6pV6vx3+L7aS9Ea7rskk8MoSFq9BPktEJI2FsMDX/EHt8EIJM0BwSKDDY7XZ6TYQdlvhwOLDb0szUU1yHQaiHBI7jkEIx2NhrEgQBXS4XXmQA/2IIIriwJTDoD1qJNDsmtBRAAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/2d27ece550ee70e685bb54be04c9ea65/a0b58/11_4_3.webp 230w","/static/2d27ece550ee70e685bb54be04c9ea65/9156e/11_4_3.webp 267w"],"sizes":"(max-width: 267px) 100vw, 267px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/2d27ece550ee70e685bb54be04c9ea65/81c8e/11_4_3.png 230w","/static/2d27ece550ee70e685bb54be04c9ea65/19e8f/11_4_3.png 267w"],"sizes":"(max-width: 267px) 100vw, 267px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/2d27ece550ee70e685bb54be04c9ea65/19e8f/11_4_3.png","alt":"11 4 3","title":"11 4 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...se voidaan muodostaa seuraavalla ohjelmalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n puu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"rekursiiviset-binaaripuualgoritmit","style":"position:relative;"},"children":[{"type":"text","value":"Rekursiiviset binääripuualgoritmit"},{"type":"element","tagName":"a","properties":{"href":"#rekursiiviset-binaaripuualgoritmit","ariaLabel":"rekursiiviset binaaripuualgoritmit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ensin algoritmia, joka tulostaa kaikki binääripuun alkiot allekkain. Käytetään esimerkkinä tässä ja tulevissa tehtävissä yllä muodostettua puuta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio saa parametrikseen juurialkion (eli kaikkein ylimmäisenä olevan alkion, jonka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jälkeläisiä"}]},{"type":"text","value":" kaikki muut alkiot ovat):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_alkiot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tulosta_alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tulosta_alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio tulostaa annetun alkion arvon, ja sen jälkeen kutsuu itseään uudestaan vasemmalle ja oikealla alipuulle (edellyttäen, että vasen ja/tai oikea alkio on määritelty). Algoritmi on melko yksinkertainen, mutta käy tehokkaasti läpi kaikki puun alkiot riippumatta puun koosta. Algoritmi ei myöskään vieraile missään puun alkiossa kahta kertaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun funktiolle annetaan parametriksi aikaisemmin luodun binääripuun juurialkio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"puu"}]},{"type":"text","value":", se tulostaa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3\n5\n8\n4\n11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavalla tavalla voidaan kirjoittaa algoritmi, joka laskee kaikkien puun alkioiden summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkioiden_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" alkioiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" alkioiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" alustetaan nykyisen alkion arvolla. Tämän jälkeen siihen lisätään rekursiivisesti vasemman ja oikean alipuun summat (tarkastaen taas ensin, että ne ovat olemassa). Lopuksi summa palautetaan."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suurin alkio","tmcname":"osa11-16_suurin_alkio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin_alkio(juuri: Alkio)"}]},{"type":"text","value":", joka saa parametrikseen binääripuun juurialkion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion palauttaa puun suurimman alkion. Puun arvot tulee käydä läpi rekursiivisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: voit hyödyntää ratkaisussasi ylempänä esitettyä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alkoiden_summa"}]},{"type":"text","value":" -funktiota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n puu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suurin_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"11"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"jarjestetty-binaaripuu","style":"position:relative;"},"children":[{"type":"text","value":"Järjestetty binääripuu"},{"type":"element","tagName":"a","properties":{"href":"#jarjestetty-binaaripuu","ariaLabel":"jarjestetty binaaripuu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Binääripuusta on erityisesti hyötyä silloin, kun alkiot on järjestetty tietyllä tavalla. Alkion löytäminen järjestetystä puusta on nopeaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä puuta, jossa alkiot on järjestetty seuraavasti: jokaisen alkion vasen lapsi on pienempi kuin alkio itse, ja vastaavasti oikea alkio on suurempi kuin alkio itse."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 307px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/42ada93f7fad74a8205a13a46dc4de57/4651d/11_4_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 78.69565217391303%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsElEQVQ4y3WU54rDQAyE/f5PlUD+JIT03ntvpHcdn0C+9Z5PYFxWO5rRaB2IF9/vV++fz0fa7bZ0u13pdDryer3CdcuJi8AHs+Tr9apgAHHn3c35DzRwF7nDjHg8HpJOp6XX60k2m5XNZhMy53L3uOCBL9WiXq/L7XYL35E9n89j2xMBdCvsdjsZDodSLBb12RhZjEYjLTQYDMJ1n0hgH5CICSQ2m82QnVvwcrlIo9GQ9XqtuX5fI4DP51Oq1arKqlQqcr/f/ySfz2ft6Ww2k1KppCR8o0JAAABarVZSq9UiJrjSDoeDFiWHZz8nMMfoC5IskH08Hv9tvhnnylbJzBjMuKyaycec7XYbC0qP2VMul2W/3/8yHI/HcjqddCwslsulOkrPYOqfIGI6ncpkMtFcJiMEZAPOsWiBjFwup98xIO6EULBQKChL1IRjgzy3d7BCZr/fD110Gb7fbzUFtynMflhikjJ0mwx1zMlkMhHn/PPNyCDZgsngG2uBm9xqtfQZdq7DlgMI7DDEcm0iMAaWkaNHhUQioQlxhx8gfhSpVEpPi8VisZBkMin5fF5+ALPgzivet7o7AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/42ada93f7fad74a8205a13a46dc4de57/a0b58/11_4_1.webp 230w","/static/42ada93f7fad74a8205a13a46dc4de57/b1a97/11_4_1.webp 307w"],"sizes":"(max-width: 307px) 100vw, 307px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/42ada93f7fad74a8205a13a46dc4de57/81c8e/11_4_1.png 230w","/static/42ada93f7fad74a8205a13a46dc4de57/4651d/11_4_1.png 307w"],"sizes":"(max-width: 307px) 100vw, 307px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/42ada93f7fad74a8205a13a46dc4de57/4651d/11_4_1.png","alt":"11 4 1","title":"11 4 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt alkion etsimiseen voidaan kirjoittaa rekursiivinen algoritmi, joka toimii hyvin samankaltaisesti kuin aiemmin tarkastelemamme binäärihaku: jos juurialkio on tarkasteltava alkio, palautetaan arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":". Muuten jatketaan rekursiivisesti hakua joko vasemmasta tai oikeasta alipuusta. Jos alkio on tyhjä, palautetaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_alkio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" juuri "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" etsi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" etsi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_lapsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pomot ja alaiset","tmcname":"osa11-17_pomot_ja_alaiset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tyontekija"}]},{"type":"text","value":" mallintaa yrityksen työntekijää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tyontekija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alaiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_alainen"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Tyontekija'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laske_alaiset(tyontekija: Tyontekija)"}]},{"type":"text","value":", joka laskee rekursiivisesti annetun työntekijän alaisten määrän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n t1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sasu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t6 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tyontekija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kjell\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t6"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_alainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alaiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3\n0"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"paluu-aikaan-ennen-rekursiota","style":"position:relative;"},"children":[{"type":"text","value":"Paluu aikaan ennen rekursiota"},{"type":"element","tagName":"a","properties":{"href":"#paluu-aikaan-ennen-rekursiota","ariaLabel":"paluu aikaan ennen rekursiota permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tässä tehtäväsarjassa ei rekursiota tarvitse eikä edes kannata käyttää. Listakoosteita sen sijaan pääsee hyödyntämään!"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tilauskirja","tmcname":"osa11-18_tilauskirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teemme tässä tehtävässä kaksi luokkaa, joitka toimivat rakennuspalikoina seuraavassa tehtävässä aiheena olevassa sovelluksessa."}]},{"type":"element","tagName":"h2","properties":{"id":"tehtava","style":"position:relative;"},"children":[{"type":"text","value":"Tehtava"},{"type":"element","tagName":"a","properties":{"href":"#tehtava","ariaLabel":"tehtava permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtava"}]},{"type":"text","value":", joka mallintaa ohjelmistoyritykselle annettavia työtehtäviä. Tehtävillä on"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kuvaus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"arvio sen viemästä työmäärästä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tieto koodarista, joka toteuttaa tehtävän"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tieto siitä, onko tehtävä valmis vai ei"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"yksikäsitteinen tunniste eli id"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"t1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa hello world\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tyomaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_valmis"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_valmis"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 koodaa hello world Erkki 3\n1: koodaa hello world (3 tuntia), koodari Erkki EI VALMIS\nFalse\n1: koodaa hello world (3 tuntia), koodari Erkki VALMIS\nTrue\n2: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n3: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täsmennyksiä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävän tilan (valmis vai ei vielä valmis) voi tarkistaa metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"on_valmis(self)"}]},{"type":"text","value":" joka palauttaa totuusarvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävä ei ole siinä vaiheessa valmis kun se luodaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävä merkataan valmiiksi kutsumalla metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkaa_valmiiksi(self)"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtävien id on juokseva numero, joka alkaa arvosta 1 (ensimmäisenä luotava tehtävä saa id:n 1, seuraava id:n 2 jne.)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":": id kannattaa toteuttaa "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/5-staattiset-piirteet#luokkamuuttujat"},"children":[{"type":"text","value":"luokkamuuttujana"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"tilauskirja","style":"position:relative;"},"children":[{"type":"text","value":"Tilauskirja"},{"type":"element","tagName":"a","properties":{"href":"#tilauskirja","ariaLabel":"tilauskirja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään nyt luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":", joka kokoaa kaikki ohjelmistoyritykseltä tilatut työtehtävät, joita siis mallinnetaan luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtava"}]},{"type":"text","value":" olioilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tilauskirjan perusversiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tilauskirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee ohjelma matematiikan harjoitteluun\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tilaus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kaikki_tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koodari "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Antti\nErkki"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä vaiheessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":" tarjoaa kolme metodia:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_tilaus(self, kuvaus, koodari, tyomaara)"}]},{"type":"text","value":" lisää uuden tilauksen tilauskirjaan. Tilauskirja tallettaa tilaukset sisäisesti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtava"}]},{"type":"text","value":"-olioina. Huomaa, että metodilla täytyy olla juuri nämä parametrit, muuten testit eivät hyväksy metodia!"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki_tilaukset(self)"}]},{"type":"text","value":" palauttaa listana kaikki tilauskirjalla olevat tehtävät"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"koodarit(self)"}]},{"type":"text","value":" palauttaa listana kaikki koodarit, joille on tehtävä tilauskirjassa, metodin palauttama lista ei saa sisältää yhtä koodia useampaan kertaan"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" Listalta on helppo poistaa duplikaatit siten että muutetaan ensin lista "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3.8/library/stdtypes.html#set","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"set"}]},{"type":"text","value":"-tyyppiseksi. Set siis tarkoittaa joukkoa, ja joukossa kutakin alkiota voi olla vain yksi kappale. Tämän jälkeen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"set"}]},{"type":"text","value":" voidaan muuttaa takaisin listaksi, ja duplikaatit ovat kadonneet:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"set"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 1, 3, 6, 4, 1, 3]\n[1, 3, 4, 6]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"tilauskirjan-viimeistely","style":"position:relative;"},"children":[{"type":"text","value":"Tilauskirjan viimeistely"},{"type":"element","tagName":"a","properties":{"href":"#tilauskirjan-viimeistely","ariaLabel":"tilauskirjan viimeistely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":" vielä kolme uutta metodia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkaa_valmiiksi(self, id: int)"}]},{"type":"text","value":" saa parametriksi tehtävän id:n ja merkkaa kyseisen tehtävän valmiiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tilauskirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee ohjelma matematiikan harjoitteluun\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tilaus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kaikki_tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1: koodaa webbikauppa (10 tuntia), koodari Antti VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos parametria vastaavaa tilausta ei löydy, tuottaa metodi poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":". Kertaa tarvittaessa "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"täältä"}]},{"type":"text","value":", miten poikkeus tuotetaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"valmiit_tilaukset(self)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ei_valmiit_tilaukset(self)"}]},{"type":"text","value":" toimivat kuten olettaa saattaa, ne palauttavat nimensä mukaisen osajoukon tilauskirjan tehtävistä listana."}]},{"type":"element","tagName":"h2","properties":{"id":"tilauskirjan-loppusilaus","style":"position:relative;"},"children":[{"type":"text","value":"Tilauskirjan loppusilaus"},{"type":"element","tagName":"a","properties":{"href":"#tilauskirjan-loppusilaus","ariaLabel":"tilauskirjan loppusilaus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tilauskirja"}]},{"type":"text","value":" vielä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"koodarin_status(self, koodari: str)"}]},{"type":"text","value":", joka palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tuplen"}]},{"type":"text","value":", joka kertoo koodarin valmistuneiden ja vielä valmistumattomien töiden määrän sekä näihin kuluneiden työtuntien summan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tilauskirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaa webbikauppa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee mobiilisovellus työaikakirjanpitoon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee ohjelma matematiikan harjoitteluun\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tilaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tee uusi facebook\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"merkkaa_valmiiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nstatus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodarin_status"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"status"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(2, 1, 35, 100)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen ensimmäinen alkio siis kertoo valmiiden töiden määrän ja toinen valmistumattomien töiden määrän. Kolmas alkio on valmiiden töiden työaika-arvioiden summa ja neljäs alkio vielä valmistumattomien töiden työmääräarvioiden summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos parametria vastaavaa koodaria ei löydy, tuottaa metodi poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tilauskirjasovellus","tmcname":"osa11-19_tilauskirjasovellus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään interaktiivinen sovellus softafirmalta tilattujen tehtävien hallintaan. Tyyli on täysin vapaa, mutta voit hyödyntää sovelluksessa edellisen tehtävän aikana koodattuja rakennuspalikoita. Myös "},{"type":"element","tagName":"a","properties":{"href":"/osa-10/4-lisaa-esimerkkeja"},"children":[{"type":"text","value":"edellisen osan viimeisen luvun"}]},{"type":"text","value":" materiaalin kertaaminen saattaa olla hyödyksi."}]},{"type":"element","tagName":"h2","properties":{"id":"ei-virheiden-kasittelya","style":"position:relative;"},"children":[{"type":"text","value":"Ei virheiden käsittelyä"},{"type":"element","tagName":"a","properties":{"href":"#ei-virheiden-kasittelya","ariaLabel":"ei virheiden kasittelya permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovelluksen tulee toimia "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"täsmälleen"}]},{"type":"text","value":" seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopetus\n1 lisää tilaus\n2 listaa valmiit\n3 listaa ei valmiit\n4 merkitse tehtävä valmiiksi\n5 koodarit\n6 koodarin status"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koodaa uusi facebook"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"joona 1000"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tee sovellus ajanhallintaan"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erkki 25"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ohjelma musiikin teorian harjoitteluun"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"niina 12"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koodaa uusi twitter"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"joona 55"}]},{"type":"text","value":"\nlisätty!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nei valmiita"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona EI VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nmerkitty valmiiksi"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nmerkitty valmiiksi"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\njoona\nerkki\nniina"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkoodari: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"joona"}]},{"type":"text","value":"\ntyöt: valmiina 2 ei valmiina 1, tunteja: tehty 55 tekemättä 1000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäiseen tehtäväpisteeseen riittää, että sovellus toimii jos kaikki syötteet ovat virheettömiä."}]},{"type":"element","tagName":"h2","properties":{"id":"virheiden-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Virheiden käsittely"},{"type":"element","tagName":"a","properties":{"href":"#virheiden-kasittely","ariaLabel":"virheiden kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiseen tehtäväpisteeseen edellytetään, että sovellus toipuu käyttäjän syötteessä olevista virheistä. Virheiden käsittelyn tulee toimia siten, että missä tahansa syötteessa annettu virheellinen syöte aiheuttaa virheilmoituksen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"virheellinen syöte"}]},{"type":"text","value":", ja johtaa siihen, että komentoa pyydetään uudelleen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tee sovellus ajanhallintaan"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erkki xxx"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkuvaus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tee sovellus ajanhallintaan"}]},{"type":"text","value":"\nkoodari ja työmääräarvio: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"erkki"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1000000"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntunniste: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"XXXX"}]},{"type":"text","value":"\nvirheellinen syöte"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkoodari: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tuntematonkoodari"}]},{"type":"text","value":"\nvirheellinen syöte"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542"},"children":[]}]}]},"html":"

    Tässä osiossa

      \n
    • Käydään läpi muutamia binääripuuhun liittyviä rekursiivisia esimerkkialgoritmeja
    • \n

    Rekursion todellinen hyöty tulee esiin tilanteissa, joissa iteratiivinen ratkaisu on hankala kirjoittaa. Tarkastellaan esimerkkinä binääripuuta. Binääripuulla tarkoitetaan puurakennetta, jossa jokaisella alkiolla on korkeintaan kaksi \"lasta\". Binääripuu voisi siis näyttää esim. tältä (huomaa, että vaikka tietojenkäsittelijöitä pidetään joissain yhteyksissä luonnontieteilijöinä, käsityksemme puiden kasvusuunnasta on nurinkurinen):

    \n \n \n \n \n \n \"11\n \n \n

    Binääripuiden (ja puiden yleensäkin) käsittely rekursiivisesti on ainakin teoriassa helppoa: jos halutaan tehdä jokin operaatio binääripuun kaikille alkioille - esim. etsiä jokin tietty alkio puusta, voidaan kirjoittaa rekursiivinen algoritmi, joka

      \n
    1. Käsittelee nykyisen alkion
    2. \n
    3. Kutsuu itseään vasemmasta lapsesta alkavalle \"alipuulle\"
    4. \n
    5. Kutsuu itseään oikeasta lapsesta alkavalle \"alipuulle\"
    6. \n
    \n \n \n \n \n \n \"11\n \n \n

    Kun koko rekursiivinen algoritmi on käsitelty, on vierailtu kerran puun jokaisessa solussa. Iteratiivinen versio algoritmista on yleensä hankalampi kirjoittaa, koska kirjanpito vieralluista alkioista menee äkkiä monimutkaiseksi.

    Binääripuuta voidaan mallintaa helposti kirjoittamalla luokka, joka mallintaa yhtä alkiota puussa. Alkiolla on arvon lisäksi tieto vasemmasta ja oikeasta lapsestaan:

    \nclass Alkio:\n    \"\"\" Luokka mallintaa yhtä alkiota binääripuussa \"\"\"\n    def __init__(self, arvo, vasen_lapsi:'Alkio' = None, oikea_lapsi:'Alkio' = None):\n        self.arvo = arvo\n        self.vasen_lapsi = vasen_lapsi\n        self.oikea_lapsi = oikea_lapsi

    Nyt jos halutaan mallintaa esimerkiksi oheisen kaltainen puu:

    \n \n \n \n \n \n \"11\n \n \n

    ...se voidaan muodostaa seuraavalla ohjelmalla:

    if __name__ == \"__main__\":\n    puu = Alkio(2)\n\n    puu.vasen_lapsi = Alkio(3)\n    puu.vasen_lapsi.vasen_lapsi = Alkio(5)\n    puu.vasen_lapsi.oikea_lapsi = Alkio(8)\n\n    puu.oikea_lapsi = Alkio(4)\n    puu.oikea_lapsi.oikea_lapsi = Alkio(11)\n

    Rekursiiviset binääripuualgoritmit

    Tarkastellaan ensin algoritmia, joka tulostaa kaikki binääripuun alkiot allekkain. Käytetään esimerkkinä tässä ja tulevissa tehtävissä yllä muodostettua puuta.

    Funktio saa parametrikseen juurialkion (eli kaikkein ylimmäisenä olevan alkion, jonka jälkeläisiä kaikki muut alkiot ovat):

    \ndef tulosta_alkiot(juuri: Alkio):\n    print(juuri.arvo)\n\n    if juuri.vasen_lapsi is not None:\n        tulosta_alkiot(juuri.vasen_lapsi)\n\n    if juuri.oikea_lapsi is not None:\n        tulosta_alkiot(juuri.oikea_lapsi)\n

    Funktio tulostaa annetun alkion arvon, ja sen jälkeen kutsuu itseään uudestaan vasemmalle ja oikealla alipuulle (edellyttäen, että vasen ja/tai oikea alkio on määritelty). Algoritmi on melko yksinkertainen, mutta käy tehokkaasti läpi kaikki puun alkiot riippumatta puun koosta. Algoritmi ei myöskään vieraile missään puun alkiossa kahta kertaa.

    Kun funktiolle annetaan parametriksi aikaisemmin luodun binääripuun juurialkio puu, se tulostaa

    2\n3\n5\n8\n4\n11

    Vastaavalla tavalla voidaan kirjoittaa algoritmi, joka laskee kaikkien puun alkioiden summan:

    \ndef alkioiden_summa(juuri: Alkio):\n    summa = juuri.arvo\n\n    if juuri.vasen_lapsi is not None:\n        summa += alkioiden_summa(juuri.vasen_lapsi)\n\n    if juuri.oikea_lapsi is not None:\n        summa += alkioiden_summa(juuri.oikea_lapsi)\n\n    return summa\n

    Muuttuja summa alustetaan nykyisen alkion arvolla. Tämän jälkeen siihen lisätään rekursiivisesti vasemman ja oikean alipuun summat (tarkastaen taas ensin, että ne ovat olemassa). Lopuksi summa palautetaan.

    Kirjoita funktio suurin_alkio(juuri: Alkio), joka saa parametrikseen binääripuun juurialkion.

    Funktion palauttaa puun suurimman alkion. Puun arvot tulee käydä läpi rekursiivisesti.

    Vinkki: voit hyödyntää ratkaisussasi ylempänä esitettyä alkoiden_summa -funktiota.

    Esimerkki funktion kutsumisesta:

    \nif __name__ == \"__main__\":\n    puu = Alkio(2)\n\n    puu.vasen_lapsi = Alkio(3)\n    puu.vasen_lapsi.vasen_lapsi = Alkio(5)\n    puu.vasen_lapsi.oikea_lapsi = Alkio(8)\n\n    puu.oikea_lapsi = Alkio(4)\n    puu.oikea_lapsi.oikea_lapsi = Alkio(11)\n\n    print(suurin_alkio(puu))\n

    11

    Järjestetty binääripuu

    Binääripuusta on erityisesti hyötyä silloin, kun alkiot on järjestetty tietyllä tavalla. Alkion löytäminen järjestetystä puusta on nopeaa.

    Tarkastellaan esimerkkinä puuta, jossa alkiot on järjestetty seuraavasti: jokaisen alkion vasen lapsi on pienempi kuin alkio itse, ja vastaavasti oikea alkio on suurempi kuin alkio itse.

    \n \n \n \n \n \n \"11\n \n \n

    Nyt alkion etsimiseen voidaan kirjoittaa rekursiivinen algoritmi, joka toimii hyvin samankaltaisesti kuin aiemmin tarkastelemamme binäärihaku: jos juurialkio on tarkasteltava alkio, palautetaan arvo True. Muuten jatketaan rekursiivisesti hakua joko vasemmasta tai oikeasta alipuusta. Jos alkio on tyhjä, palautetaan False.

    \ndef etsi_alkio(juuri: Alkio, arvo):\n    if juuri is None:\n        return False\n\n    if arvo == juuri.arvo:\n        return True\n\n    if arvo > juuri.arvo:\n        return etsi_alkio(juuri.oikea_lapsi, arvo)\n\n    return etsi_alkio(juuri.vasen_lapsi, arvo)\n

    Luokka Tyontekija mallintaa yrityksen työntekijää:

    class Tyontekija:\n    def __init__(self, nimi: str):\n        self.nimi = nimi\n        self.alaiset = []\n\n    def lisaa_alainen(self, tyontekija: 'Tyontekija'):\n        self.alaiset.append(tyontekija)

    Tee funktio laske_alaiset(tyontekija: Tyontekija), joka laskee rekursiivisesti annetun työntekijän alaisten määrän.

    Esimerkki funktion käyttämisestä:

    if __name__ == \"__main__\":\n    t1 = Tyontekija(\"Sasu\")\n    t2 = Tyontekija(\"Erkki\")\n    t3 = Tyontekija(\"Matti\")\n    t4 = Tyontekija(\"Emilia\")\n    t5 = Tyontekija(\"Antti\")\n    t6 = Tyontekija(\"Kjell\")\n    t1.lisaa_alainen(t4)\n    t1.lisaa_alainen(t6)\n    t4.lisaa_alainen(t2)\n    t4.lisaa_alainen(t3)\n    t4.lisaa_alainen(t5)\n    print(laske_alaiset(t1))\n    print(laske_alaiset(t4))\n    print(laske_alaiset(t5))

    5\n3\n0

    Paluu aikaan ennen rekursiota

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tässä tehtäväsarjassa ei rekursiota tarvitse eikä edes kannata käyttää. Listakoosteita sen sijaan pääsee hyödyntämään!

    Teemme tässä tehtävässä kaksi luokkaa, joitka toimivat rakennuspalikoina seuraavassa tehtävässä aiheena olevassa sovelluksessa.

    Tehtava

    Toteuta luokka Tehtava, joka mallintaa ohjelmistoyritykselle annettavia työtehtäviä. Tehtävillä on

      \n
    • kuvaus
    • \n
    • arvio sen viemästä työmäärästä
    • \n
    • tieto koodarista, joka toteuttaa tehtävän
    • \n
    • tieto siitä, onko tehtävä valmis vai ei
    • \n
    • yksikäsitteinen tunniste eli id
    • \n

    Luokka toimii seuraavasti:

    t1 = Tehtava(\"koodaa hello world\", \"Erkki\", 3)\nprint(t1.id, t1.kuvaus, t1.koodari, t1.tyomaara)\nprint(t1)\nprint(t1.on_valmis())\nt1.merkkaa_valmiiksi()\nprint(t1)\nprint(t1.on_valmis())\nt2 = Tehtava(\"koodaa webbikauppa\", \"Antti\", 10)\nt3 = Tehtava(\"tee mobiilisovellus työaikakirjanpitoon\", \"Erkki\", 25)\nprint(t2)\nprint(t3)

    1 koodaa hello world Erkki 3\n1: koodaa hello world (3 tuntia), koodari Erkki EI VALMIS\nFalse\n1: koodaa hello world (3 tuntia), koodari Erkki VALMIS\nTrue\n2: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n3: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS

    Täsmennyksiä:

      \n
    • tehtävän tilan (valmis vai ei vielä valmis) voi tarkistaa metodilla on_valmis(self) joka palauttaa totuusarvon
    • \n
    • tehtävä ei ole siinä vaiheessa valmis kun se luodaan
    • \n
    • tehtävä merkataan valmiiksi kutsumalla metodia merkkaa_valmiiksi(self)
    • \n
    • tehtävien id on juokseva numero, joka alkaa arvosta 1 (ensimmäisenä luotava tehtävä saa id:n 1, seuraava id:n 2 jne.)
    • \n

    Vihje: id kannattaa toteuttaa luokkamuuttujana.

    Tilauskirja

    Tehdään nyt luokka Tilauskirja, joka kokoaa kaikki ohjelmistoyritykseltä tilatut työtehtävät, joita siis mallinnetaan luokan Tehtava olioilla.

    Tilauskirjan perusversiota käytetään seuraavasti:

    tilaukset = Tilauskirja()\ntilaukset.lisaa_tilaus(\"koodaa webbikauppa\", \"Antti\", 10)\ntilaukset.lisaa_tilaus(\"tee mobiilisovellus työaikakirjanpitoon\", \"Erkki\", 25)\ntilaukset.lisaa_tilaus(\"tee ohjelma matematiikan harjoitteluun\", \"Antti\", 100)\n\nfor tilaus in tilaukset.kaikki_tilaukset():\n    print(tilaus)\n\nprint()\n\nfor koodari in tilaukset.koodarit():\n    print(koodari)

    1: koodaa webbikauppa (10 tuntia), koodari Antti EI VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki EI VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS

    Antti\nErkki

    Tässä vaiheessa Tilauskirja tarjoaa kolme metodia:

      \n
    • lisaa_tilaus(self, kuvaus, koodari, tyomaara) lisää uuden tilauksen tilauskirjaan. Tilauskirja tallettaa tilaukset sisäisesti Tehtava-olioina. Huomaa, että metodilla täytyy olla juuri nämä parametrit, muuten testit eivät hyväksy metodia!
    • \n
    • kaikki_tilaukset(self) palauttaa listana kaikki tilauskirjalla olevat tehtävät
    • \n
    • koodarit(self) palauttaa listana kaikki koodarit, joille on tehtävä tilauskirjassa, metodin palauttama lista ei saa sisältää yhtä koodia useampaan kertaan
    • \n

    Vihje Listalta on helppo poistaa duplikaatit siten että muutetaan ensin lista set-tyyppiseksi. Set siis tarkoittaa joukkoa, ja joukossa kutakin alkiota voi olla vain yksi kappale. Tämän jälkeen set voidaan muuttaa takaisin listaksi, ja duplikaatit ovat kadonneet:

    lista = [1,1,3,6,4,1,3]\nlista2 = list(set(lista))\nprint(lista)\nprint(lista2)

    [1, 1, 3, 6, 4, 1, 3]\n[1, 3, 4, 6]

    Tilauskirjan viimeistely

    Tehdään luokalle Tilauskirja vielä kolme uutta metodia.

    Metodi merkkaa_valmiiksi(self, id: int) saa parametriksi tehtävän id:n ja merkkaa kyseisen tehtävän valmiiksi:

    tilaukset = Tilauskirja()\ntilaukset.lisaa_tilaus(\"koodaa webbikauppa\", \"Antti\", 10)\ntilaukset.lisaa_tilaus(\"tee mobiilisovellus työaikakirjanpitoon\", \"Erkki\", 25)\ntilaukset.lisaa_tilaus(\"tee ohjelma matematiikan harjoitteluun\", \"Antti\", 100)\n\ntilaukset.merkkaa_valmiiksi(1)\ntilaukset.merkkaa_valmiiksi(2)\n\nfor tilaus in tilaukset.kaikki_tilaukset():\n    print(tilaus)

    1: koodaa webbikauppa (10 tuntia), koodari Antti VALMIS\n2: tee mobiilisovellus työaikakirjanpitoon (25 tuntia), koodari Erkki VALMIS\n3: tee ohjelma matematiikan harjoitteluun (100 tuntia), koodari Antti EI VALMIS

    Jos parametria vastaavaa tilausta ei löydy, tuottaa metodi poikkeuksen ValueError. Kertaa tarvittaessa täältä, miten poikkeus tuotetaan.

    Metodit valmiit_tilaukset(self) ja ei_valmiit_tilaukset(self) toimivat kuten olettaa saattaa, ne palauttavat nimensä mukaisen osajoukon tilauskirjan tehtävistä listana.

    Tilauskirjan loppusilaus

    Tehdään luokalle Tilauskirja vielä metodi koodarin_status(self, koodari: str), joka palauttaa tuplen, joka kertoo koodarin valmistuneiden ja vielä valmistumattomien töiden määrän sekä näihin kuluneiden työtuntien summan.

    tilaukset = Tilauskirja()\ntilaukset.lisaa_tilaus(\"koodaa webbikauppa\", \"Antti\", 10)\ntilaukset.lisaa_tilaus(\"tee mobiilisovellus työaikakirjanpitoon\", \"Antti\", 25)\ntilaukset.lisaa_tilaus(\"tee ohjelma matematiikan harjoitteluun\", \"Antti\", 100)\ntilaukset.lisaa_tilaus(\"tee uusi facebook\", \"Erkki\", 1000)\n\ntilaukset.merkkaa_valmiiksi(1)\ntilaukset.merkkaa_valmiiksi(2)\n\nstatus = tilaukset.koodarin_status(\"Antti\")\nprint(status)

    (2, 1, 35, 100)

    Tuplen ensimmäinen alkio siis kertoo valmiiden töiden määrän ja toinen valmistumattomien töiden määrän. Kolmas alkio on valmiiden töiden työaika-arvioiden summa ja neljäs alkio vielä valmistumattomien töiden työmääräarvioiden summan.

    Jos parametria vastaavaa koodaria ei löydy, tuottaa metodi poikkeuksen ValueError.

    Tässä tehtävässä tehdään interaktiivinen sovellus softafirmalta tilattujen tehtävien hallintaan. Tyyli on täysin vapaa, mutta voit hyödyntää sovelluksessa edellisen tehtävän aikana koodattuja rakennuspalikoita. Myös edellisen osan viimeisen luvun materiaalin kertaaminen saattaa olla hyödyksi.

    Ei virheiden käsittelyä

    Sovelluksen tulee toimia täsmälleen seuraavasti:

    komennot:\n0 lopetus\n1 lisää tilaus\n2 listaa valmiit\n3 listaa ei valmiit\n4 merkitse tehtävä valmiiksi\n5 koodarit\n6 koodarin status

    komento: 1\nkuvaus: koodaa uusi facebook\nkoodari ja työmääräarvio: joona 1000\nlisätty!

    komento: 1\nkuvaus: tee sovellus ajanhallintaan\nkoodari ja työmääräarvio: erkki 25\nlisätty!

    komento: 1\nkuvaus: ohjelma musiikin teorian harjoitteluun\nkoodari ja työmääräarvio: niina 12\nlisätty!

    komento: 1\nkuvaus: koodaa uusi twitter\nkoodari ja työmääräarvio: joona 55\nlisätty!

    komento: 2\nei valmiita

    komento: 3\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona EI VALMIS

    komento: 4\ntunniste: 2\nmerkitty valmiiksi

    komento: 4\ntunniste: 4\nmerkitty valmiiksi

    komento: 2\n2: tee sovellus ajanhallintaan (25 tuntia), koodari erkki VALMIS\n4: koodaa uusi twitter (55 tuntia), koodari joona VALMIS

    komento: 3\n1: koodaa uusi facebook (1000 tuntia), koodari joona EI VALMIS\n3: ohjelma musiikin teorian harjoitteluun (12 tuntia), koodari niina EI VALMIS

    komento: 5\njoona\nerkki\nniina

    komento: 6\nkoodari: joona\ntyöt: valmiina 2 ei valmiina 1, tunteja: tehty 55 tekemättä 1000

    Ensimmäiseen tehtäväpisteeseen riittää, että sovellus toimii jos kaikki syötteet ovat virheettömiä.

    Virheiden käsittely

    Toiseen tehtäväpisteeseen edellytetään, että sovellus toipuu käyttäjän syötteessä olevista virheistä. Virheiden käsittelyn tulee toimia siten, että missä tahansa syötteessa annettu virheellinen syöte aiheuttaa virheilmoituksen virheellinen syöte, ja johtaa siihen, että komentoa pyydetään uudelleen:

    komento: 1\nkuvaus: tee sovellus ajanhallintaan\nkoodari ja työmääräarvio: erkki xxx\nvirheellinen syöte

    komento: 1\nkuvaus: tee sovellus ajanhallintaan\nkoodari ja työmääräarvio: erkki\nvirheellinen syöte

    komento: 4\ntunniste: 1000000\nvirheellinen syöte

    komento: 4\ntunniste: XXXX\nvirheellinen syöte

    komento: 6\nkoodari: tuntematonkoodari\nvirheellinen syöte

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/4-lisaa-esimerkkeja.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-11/page-data.json b/page-data/osa-11/page-data.json index ac339e305..61e3db6ed 100644 --- a/page-data/osa-11/page-data.json +++ b/page-data/osa-11/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-11", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-11","title":"Osa 11"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-11","title":"Osa 11"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-11/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-12/1-funktio-parametrina/page-data.json b/page-data/osa-12/1-funktio-parametrina/page-data.json index e0e0789d0..ed0e0ede1 100644 --- a/page-data/osa-12/1-funktio-parametrina/page-data.json +++ b/page-data/osa-12/1-funktio-parametrina/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-12/1-funktio-parametrina", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat järjestää listoja eri kriteerien mukaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan lambda-lausekkeella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää lambda-lauseketta myös muiden Pythonin funktioiden kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat välittää funktion parametrina funktiolle"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme jo aikaisemmin käyttäneet metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" ja funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" järjestämään listoja luonnolliseen järjestykseen. Metodit toimivat sellaisenaan hyvin luvuista ja merkkijonoista koostuvien listojen kanssa, mutta jos lista sisältää monimutkaisempia alkioita, Python ei välttämättä järjestä listaa niin kuin ohjelmoija toivoisi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi lista tupleja järjestetään oletuksena jokaisen tuplen ensimmäisen alkion perusteella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('appelsiini', 4.5)\n('banaani', 5.95)\n('omena', 3.95)\n('vesimeloni', 4.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä jos haluaisimme järjestää tuotelistan hinnan perusteella?"}]},{"type":"element","tagName":"h2","properties":{"id":"funktiot-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Funktiot parametrina"},{"type":"element","tagName":"a","properties":{"href":"#funktiot-parametrina","ariaLabel":"funktiot parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järjestysmetodille tai -funktiolle voidaan antaa toisena parametrina järjestyksen määräävä avain. Avaimeksi annetaan funktio, joka kertoo, miten yksittäisen alkion arvo määritetään. Python kutsuu tätä funktiota järjestämisen aikana alkioiden vertailemiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Palautetaan tuplen toinen alkio eli hinta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Hyödynnetään funktiota hintajarjestys"}]},{"type":"text","value":"\n tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ohjelma järjestää listan hinnan mukaiseen järjestykseen. Mutta mitä ohjelmassa oikeastaan tapahtuu?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"text","value":" määrittely on melko yksinkertainen: se saa parametrikseen yhden alkion ja palauttaa alkiolle arvon - tässä tapauksessa tuplen toisen alkion (joka esimerkissämme esittää tuotteen hintaa). Tarkastellaan kuitenkin lähemmin järjestysmetodia kutsuvaa riviä:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuotteet.sort(key=hintajarjestys)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivillä annetaan metodille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" parametriksi funktio. Ei siis funktion paluuarvoa, vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus funktioon"}]},{"type":"text","value":". Järjestysmetodi kutsuu tätä funktiota jokaiselle alkiolle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsut nähdään selkeästi lisäämällä vertailufunktioomme ylimääräinen tulostuslause:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan alkio"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kutsuttiin hintajarjestys("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Palautetaan tuplen toinen alkio eli hinta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n\ntuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Hyödynnetään funktiota hintajarjestys"}]},{"type":"text","value":"\ntuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsuttiin hintajarjestys(('banaani', 5.95))\nKutsuttiin hintajarjestys(('omena', 3.95))\nKutsuttiin hintajarjestys(('appelsiini', 4.5))\nKutsuttiin hintajarjestys(('vesimeloni', 4.95))\n('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järjestys saadaan käännettyä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"päinvastaiseksi"}]},{"type":"text","value":" hyödyntämällä sekä metodista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" että funktiosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" löytyvää toista parametria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reverse"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reverse"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reverse"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-sisalla-maaritelty-funktio","style":"position:relative;"},"children":[{"type":"text","value":"Funktion sisällä määritelty funktio"},{"type":"element","tagName":"a","properties":{"href":"#funktion-sisalla-maaritelty-funktio","ariaLabel":"funktion sisalla maaritelty funktio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluaisimme siirtää edellisessä esimerkissä tehdyn järjestämisen omaan funktioonsa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"text","value":", voisimme toteuttaa sen seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään täällä funktiota hintajarjestys"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_hinnan_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos järjestämisen käyttämää apufunktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"text","value":" ei käytetä missään muussa kohtaa ohjelmaa kuin funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"text","value":", sen määrittely voitaisiin siirtää funktion sisälle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään apufunktio tällä kertaa funktion sisällä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Järjestys varastosaldon mukaan","tmcname":"osa12-01_varastosaldo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_varastosaldon_mukaan(alkiot: list)"}]},{"type":"text","value":". Funktio saa parametrina listan tupleja, joissa kolmantena alkiona on tuotteiden varastosaldo. Funktio järjestää parametrinaan saamat tuotteet varastosaldojen mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_varastosaldon_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\nappelsiini 2 kpl\nomena 3 kpl\nbanaani 12 kpl\nvesimeloni 22 kpl\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Järjestys tuotantokausien mukaan","tmcname":"osa12-02_tuotantokaudet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_tuotantokausien_mukaan(alkiot: list)"}]},{"type":"text","value":". Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne tuotantokausien lukumäärän mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sarjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Friends\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Simpsons\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_tuotantokausien_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'nimi'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'kausia'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" tuotantokautta\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\nDexter 9 tuotantokautta\nFriends 10 tuotantokautta\nSimpsons 32 tuotantokautta\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Järjestys pisteiden mukaan","tmcname":"osa12-03_pisteiden_mukaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_pisteiden_mukaan(alkiot: list)"}]},{"type":"text","value":". Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pisteiden mukaiseen laskevaan järjestykseen"}]},{"type":"text","value":". Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sarjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Friends\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Simpsons\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IMDB:n mukainen pistemäärä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_pisteiden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'nimi'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'pisteet'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\nIMDB:n mukainen pistemäärä\nFriends 8.9\nSimpsons 8.7\nDexter 8.6\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"omien-olioiden-alkioiden-jarjestaminen","style":"position:relative;"},"children":[{"type":"text","value":"Omien olioiden alkioiden järjestäminen"},{"type":"element","tagName":"a","properties":{"href":"#omien-olioiden-alkioiden-jarjestaminen","ariaLabel":"omien olioiden alkioiden jarjestaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoitetaan samaa periaatetta hyödyntäen ohjelma, joka järjestää listan omasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-luokasta luotuja olioita kahden eri kriteerin avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä opiskelijaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tunnus\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"), "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" op.\""}]}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tunnuksen_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tunnus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisteiden_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n o1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapeli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"220"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n o2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"m321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"210"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n o3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"131"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"o1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" o2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" o3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tunnuksen mukaan:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"tunnuksen_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pisteiden mukaan:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"pisteiden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aapeli (a123), 220 op.\nAnna (a999), 131 op.\nMaija (m321), 210 op."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pisteiden mukaan:\nAnna (a999), 131 op.\nMaija (m321), 210 op.\nAapeli (a123), 220 op."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järjestäminen toimii niinkuin pitää. Jos olioille arvon antavia funktioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnuksen_mukaan"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisteiden_mukaan"}]},{"type":"text","value":" ei tarvita muuten, voimme kuitenkin vielä yksinkertaistaa ohjelmaa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kiipeilyreitti","tmcname":"osa12-04_kiipeilyreitti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee valmis luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kiipeilyreitti"}]},{"type":"text","value":", jota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"reitti1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nreitti2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nreitti3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reitti3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reitti3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"grade"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kantti, pituus 38 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A\nSyncro 14 8C+"}]}]},{"type":"element","tagName":"h2","properties":{"id":"pituuden-mukainen-jarjestys","style":"position:relative;"},"children":[{"type":"text","value":"Pituuden mukainen järjestys"},{"type":"element","tagName":"a","properties":{"href":"#pituuden-mukainen-jarjestys","ariaLabel":"pituuden mukainen jarjestys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituuden_mukaan(reitit: list)"}]},{"type":"text","value":" joka palauttaa kiipeilyreitit pituuden mukaan käänteisessä järjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"r1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pieniä askelia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nreitit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"r1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" reitti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pituuden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kantti, pituus 38 metriä, grade 6A+\nSyncro, pituus 14 metriä, grade 8C+\nPieniä askelia, pituus 12 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A"}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaikeuden-mukainen-jarjestys","style":"position:relative;"},"children":[{"type":"text","value":"Vaikeuden mukainen järjestys"},{"type":"element","tagName":"a","properties":{"href":"#vaikeuden-mukainen-jarjestys","ariaLabel":"vaikeuden mukainen jarjestys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaikeuden_mukaan(reitit: list)"}]},{"type":"text","value":" joka palauttaa kiipeilyreitit vaikeuden (eli graden) mukaan laskevassa järjestyksessä. Jos reittien vaikeus on sama, ratkaisee pituus vaikeuden. Pidempi on vaikeampi. Kiipeilyreittien vaikeusasteikko on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"4, 4+, 5, 5+, 6A, 6A+, ..."}]},{"type":"text","value":" eli käytännössä se seuraa aakkosjärjestystä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"r1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pieniä askelia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nreitit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"r1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" reitti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" vaikeuden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syncro, pituus 14 metriä, grade 8C+\nSmooth operator, pituus 11 metriä, grade 7A\nKantti, pituus 38 metriä, grade 6A+\nPieniä askelia, pituus 12 metriä, grade 6A+"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" jos järjestysperusteena on lista tai tuple, järjestetään ensisijaiseti ensimmäisen alkion mukaan, toissijaisesti toisen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"b\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"b\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[('a', 2), ('a', 4), ('b', 0), ('b', 30)]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kiipeilykalliot","tmcname":"osa12-05_kiipeilykalliot/"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kiipeilyreitti"}]},{"type":"text","value":" lisäksi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kiipeilykallio"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilykallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olhava\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suuri leikkaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"36"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsalaisten reitti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"5+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nk2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilykallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nummi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nk3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilykallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nalkkilan släbi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pieniä askelia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Possu ei pidä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6B+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hedelmätarha\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"reitteja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaikein_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olhava, 3 reittiä, vaikein 6B\nNalkkilan slabi 4\nSmooth operator, pituus 9 metriä, grade 7A"}]}]},{"type":"element","tagName":"h2","properties":{"id":"reittien-maaran-mukaan","style":"position:relative;"},"children":[{"type":"text","value":"Reittien määrän mukaan"},{"type":"element","tagName":"a","properties":{"href":"#reittien-maaran-mukaan","ariaLabel":"reittien maaran mukaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reittien_maaran_mukaan"}]},{"type":"text","value":", joka järjestää kiipeilykalliot reittien määrän mukaiseen kasvavaan suuruusjärjestykseen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# k1, k2 ja k3 määritelty kuten edellä"}]},{"type":"text","value":"\nkalliot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kallio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" reittien_maaran_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kalliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nummi, 1 reittiä, vaikein 8C+\nOlhava, 3 reittiä, vaikein 6B\nNalkkilan slabi, 4 reittiä, vaikein 7A"}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaikeimman-reitin-mukaan","style":"position:relative;"},"children":[{"type":"text","value":"Vaikeimman reitin mukaan"},{"type":"element","tagName":"a","properties":{"href":"#vaikeimman-reitin-mukaan","ariaLabel":"vaikeimman reitin mukaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaikeimman_reitin_mukaan"}]},{"type":"text","value":", joka järjestää kiipeilykalliot kalliolta löytyvän vaikeimman reitin mukaiseen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"laskevaan"}]},{"type":"text","value":" suuruusjärjestykseen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# k1, k2 ja k3 määritelty kuten edellä"}]},{"type":"text","value":"\nkalliot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kallio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" vaikeimman_reitin_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kalliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nummi, 1 reittiä, vaikein 8C+\nNalkkilan slabi, 4 reittiä, vaikein 7A\nOlhava, 3 reittiä, vaikein 6B"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lambda-lauseke","style":"position:relative;"},"children":[{"type":"text","value":"Lambda-lauseke"},{"type":"element","tagName":"a","properties":{"href":"#lambda-lauseke","ariaLabel":"lambda lauseke permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lambda-lausekkeen avulla voidaan luoda anonyymi funktio eli funktio, joka muodostetaan sillä hetkellä, kun sitä tarvitaan. Lausekkeen yleinen syntaksi on seuraava:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lambda : "}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi tuplelistan järjestys onnistuisi näin käyttämällä lambda-lauseketta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Funktio luodaan \"lennosta\" lambda-lausekkeella:"}]},{"type":"text","value":"\ntuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lauseke"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lambda alkio: alkio[1]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaa funktiomäärittelyä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"paitsi että lambda-lauseketta käytettäessä funktiolle ei anneta nimeä. Tämän takia muodostettavaa funktiota kutsutaan anonyymiksi funktioksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuten lambdan avulla muodostettava funktio on kuin mikä tahansa muukin funktio. Esimerkiksi seuraava esimerkki järjestää merkkijonot niiden viimeisten merkkien mukaiseen aakkosjärjestykseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Makke\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Markku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" jono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Maija\nMakke\nMikki\nMikko\nMarkku"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mennään vielä pidemmälle: yhdistämällä listakooste ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodi lambda-lausekkeeseen voidaan esimerkiksi järjestää merkkijonot niistä löytyvien vokaalien mukaiseen järjestykseen välittämättä muista merkeistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Makke\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Markku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" jono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"m "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" m "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" m "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aeiouyäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Makke\nMaija\nMarkku\nMikki\nMikko"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anonyymejä funktioita voi hyödyntää Pythonissa monien muidenkin valmiiden funktioiden yhteydessä. Esimerkiksi funktioille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"min"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"max"}]},{"type":"text","value":" voidaan määritellä samalla tavalla parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"key"}]},{"type":"text","value":", jonka perusteella minimi- tai maksimiarvo valitaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä poimitaan levyistä aluksi vanhin ja sitten pisin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Levy"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\"Luokka mallintaa yhtä äänilevyä\"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" esittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kesto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"esittaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" esittaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kesto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kesto\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"esittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"), "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":". "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kesto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" min.\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n l1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nevermind\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nirvana\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1991"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"43"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n l2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Let It Be\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Beatles\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1969"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n l3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Joshua Tree\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"U2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1986"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n levyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"l1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" l2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" l3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhin levy:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"levyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pisin levy: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"levyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kesto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vanhin levy:\nLet It Be (Beatles), 1969. 35 min.\nPisin levy:\nU2 (Joshua Tree), 1986. 50 min."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Palloilijat","tmcname":"osa12-06_palloilijat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Palloilija"}]},{"type":"text","value":", jolla on seuraavat julkiset piirteet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"pelinumero"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtyjen maalien määrä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maalit"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"annettujen syöttöjen määrä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotot"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"peliminuuttien määrä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"minuutit"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita seuraavien tehtävänantojen mukaiset funktiot. Huomaa, että jokaisessa funktiossa palautetaan erityyppiset tiedot."}]},{"type":"element","tagName":"h2","properties":{"id":"eniten-maaleja","style":"position:relative;"},"children":[{"type":"text","value":"Eniten maaleja"},{"type":"element","tagName":"a","properties":{"href":"#eniten-maaleja","ariaLabel":"eniten maaleja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eniten_maaleja"}]},{"type":"text","value":", joka saa parametrikseen listan palloilijoita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa merkkijonona sen pelaajan nimen, joka on tehnyt eniten maaleja."}]},{"type":"element","tagName":"h2","properties":{"id":"eniten-pisteita","style":"position:relative;"},"children":[{"type":"text","value":"Eniten pisteitä"},{"type":"element","tagName":"a","properties":{"href":"#eniten-pisteita","ariaLabel":"eniten pisteita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eniten_pisteita"}]},{"type":"text","value":", joka saa parametrikseen listan palloilijoita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa tuplena sen pelaajan nimen ja pelinumeron, joka on tehnyt yhteensä eniten pisteitä. Pisteisiin lasketaan siis sekä maalit että syötöt."}]},{"type":"element","tagName":"h2","properties":{"id":"vahiten-peliminuutteja","style":"position:relative;"},"children":[{"type":"text","value":"Vähiten peliminuutteja"},{"type":"element","tagName":"a","properties":{"href":"#vahiten-peliminuutteja","ariaLabel":"vahiten peliminuutteja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahiten_minuutteja"}]},{"type":"text","value":", joka saa parametrikseen listan palloilijoita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa sen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Palloilija"}]},{"type":"text","value":"-olion, jolla on vähiten peliminuutteja kaikista pelaajista."}]},{"type":"element","tagName":"h2","properties":{"id":"testiohjelma","style":"position:relative;"},"children":[{"type":"text","value":"Testiohjelma"},{"type":"element","tagName":"a","properties":{"href":"#testiohjelma","ariaLabel":"testiohjelma permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit testata koodisi toimintaa seuraavalla ohjelmalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pelaaja1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kelju Kojootti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"46"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maantiekiitäjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Uka Naakka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelle Peloton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"41"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hessu Hopo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n joukkue "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"pelaaja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_maaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_pisteita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vahiten_minuutteja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen tulisi olla:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kelju Kojootti\n('Uka Naakka', 9)\nPalloilija(nimi=Hessu Hopo, pelinumero=4, maalit=3, syotot=9, minuutit=12)"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktiot-parametreina-omissa-funktioissa","style":"position:relative;"},"children":[{"type":"text","value":"Funktiot parametreina omissa funktioissa"},{"type":"element","tagName":"a","properties":{"href":"#funktiot-parametreina-omissa-funktioissa","ariaLabel":"funktiot parametreina omissa funktioissa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on siis mahdollista välittää viittaus johonkin funktioon toiselle funktiolle. Tarkastellaan vielä esimerkkinä omaa funktiota, joka saa parametrikseen toisen funktion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tyyppivihje callable viittaa funktioon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita_operaatio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"callable"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan välitettyä funktiota"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" b\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorita_operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorita_operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorita_operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"15\n50\n5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorita_operaatio"}]},{"type":"text","value":" lopputulos siis riippuu siitä, mikä funktio sille on välitetty parametrina. Funktioksi kelpaa mikä tahansa funktio (niin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-lauseella määritelty kuin anonyymikin) jolla on kaksi parametria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikkei funktioiden välittäminen parametrina olekaan kaikkein yleisimmin tarvittava operaatio, on se joka tapauksessa hyödyllinen mekanismi. Esimerkiksi seuraava ohjelma kirjoittaa tiedostosta 1 halutut rivit tiedostoon 2. Rivien valintakriteeri annetaan funktiona, joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos rivi tulee kirjoittaa toiseen tiedostoon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kopioi_rivit"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lahde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kohde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kriteeri"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lahde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" lahde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kohde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lahde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poistetaan ensin tyhjät merkit alusta ja lopusta"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" kriteeri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkkejä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos kolmatta parametria ei ole määritelty, kopioidaan kaikki"}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kopioidaan kaikki ei-tyhjät rivit"}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kopioidaan kaikki rivit, joilla on sana \"Python\""}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kopioidaan kaikki rivit, jotka eivät pääty pisteeseen"}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiossa parametrille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kriteeri"}]},{"type":"text","value":" on määritelty oletusarvoksi lambda-lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lambda x: True"}]},{"type":"text","value":", jonka tuottama anonyymi funktio palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" kaikille syötteille. Niinpä oletuksena kopioidaan kaikki rivit tiedostosta toiseen. Jos käyttäjä antaa kolmannelle parametrille arvon, tämä korvaa oletusarvon."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tuotteiden haku","tmcname":"osa12-07_tuotteiden_haku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä käsitellään tupleina esitettäviä tuotteita, jotka on esimerkeissä alustettu muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuotteet"}]},{"type":"text","value":" seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kaali\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisessa tuplessa ensimmäinen alkio siis edustaa nimeä, seuraava hintaa ja kolmas määrää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae(tuotteet: list, kriteeri: callable)"}]},{"type":"text","value":", missä toisena parametrina on funktio, joka saa parametriksi yhden tuotetta edustavan tuplen ja palauttaa totuusarvon. Funktio palauttaa listassa parametrina annetuista tuotteista ne, jotka toteuttavat kriteerin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sopiva kriteeri voisi olla esimerkiksi seuraavanlainen"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta_alle_4_euroa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio siis palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" jos tuotteen hinta on alle 4 euroa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"haku"}]},{"type":"text","value":" toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hae"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta_alle_4_euroa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('omena', 3.95, 3)\n('kaali', 0.99, 1)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kriteerifunktion voi myös määritellä lambda-funktiona. Seuraava käyttää funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"haku"}]},{"type":"text","value":" etsimään tuotteet, joita on vähintään 11 kappaletta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hae"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('banaani', 5.95, 12)\n('vesimeloni', 4.95, 22)"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat järjestää listoja eri kriteerien mukaan
    • \n
    • Tiedät mitä tarkoitetaan lambda-lausekkeella
    • \n
    • Osaat hyödyntää lambda-lauseketta myös muiden Pythonin funktioiden kanssa
    • \n
    • Osaat välittää funktion parametrina funktiolle
    • \n

    Olemme jo aikaisemmin käyttäneet metodia sort ja funktiota sorted järjestämään listoja luonnolliseen järjestykseen. Metodit toimivat sellaisenaan hyvin luvuista ja merkkijonoista koostuvien listojen kanssa, mutta jos lista sisältää monimutkaisempia alkioita, Python ei välttämättä järjestä listaa niin kuin ohjelmoija toivoisi.

    Esimerkiksi lista tupleja järjestetään oletuksena jokaisen tuplen ensimmäisen alkion perusteella:

    tuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\ntuotteet.sort()\n\nfor tuote in tuotteet:\n    print(tuote)

    ('appelsiini', 4.5)\n('banaani', 5.95)\n('omena', 3.95)\n('vesimeloni', 4.95)

    Mitä jos haluaisimme järjestää tuotelistan hinnan perusteella?

    Funktiot parametrina

    Järjestysmetodille tai -funktiolle voidaan antaa toisena parametrina järjestyksen määräävä avain. Avaimeksi annetaan funktio, joka kertoo, miten yksittäisen alkion arvo määritetään. Python kutsuu tätä funktiota järjestämisen aikana alkioiden vertailemiseen.

    Esimerkiksi:

    def hintajarjestys(alkio: tuple):\n    # Palautetaan tuplen toinen alkio eli hinta\n    return alkio[1]\n\nif __name__ == \"__main__\":\n    tuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\n    # Hyödynnetään funktiota hintajarjestys\n    tuotteet.sort(key=hintajarjestys)\n\n    for tuote in tuotteet:\n        print(tuote)

    ('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)

    Nyt ohjelma järjestää listan hinnan mukaiseen järjestykseen. Mutta mitä ohjelmassa oikeastaan tapahtuu?

    Funktion hintajarjestys määrittely on melko yksinkertainen: se saa parametrikseen yhden alkion ja palauttaa alkiolle arvon - tässä tapauksessa tuplen toisen alkion (joka esimerkissämme esittää tuotteen hintaa). Tarkastellaan kuitenkin lähemmin järjestysmetodia kutsuvaa riviä:

    tuotteet.sort(key=hintajarjestys)

    Rivillä annetaan metodille sort parametriksi funktio. Ei siis funktion paluuarvoa, vaan viittaus funktioon. Järjestysmetodi kutsuu tätä funktiota jokaiselle alkiolle.

    Kutsut nähdään selkeästi lisäämällä vertailufunktioomme ylimääräinen tulostuslause:

    def hintajarjestys(alkio: tuple):\n    # Tulostetaan alkio\n    print(f\"Kutsuttiin hintajarjestys({alkio})\")\n\n    # Palautetaan tuplen toinen alkio eli hinta\n    return alkio[1]\n\n\ntuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\n# Hyödynnetään funktiota hintajarjestys\ntuotteet.sort(key=hintajarjestys)\n\nfor tuote in tuotteet:\n    print(tuote)

    Kutsuttiin hintajarjestys(('banaani', 5.95))\nKutsuttiin hintajarjestys(('omena', 3.95))\nKutsuttiin hintajarjestys(('appelsiini', 4.5))\nKutsuttiin hintajarjestys(('vesimeloni', 4.95))\n('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)

    Järjestys saadaan käännettyä päinvastaiseksi hyödyntämällä sekä metodista sort että funktiosta sorted löytyvää toista parametria reverse:

    tuotteet.sort(key=hintajarjestys, reverse=True)\n\nt2 = sorted(tuotteet, key=hintajarjestys, reverse=True)

    Funktion sisällä määritelty funktio

    Jos haluaisimme siirtää edellisessä esimerkissä tehdyn järjestämisen omaan funktioonsa jarjesta_hinnan_mukaan, voisimme toteuttaa sen seuraavasti:

    def hintajarjestys(alkio: tuple):\n    return alkio[1]\n\ndef jarjesta_hinnan_mukaan(alkiot: list):\n    # käytetään täällä funktiota hintajarjestys\n    return sorted(alkiot, key=hintajarjestys)\n\ntuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\nfor tuote in jarjesta_hinnan_mukaan(tuotteet):\n    print(tuote)

    Jos järjestämisen käyttämää apufunktiota hintajarjestys ei käytetä missään muussa kohtaa ohjelmaa kuin funktiossa jarjesta_hinnan_mukaan, sen määrittely voitaisiin siirtää funktion sisälle:

    def jarjesta_hinnan_mukaan(alkiot: list):\n    # määritellään apufunktio tällä kertaa funktion sisällä\n    def hintajarjestys(alkio: tuple):\n        return alkio[1]\n\n    return sorted(alkiot, key=hintajarjestys)

    Tee funktio jarjesta_varastosaldon_mukaan(alkiot: list). Funktio saa parametrina listan tupleja, joissa kolmantena alkiona on tuotteiden varastosaldo. Funktio järjestää parametrinaan saamat tuotteet varastosaldojen mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan.

    Funktio toimii seuraavasti:

    tuotteet = [(\"banaani\", 5.95, 12), (\"omena\", 3.95, 3), (\"appelsiini\", 4.50, 2), (\"vesimeloni\", 4.95, 22)]\n\nfor tuote in jarjesta_varastosaldon_mukaan(tuotteet):\n    print(f\"{tuote[0]} {tuote[2]} kpl\")
    \nappelsiini 2 kpl\nomena 3 kpl\nbanaani 12 kpl\nvesimeloni 22 kpl\n

    Tee funktio jarjesta_tuotantokausien_mukaan(alkiot: list). Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne tuotantokausien lukumäärän mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan.

    Funktio toimii seuraavasti:

    sarjat = [{ \"nimi\": \"Dexter\", \"pisteet\" : 8.6, \"kausia\":9 }, { \"nimi\": \"Friends\", \"pisteet\" : 8.9, \"kausia\":10 },  { \"nimi\": \"Simpsons\", \"pisteet\" : 8.7, \"kausia\":32 }  ]\n\nfor sarja in jarjesta_tuotantokausien_mukaan(sarjat):\n    print(f\"{sarja['nimi']}  {sarja['kausia']} tuotantokautta\")
    \nDexter 9 tuotantokautta\nFriends 10 tuotantokautta\nSimpsons 32 tuotantokautta\n

    Tee funktio jarjesta_pisteiden_mukaan(alkiot: list). Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne pisteiden mukaiseen laskevaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan.

    sarjat = [{ \"nimi\": \"Dexter\", \"pisteet\" : 8.6, \"kausia\":9 }, { \"nimi\": \"Friends\", \"pisteet\" : 8.9, \"kausia\":10 },  { \"nimi\": \"Simpsons\", \"pisteet\" : 8.7, \"kausia\":32 }  ]\n\nprint(\"IMDB:n mukainen pistemäärä\")\nfor sarja in jarjesta_pisteiden_mukaan(sarjat):\n    print(f\"{sarja['nimi']}  {sarja['pisteet']}\")
    \nIMDB:n mukainen pistemäärä\nFriends 8.9\nSimpsons 8.7\nDexter 8.6\n

    Omien olioiden alkioiden järjestäminen

    Kirjoitetaan samaa periaatetta hyödyntäen ohjelma, joka järjestää listan omasta Opiskelija-luokasta luotuja olioita kahden eri kriteerin avulla:

    class Opiskelija:\n    \"\"\" Luokka mallintaa yhtä opiskelijaa \"\"\"\n    def __init__(self, nimi: str, tunnus: str, pisteet: int):\n        self.nimi = nimi\n        self.tunnus = tunnus\n        self.pisteet = pisteet\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.tunnus}), {self.pisteet} op.\"\n\n\ndef tunnuksen_mukaan(alkio: Opiskelija):\n    return alkio.tunnus\n\ndef pisteiden_mukaan(alkio: Opiskelija):\n    return alkio.pisteet\n\n\nif __name__ == \"__main__\":\n    o1 = Opiskelija(\"Aapeli\", \"a123\", 220)\n    o2 = Opiskelija(\"Maija\", \"m321\", 210)\n    o3 = Opiskelija(\"Anna\", \"a999\", 131)\n\n    opiskelijat = [o1, o2, o3]\n\n    print(\"Tunnuksen mukaan:\")\n    for opiskelija in sorted(opiskelijat, key=tunnuksen_mukaan):\n        print(opiskelija)\n\n    print()\n\n    print(\"Pisteiden mukaan:\")\n    for opiskelija in sorted(opiskelijat, key=pisteiden_mukaan):\n        print(opiskelija)

    Aapeli (a123), 220 op.\nAnna (a999), 131 op.\nMaija (m321), 210 op.

    Pisteiden mukaan:\nAnna (a999), 131 op.\nMaija (m321), 210 op.\nAapeli (a123), 220 op.

    Järjestäminen toimii niinkuin pitää. Jos olioille arvon antavia funktioita tunnuksen_mukaan ja pisteiden_mukaan ei tarvita muuten, voimme kuitenkin vielä yksinkertaistaa ohjelmaa.

    Tehtäväpohjan mukana tulee valmis luokka Kiipeilyreitti, jota käytetään seuraavasti:

    reitti1 = Kiipeilyreitti(\"Kantti\", 38, \"6A+\")\nreitti2 = Kiipeilyreitti(\"Smooth operator\", 11, \"7A\")\nreitti3 = Kiipeilyreitti(\"Syncro\", 14, \"8C+\")\n\n\nprint(reitti1)\nprint(reitti2)\nprint(reitti3.nimi, reitti3.pituus, reitti3.grade)

    Kantti, pituus 38 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A\nSyncro 14 8C+

    Pituuden mukainen järjestys

    Tee funktio pituuden_mukaan(reitit: list) joka palauttaa kiipeilyreitit pituuden mukaan käänteisessä järjestyksessä.

    Funktio toimii seuraavasti:

    r1 = Kiipeilyreitti(\"Kantti\", 38, \"6A+\")\nr2 = Kiipeilyreitti(\"Smooth operator\", 11, \"7A\")\nr3 = Kiipeilyreitti(\"Syncro\", 14, \"8C+\")\nr4 = Kiipeilyreitti(\"Pieniä askelia\", 12, \"6A+\")\n\nreitit = [r1, r2, r3, r4]\n\nfor reitti in pituuden_mukaan(reitit):\n    print(reitti)

    Kantti, pituus 38 metriä, grade 6A+\nSyncro, pituus 14 metriä, grade 8C+\nPieniä askelia, pituus 12 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A

    Vaikeuden mukainen järjestys

    Tee funktio vaikeuden_mukaan(reitit: list) joka palauttaa kiipeilyreitit vaikeuden (eli graden) mukaan laskevassa järjestyksessä. Jos reittien vaikeus on sama, ratkaisee pituus vaikeuden. Pidempi on vaikeampi. Kiipeilyreittien vaikeusasteikko on 4, 4+, 5, 5+, 6A, 6A+, ... eli käytännössä se seuraa aakkosjärjestystä.

    Funktio toimii seuraavasti:

    r1 = Kiipeilyreitti(\"Kantti\", 38, \"6A+\")\nr2 = Kiipeilyreitti(\"Smooth operator\", 11, \"7A\")\nr3 = Kiipeilyreitti(\"Syncro\", 14, \"8C+\")\nr4 = Kiipeilyreitti(\"Pieniä askelia\", 12, \"6A+\")\n\nreitit = [r1, r2, r3, r4]\nfor reitti in vaikeuden_mukaan(reitit):\n    print(reitti)

    Syncro, pituus 14 metriä, grade 8C+\nSmooth operator, pituus 11 metriä, grade 7A\nKantti, pituus 38 metriä, grade 6A+\nPieniä askelia, pituus 12 metriä, grade 6A+

    Vihje jos järjestysperusteena on lista tai tuple, järjestetään ensisijaiseti ensimmäisen alkion mukaan, toissijaisesti toisen:

    lista = [(\"a\", 4),(\"a\", 2),(\"b\", 30), (\"b\", 0) ]\nprint(sorted(lista))

    [('a', 2), ('a', 4), ('b', 0), ('b', 30)]

    Tehtäväpohjasta löytyy luokan Kiipeilyreitti lisäksi luokka Kiipeilykallio.

    k1 = Kiipeilykallio(\"Olhava\")\nk1.lisaa_reitti(Kiipeilyreitti(\"Kantti\", 38, \"6A+\"))\nk1.lisaa_reitti(Kiipeilyreitti(\"Suuri leikkaus\", 36, \"6B\"))\nk1.lisaa_reitti(Kiipeilyreitti(\"Ruotsalaisten reitti\", 42, \"5+\"))\n\nk2 = Kiipeilykallio(\"Nummi\")\nk2.lisaa_reitti(Kiipeilyreitti(\"Syncro\", 14, \"8C+\"))\n\nk3 = Kiipeilykallio(\"Nalkkilan släbi\")\nk3.lisaa_reitti(Kiipeilyreitti(\"Pieniä askelia\", 12, \"6A+\"))\nk3.lisaa_reitti(Kiipeilyreitti(\"Smooth operator\", 11, \"7A\"))\nk3.lisaa_reitti(Kiipeilyreitti(\"Possu ei pidä\", 12 , \"6B+\"))\nk3.lisaa_reitti(Kiipeilyreitti(\"Hedelmätarha\", 8, \"6A\"))\n\nprint(k1)\nprint(k3.nimi, k3.reitteja())\nprint(k3.vaikein_reitti())

    Olhava, 3 reittiä, vaikein 6B\nNalkkilan slabi 4\nSmooth operator, pituus 9 metriä, grade 7A

    Reittien määrän mukaan

    Tee funktio reittien_maaran_mukaan, joka järjestää kiipeilykalliot reittien määrän mukaiseen kasvavaan suuruusjärjestykseen.

    # k1, k2 ja k3 määritelty kuten edellä\nkalliot = [k1, k2, k3]\nfor kallio in reittien_maaran_mukaan(kalliot):\n    print(kallio)\n

    Nummi, 1 reittiä, vaikein 8C+\nOlhava, 3 reittiä, vaikein 6B\nNalkkilan slabi, 4 reittiä, vaikein 7A

    Vaikeimman reitin mukaan

    Tee funktio vaikeimman_reitin_mukaan, joka järjestää kiipeilykalliot kalliolta löytyvän vaikeimman reitin mukaiseen laskevaan suuruusjärjestykseen.

    # k1, k2 ja k3 määritelty kuten edellä\nkalliot = [k1, k2, k3]\nfor kallio in vaikeimman_reitin_mukaan(kalliot):\n    print(kallio)\n

    Nummi, 1 reittiä, vaikein 8C+\nNalkkilan slabi, 4 reittiä, vaikein 7A\nOlhava, 3 reittiä, vaikein 6B

    Lambda-lauseke

    Lambda-lausekkeen avulla voidaan luoda anonyymi funktio eli funktio, joka muodostetaan sillä hetkellä, kun sitä tarvitaan. Lausekkeen yleinen syntaksi on seuraava:

    lambda <parametrit> : <lauseke>

    Esimerkiksi tuplelistan järjestys onnistuisi näin käyttämällä lambda-lauseketta:

    tuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\n# Funktio luodaan \"lennosta\" lambda-lausekkeella:\ntuotteet.sort(key=lambda alkio: alkio[1])\n\nfor tuote in tuotteet:\n    print(tuote)

    ('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)

    Lauseke

    lambda alkio: alkio[1]

    vastaa funktiomäärittelyä

    \ndef hinta(alkio):\n    return alkio[1]

    paitsi että lambda-lauseketta käytettäessä funktiolle ei anneta nimeä. Tämän takia muodostettavaa funktiota kutsutaan anonyymiksi funktioksi.

    Muuten lambdan avulla muodostettava funktio on kuin mikä tahansa muukin funktio. Esimerkiksi seuraava esimerkki järjestää merkkijonot niiden viimeisten merkkien mukaiseen aakkosjärjestykseen:

    mjonot = [\"Mikko\", \"Makke\", \"Maija\", \"Markku\", \"Mikki\"]\n\nfor jono in sorted(mjonot, key=lambda jono: jono[-1]):\n    print(jono)

    Maija\nMakke\nMikki\nMikko\nMarkku

    Mennään vielä pidemmälle: yhdistämällä listakooste ja join-metodi lambda-lausekkeeseen voidaan esimerkiksi järjestää merkkijonot niistä löytyvien vokaalien mukaiseen järjestykseen välittämättä muista merkeistä:

    mjonot = [\"Mikko\", \"Makke\", \"Maija\", \"Markku\", \"Mikki\"]\n\nfor jono in sorted(mjonot, key=lambda jono: \"\".join([m for m in jono if m in \"aeiouyäö\"])):\n    print(jono)

    Makke\nMaija\nMarkku\nMikki\nMikko

    Anonyymejä funktioita voi hyödyntää Pythonissa monien muidenkin valmiiden funktioiden yhteydessä. Esimerkiksi funktioille min ja max voidaan määritellä samalla tavalla parametri key, jonka perusteella minimi- tai maksimiarvo valitaan.

    Esimerkissä poimitaan levyistä aluksi vanhin ja sitten pisin:

    \nclass Levy:\n    \"\"\"Luokka mallintaa yhtä äänilevyä\"\"\"\n    def __init__(self, nimi: str, esittaja: str, vuosi: int, kesto: int):\n        self.nimi = nimi\n        self.esittaja = esittaja\n        self.vuosi = vuosi\n        self.kesto = kesto\n\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.esittaja}), {self.vuosi}. {self.kesto} min.\"\n\nif __name__ == \"__main__\":\n    l1 = Levy(\"Nevermind\", \"Nirvana\", 1991, 43)\n    l2 = Levy(\"Let It Be\", \"Beatles\", 1969, 35)\n    l3 = Levy(\"Joshua Tree\", \"U2\", 1986, 50)\n\n    levyt = [l1, l2, l3]\n\n\n    print(\"Vanhin levy:\")\n    print(min(levyt, key=lambda levy: levy.vuosi))\n\n    print(\"Pisin levy: \")\n    print(max(levyt, key=lambda levy: levy.kesto))

    Vanhin levy:\nLet It Be (Beatles), 1969. 35 min.\nPisin levy:\nU2 (Joshua Tree), 1986. 50 min.

    Tehtäväpohjasta löytyy luokka Palloilija, jolla on seuraavat julkiset piirteet:

      \n
    • nimi
    • \n
    • pelinumero
    • \n
    • tehtyjen maalien määrä maalit
    • \n
    • annettujen syöttöjen määrä syotot
    • \n
    • peliminuuttien määrä minuutit
    • \n

    Kirjoita seuraavien tehtävänantojen mukaiset funktiot. Huomaa, että jokaisessa funktiossa palautetaan erityyppiset tiedot.

    Eniten maaleja

    Kirjoita funktio eniten_maaleja, joka saa parametrikseen listan palloilijoita.

    Funktio palauttaa merkkijonona sen pelaajan nimen, joka on tehnyt eniten maaleja.

    Eniten pisteitä

    Kirjoita funktio eniten_pisteita, joka saa parametrikseen listan palloilijoita.

    Funktio palauttaa tuplena sen pelaajan nimen ja pelinumeron, joka on tehnyt yhteensä eniten pisteitä. Pisteisiin lasketaan siis sekä maalit että syötöt.

    Vähiten peliminuutteja

    Kirjoita funktio vahiten_minuutteja, joka saa parametrikseen listan palloilijoita.

    Funktio palauttaa sen Palloilija-olion, jolla on vähiten peliminuutteja kaikista pelaajista.

    Testiohjelma

    Voit testata koodisi toimintaa seuraavalla ohjelmalla:

    if __name__ == \"__main__\":\n    pelaaja1 = Palloilija(\"Kelju Kojootti\", 13, 5, 12, 46)\n    pelaaja2 = Palloilija(\"Maantiekiitäjä\", 7, 2, 26, 55)\n    pelaaja3 = Palloilija(\"Uka Naakka\", 9, 1, 32, 26)\n    pelaaja4 = Palloilija(\"Pelle Peloton\", 12, 1, 11, 41)\n    pelaaja5 = Palloilija(\"Hessu Hopo\", 4, 3, 9, 12)\n\n    joukkue = [pelaaja1, pelaaja2, pelaaja3, pelaaja4, pelaaja5]\n    print(eniten_maaleja(joukkue))\n    print(eniten_pisteita(joukkue))\n    print(vahiten_minuutteja(joukkue))

    Tulostuksen tulisi olla:

    Kelju Kojootti\n('Uka Naakka', 9)\nPalloilija(nimi=Hessu Hopo, pelinumero=4, maalit=3, syotot=9, minuutit=12)

    Funktiot parametreina omissa funktioissa

    Pythonissa on siis mahdollista välittää viittaus johonkin funktioon toiselle funktiolle. Tarkastellaan vielä esimerkkinä omaa funktiota, joka saa parametrikseen toisen funktion:

    # tyyppivihje callable viittaa funktioon\ndef suorita_operaatio(operaatio: callable):\n    # Kutsutaan välitettyä funktiota\n    return operaatio(10, 5)\n\ndef summa(a: int, b: int):\n    return a + b\n\ndef tulo(a: int, b: int):\n    return a * b\n\n\nif __name__ == \"__main__\":\n    print(suorita_operaatio(summa))\n    print(suorita_operaatio(tulo))\n    print(suorita_operaatio(lambda x,y: x - y))\n

    15\n50\n5

    Funktion suorita_operaatio lopputulos siis riippuu siitä, mikä funktio sille on välitetty parametrina. Funktioksi kelpaa mikä tahansa funktio (niin def-lauseella määritelty kuin anonyymikin) jolla on kaksi parametria.

    Vaikkei funktioiden välittäminen parametrina olekaan kaikkein yleisimmin tarvittava operaatio, on se joka tapauksessa hyödyllinen mekanismi. Esimerkiksi seuraava ohjelma kirjoittaa tiedostosta 1 halutut rivit tiedostoon 2. Rivien valintakriteeri annetaan funktiona, joka palauttaa True, jos rivi tulee kirjoittaa toiseen tiedostoon:

    def kopioi_rivit(lahde_nimi: str, kohde_nimi: str, kriteeri= lambda x: True):\n    with open(lahde_nimi) as lahde, open(kohde_nimi, \"w\") as kohde:\n        for rivi in lahde:\n            # Poistetaan ensin tyhjät merkit alusta ja lopusta\n            rivi = rivi.strip()\n\n            if kriteeri(rivi):\n                kohde.write(rivi + \"\\n\")\n\n# Esimerkkejä\nif __name__ == \"__main__\":\n    # Jos kolmatta parametria ei ole määritelty, kopioidaan kaikki\n    kopioi_rivit(\"eka.txt\", \"toka.txt\")\n\n    # Kopioidaan kaikki ei-tyhjät rivit\n    kopioi_rivit(\"eka.txt\", \"toka.txt\", lambda rivi: len(rivi) > 0)\n\n    # Kopioidaan kaikki rivit, joilla on sana \"Python\"\n    kopioi_rivit(\"eka.txt\", \"toka.txt\", lambda rivi: \"Python\" in rivi)\n\n    # Kopioidaan kaikki rivit, jotka eivät pääty pisteeseen\n    kopioi_rivit(\"eka.txt\", \"toka.txt\", lambda rivi: rivi[-1] != \".\")

    Funktiossa parametrille kriteeri on määritelty oletusarvoksi lambda-lauseke lambda x: True, jonka tuottama anonyymi funktio palauttaa arvon True kaikille syötteille. Niinpä oletuksena kopioidaan kaikki rivit tiedostosta toiseen. Jos käyttäjä antaa kolmannelle parametrille arvon, tämä korvaa oletusarvon.

    Tässä tehtävässä käsitellään tupleina esitettäviä tuotteita, jotka on esimerkeissä alustettu muuttujaan tuotteet seuraavasti:

    tuotteet = [(\"banaani\", 5.95, 12), (\"omena\", 3.95, 3), (\"appelsiini\", 4.50, 2), (\"vesimeloni\", 4.95, 22), (\"Kaali\", 0.99, 1)]

    Jokaisessa tuplessa ensimmäinen alkio siis edustaa nimeä, seuraava hintaa ja kolmas määrää.

    Toteuta funktio hae(tuotteet: list, kriteeri: callable), missä toisena parametrina on funktio, joka saa parametriksi yhden tuotetta edustavan tuplen ja palauttaa totuusarvon. Funktio palauttaa listassa parametrina annetuista tuotteista ne, jotka toteuttavat kriteerin.

    Sopiva kriteeri voisi olla esimerkiksi seuraavanlainen

    def hinta_alle_4_euroa(tuote):\n    return tuote[1] < 4

    Funktio siis palauttaa True jos tuotteen hinta on alle 4 euroa.

    Funktio haku toimii seuraavasti:

    for tuote in hae(tuotteet, hinta_alle_4_euroa):\n    print(tuote)

    ('omena', 3.95, 3)\n('kaali', 0.99, 1)

    Kriteerifunktion voi myös määritellä lambda-funktiona. Seuraava käyttää funktiota haku etsimään tuotteet, joita on vähintään 11 kappaletta:

    for tuote in hae(tuotteet, lambda t: t[2]>10):\n    print(tuote)

    ('banaani', 5.95, 12)\n('vesimeloni', 4.95, 22)

    ","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/1-funktio-parametrina.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat järjestää listoja eri kriteerien mukaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan lambda-lausekkeella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää lambda-lauseketta myös muiden Pythonin funktioiden kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat välittää funktion parametrina funktiolle"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme jo aikaisemmin käyttäneet metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" ja funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" järjestämään listoja luonnolliseen järjestykseen. Metodit toimivat sellaisenaan hyvin luvuista ja merkkijonoista koostuvien listojen kanssa, mutta jos lista sisältää monimutkaisempia alkioita, Python ei välttämättä järjestä listaa niin kuin ohjelmoija toivoisi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi lista tupleja järjestetään oletuksena jokaisen tuplen ensimmäisen alkion perusteella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('appelsiini', 4.5)\n('banaani', 5.95)\n('omena', 3.95)\n('vesimeloni', 4.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä jos haluaisimme järjestää tuotelistan hinnan perusteella?"}]},{"type":"element","tagName":"h2","properties":{"id":"funktiot-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Funktiot parametrina"},{"type":"element","tagName":"a","properties":{"href":"#funktiot-parametrina","ariaLabel":"funktiot parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järjestysmetodille tai -funktiolle voidaan antaa toisena parametrina järjestyksen määräävä avain. Avaimeksi annetaan funktio, joka kertoo, miten yksittäisen alkion arvo määritetään. Python kutsuu tätä funktiota järjestämisen aikana alkioiden vertailemiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Palautetaan tuplen toinen alkio eli hinta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Hyödynnetään funktiota hintajarjestys"}]},{"type":"text","value":"\n tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ohjelma järjestää listan hinnan mukaiseen järjestykseen. Mutta mitä ohjelmassa oikeastaan tapahtuu?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"text","value":" määrittely on melko yksinkertainen: se saa parametrikseen yhden alkion ja palauttaa alkiolle arvon - tässä tapauksessa tuplen toisen alkion (joka esimerkissämme esittää tuotteen hintaa). Tarkastellaan kuitenkin lähemmin järjestysmetodia kutsuvaa riviä:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuotteet.sort(key=hintajarjestys)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivillä annetaan metodille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" parametriksi funktio. Ei siis funktion paluuarvoa, vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus funktioon"}]},{"type":"text","value":". Järjestysmetodi kutsuu tätä funktiota jokaiselle alkiolle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsut nähdään selkeästi lisäämällä vertailufunktioomme ylimääräinen tulostuslause:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan alkio"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kutsuttiin hintajarjestys("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Palautetaan tuplen toinen alkio eli hinta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n\ntuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Hyödynnetään funktiota hintajarjestys"}]},{"type":"text","value":"\ntuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsuttiin hintajarjestys(('banaani', 5.95))\nKutsuttiin hintajarjestys(('omena', 3.95))\nKutsuttiin hintajarjestys(('appelsiini', 4.5))\nKutsuttiin hintajarjestys(('vesimeloni', 4.95))\n('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järjestys saadaan käännettyä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"päinvastaiseksi"}]},{"type":"text","value":" hyödyntämällä sekä metodista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" että funktiosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" löytyvää toista parametria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reverse"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reverse"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reverse"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-sisalla-maaritelty-funktio","style":"position:relative;"},"children":[{"type":"text","value":"Funktion sisällä määritelty funktio"},{"type":"element","tagName":"a","properties":{"href":"#funktion-sisalla-maaritelty-funktio","ariaLabel":"funktion sisalla maaritelty funktio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluaisimme siirtää edellisessä esimerkissä tehdyn järjestämisen omaan funktioonsa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"text","value":", voisimme toteuttaa sen seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään täällä funktiota hintajarjestys"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_hinnan_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos järjestämisen käyttämää apufunktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"text","value":" ei käytetä missään muussa kohtaa ohjelmaa kuin funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"text","value":", sen määrittely voitaisiin siirtää funktion sisälle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"jarjesta_hinnan_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään apufunktio tällä kertaa funktion sisällä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hintajarjestys"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"hintajarjestys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Järjestys varastosaldon mukaan","tmcname":"osa12-01_varastosaldo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_varastosaldon_mukaan(alkiot: list)"}]},{"type":"text","value":". Funktio saa parametrina listan tupleja, joissa kolmantena alkiona on tuotteiden varastosaldo. Funktio järjestää parametrinaan saamat tuotteet varastosaldojen mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_varastosaldon_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\nappelsiini 2 kpl\nomena 3 kpl\nbanaani 12 kpl\nvesimeloni 22 kpl\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Järjestys tuotantokausien mukaan","tmcname":"osa12-02_tuotantokaudet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_tuotantokausien_mukaan(alkiot: list)"}]},{"type":"text","value":". Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne tuotantokausien lukumäärän mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sarjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Friends\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Simpsons\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_tuotantokausien_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'nimi'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'kausia'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" tuotantokautta\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\nDexter 9 tuotantokautta\nFriends 10 tuotantokautta\nSimpsons 32 tuotantokautta\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Järjestys pisteiden mukaan","tmcname":"osa12-03_pisteiden_mukaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jarjesta_pisteiden_mukaan(alkiot: list)"}]},{"type":"text","value":". Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pisteiden mukaiseen laskevaan järjestykseen"}]},{"type":"text","value":". Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sarjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Friends\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Simpsons\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pisteet\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kausia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IMDB:n mukainen pistemäärä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jarjesta_pisteiden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'nimi'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'pisteet'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\nIMDB:n mukainen pistemäärä\nFriends 8.9\nSimpsons 8.7\nDexter 8.6\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"omien-olioiden-alkioiden-jarjestaminen","style":"position:relative;"},"children":[{"type":"text","value":"Omien olioiden alkioiden järjestäminen"},{"type":"element","tagName":"a","properties":{"href":"#omien-olioiden-alkioiden-jarjestaminen","ariaLabel":"omien olioiden alkioiden jarjestaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoitetaan samaa periaatetta hyödyntäen ohjelma, joka järjestää listan omasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-luokasta luotuja olioita kahden eri kriteerin avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa yhtä opiskelijaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tunnus\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"), "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" op.\""}]}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tunnuksen_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tunnus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisteiden_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n o1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapeli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"220"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n o2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"m321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"210"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n o3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"131"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"o1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" o2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" o3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tunnuksen mukaan:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"tunnuksen_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pisteiden mukaan:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"pisteiden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aapeli (a123), 220 op.\nAnna (a999), 131 op.\nMaija (m321), 210 op."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pisteiden mukaan:\nAnna (a999), 131 op.\nMaija (m321), 210 op.\nAapeli (a123), 220 op."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järjestäminen toimii niinkuin pitää. Jos olioille arvon antavia funktioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnuksen_mukaan"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisteiden_mukaan"}]},{"type":"text","value":" ei tarvita muuten, voimme kuitenkin vielä yksinkertaistaa ohjelmaa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kiipeilyreitti","tmcname":"osa12-04_kiipeilyreitti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee valmis luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kiipeilyreitti"}]},{"type":"text","value":", jota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"reitti1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nreitti2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nreitti3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reitti3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" reitti3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"grade"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kantti, pituus 38 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A\nSyncro 14 8C+"}]}]},{"type":"element","tagName":"h2","properties":{"id":"pituuden-mukainen-jarjestys","style":"position:relative;"},"children":[{"type":"text","value":"Pituuden mukainen järjestys"},{"type":"element","tagName":"a","properties":{"href":"#pituuden-mukainen-jarjestys","ariaLabel":"pituuden mukainen jarjestys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituuden_mukaan(reitit: list)"}]},{"type":"text","value":" joka palauttaa kiipeilyreitit pituuden mukaan käänteisessä järjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"r1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pieniä askelia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nreitit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"r1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" reitti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pituuden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kantti, pituus 38 metriä, grade 6A+\nSyncro, pituus 14 metriä, grade 8C+\nPieniä askelia, pituus 12 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A"}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaikeuden-mukainen-jarjestys","style":"position:relative;"},"children":[{"type":"text","value":"Vaikeuden mukainen järjestys"},{"type":"element","tagName":"a","properties":{"href":"#vaikeuden-mukainen-jarjestys","ariaLabel":"vaikeuden mukainen jarjestys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaikeuden_mukaan(reitit: list)"}]},{"type":"text","value":" joka palauttaa kiipeilyreitit vaikeuden (eli graden) mukaan laskevassa järjestyksessä. Jos reittien vaikeus on sama, ratkaisee pituus vaikeuden. Pidempi on vaikeampi. Kiipeilyreittien vaikeusasteikko on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"4, 4+, 5, 5+, 6A, 6A+, ..."}]},{"type":"text","value":" eli käytännössä se seuraa aakkosjärjestystä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"r1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nr4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pieniä askelia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nreitit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"r1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" r4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" reitti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" vaikeuden_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syncro, pituus 14 metriä, grade 8C+\nSmooth operator, pituus 11 metriä, grade 7A\nKantti, pituus 38 metriä, grade 6A+\nPieniä askelia, pituus 12 metriä, grade 6A+"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" jos järjestysperusteena on lista tai tuple, järjestetään ensisijaiseti ensimmäisen alkion mukaan, toissijaisesti toisen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"b\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"b\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[('a', 2), ('a', 4), ('b', 0), ('b', 30)]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kiipeilykalliot","tmcname":"osa12-05_kiipeilykalliot/"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kiipeilyreitti"}]},{"type":"text","value":" lisäksi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kiipeilykallio"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilykallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olhava\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kantti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suuri leikkaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"36"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsalaisten reitti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"5+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nk2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilykallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nummi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syncro\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"8C+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nk3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kiipeilykallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nalkkilan släbi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pieniä askelia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Smooth operator\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"7A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Possu ei pidä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6B+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kiipeilyreitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hedelmätarha\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"6A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"reitteja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaikein_reitti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olhava, 3 reittiä, vaikein 6B\nNalkkilan slabi 4\nSmooth operator, pituus 9 metriä, grade 7A"}]}]},{"type":"element","tagName":"h2","properties":{"id":"reittien-maaran-mukaan","style":"position:relative;"},"children":[{"type":"text","value":"Reittien määrän mukaan"},{"type":"element","tagName":"a","properties":{"href":"#reittien-maaran-mukaan","ariaLabel":"reittien maaran mukaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reittien_maaran_mukaan"}]},{"type":"text","value":", joka järjestää kiipeilykalliot reittien määrän mukaiseen kasvavaan suuruusjärjestykseen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# k1, k2 ja k3 määritelty kuten edellä"}]},{"type":"text","value":"\nkalliot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kallio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" reittien_maaran_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kalliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nummi, 1 reittiä, vaikein 8C+\nOlhava, 3 reittiä, vaikein 6B\nNalkkilan slabi, 4 reittiä, vaikein 7A"}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaikeimman-reitin-mukaan","style":"position:relative;"},"children":[{"type":"text","value":"Vaikeimman reitin mukaan"},{"type":"element","tagName":"a","properties":{"href":"#vaikeimman-reitin-mukaan","ariaLabel":"vaikeimman reitin mukaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaikeimman_reitin_mukaan"}]},{"type":"text","value":", joka järjestää kiipeilykalliot kalliolta löytyvän vaikeimman reitin mukaiseen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"laskevaan"}]},{"type":"text","value":" suuruusjärjestykseen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# k1, k2 ja k3 määritelty kuten edellä"}]},{"type":"text","value":"\nkalliot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kallio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" vaikeimman_reitin_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kalliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nummi, 1 reittiä, vaikein 8C+\nNalkkilan slabi, 4 reittiä, vaikein 7A\nOlhava, 3 reittiä, vaikein 6B"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lambda-lauseke","style":"position:relative;"},"children":[{"type":"text","value":"Lambda-lauseke"},{"type":"element","tagName":"a","properties":{"href":"#lambda-lauseke","ariaLabel":"lambda lauseke permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lambda-lausekkeen avulla voidaan luoda anonyymi funktio eli funktio, joka muodostetaan sillä hetkellä, kun sitä tarvitaan. Lausekkeen yleinen syntaksi on seuraava:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lambda : "}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi tuplelistan järjestys onnistuisi näin käyttämällä lambda-lauseketta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Funktio luodaan \"lennosta\" lambda-lausekkeella:"}]},{"type":"text","value":"\ntuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lauseke"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lambda alkio: alkio[1]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaa funktiomäärittelyä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"paitsi että lambda-lauseketta käytettäessä funktiolle ei anneta nimeä. Tämän takia muodostettavaa funktiota kutsutaan anonyymiksi funktioksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuten lambdan avulla muodostettava funktio on kuin mikä tahansa muukin funktio. Esimerkiksi seuraava esimerkki järjestää merkkijonot niiden viimeisten merkkien mukaiseen aakkosjärjestykseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Makke\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Markku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" jono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Maija\nMakke\nMikki\nMikko\nMarkku"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mennään vielä pidemmälle: yhdistämällä listakooste ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":"-metodi lambda-lausekkeeseen voidaan esimerkiksi järjestää merkkijonot niistä löytyvien vokaalien mukaiseen järjestykseen välittämättä muista merkeistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Makke\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Markku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" jono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"m "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" m "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jono "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" m "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aeiouyäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Makke\nMaija\nMarkku\nMikki\nMikko"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anonyymejä funktioita voi hyödyntää Pythonissa monien muidenkin valmiiden funktioiden yhteydessä. Esimerkiksi funktioille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"min"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"max"}]},{"type":"text","value":" voidaan määritellä samalla tavalla parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"key"}]},{"type":"text","value":", jonka perusteella minimi- tai maksimiarvo valitaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä poimitaan levyistä aluksi vanhin ja sitten pisin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Levy"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\"Luokka mallintaa yhtä äänilevyä\"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" esittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kesto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"esittaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" esittaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kesto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kesto\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"esittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"), "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":". "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kesto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" min.\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n l1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nevermind\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nirvana\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1991"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"43"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n l2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Let It Be\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Beatles\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1969"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n l3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Joshua Tree\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"U2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1986"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n levyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"l1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" l2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" l3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhin levy:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"levyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pisin levy: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"levyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" key"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kesto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vanhin levy:\nLet It Be (Beatles), 1969. 35 min.\nPisin levy:\nU2 (Joshua Tree), 1986. 50 min."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Palloilijat","tmcname":"osa12-06_palloilijat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Palloilija"}]},{"type":"text","value":", jolla on seuraavat julkiset piirteet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"pelinumero"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tehtyjen maalien määrä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maalit"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"annettujen syöttöjen määrä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotot"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"peliminuuttien määrä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"minuutit"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita seuraavien tehtävänantojen mukaiset funktiot. Huomaa, että jokaisessa funktiossa palautetaan erityyppiset tiedot."}]},{"type":"element","tagName":"h2","properties":{"id":"eniten-maaleja","style":"position:relative;"},"children":[{"type":"text","value":"Eniten maaleja"},{"type":"element","tagName":"a","properties":{"href":"#eniten-maaleja","ariaLabel":"eniten maaleja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eniten_maaleja"}]},{"type":"text","value":", joka saa parametrikseen listan palloilijoita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa merkkijonona sen pelaajan nimen, joka on tehnyt eniten maaleja."}]},{"type":"element","tagName":"h2","properties":{"id":"eniten-pisteita","style":"position:relative;"},"children":[{"type":"text","value":"Eniten pisteitä"},{"type":"element","tagName":"a","properties":{"href":"#eniten-pisteita","ariaLabel":"eniten pisteita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eniten_pisteita"}]},{"type":"text","value":", joka saa parametrikseen listan palloilijoita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa tuplena sen pelaajan nimen ja pelinumeron, joka on tehnyt yhteensä eniten pisteitä. Pisteisiin lasketaan siis sekä maalit että syötöt."}]},{"type":"element","tagName":"h2","properties":{"id":"vahiten-peliminuutteja","style":"position:relative;"},"children":[{"type":"text","value":"Vähiten peliminuutteja"},{"type":"element","tagName":"a","properties":{"href":"#vahiten-peliminuutteja","ariaLabel":"vahiten peliminuutteja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahiten_minuutteja"}]},{"type":"text","value":", joka saa parametrikseen listan palloilijoita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa sen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Palloilija"}]},{"type":"text","value":"-olion, jolla on vähiten peliminuutteja kaikista pelaajista."}]},{"type":"element","tagName":"h2","properties":{"id":"testiohjelma","style":"position:relative;"},"children":[{"type":"text","value":"Testiohjelma"},{"type":"element","tagName":"a","properties":{"href":"#testiohjelma","ariaLabel":"testiohjelma permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit testata koodisi toimintaa seuraavalla ohjelmalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pelaaja1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kelju Kojootti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"46"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maantiekiitäjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Uka Naakka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelle Peloton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"41"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pelaaja5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Palloilija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hessu Hopo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n joukkue "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"pelaaja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_maaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_pisteita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vahiten_minuutteja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen tulisi olla:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kelju Kojootti\n('Uka Naakka', 9)\nPalloilija(nimi=Hessu Hopo, pelinumero=4, maalit=3, syotot=9, minuutit=12)"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktiot-parametreina-omissa-funktioissa","style":"position:relative;"},"children":[{"type":"text","value":"Funktiot parametreina omissa funktioissa"},{"type":"element","tagName":"a","properties":{"href":"#funktiot-parametreina-omissa-funktioissa","ariaLabel":"funktiot parametreina omissa funktioissa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on siis mahdollista välittää viittaus johonkin funktioon toiselle funktiolle. Tarkastellaan vielä esimerkkinä omaa funktiota, joka saa parametrikseen toisen funktion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tyyppivihje callable viittaa funktioon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"suorita_operaatio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"callable"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan välitettyä funktiota"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" b\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorita_operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorita_operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorita_operaatio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"15\n50\n5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorita_operaatio"}]},{"type":"text","value":" lopputulos siis riippuu siitä, mikä funktio sille on välitetty parametrina. Funktioksi kelpaa mikä tahansa funktio (niin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-lauseella määritelty kuin anonyymikin) jolla on kaksi parametria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikkei funktioiden välittäminen parametrina olekaan kaikkein yleisimmin tarvittava operaatio, on se joka tapauksessa hyödyllinen mekanismi. Esimerkiksi seuraava ohjelma kirjoittaa tiedostosta 1 halutut rivit tiedostoon 2. Rivien valintakriteeri annetaan funktiona, joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos rivi tulee kirjoittaa toiseen tiedostoon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kopioi_rivit"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lahde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kohde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kriteeri"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lahde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" lahde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kohde_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lahde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poistetaan ensin tyhjät merkit alusta ja lopusta"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" kriteeri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkkejä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos kolmatta parametria ei ole määritelty, kopioidaan kaikki"}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kopioidaan kaikki ei-tyhjät rivit"}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kopioidaan kaikki rivit, joilla on sana \"Python\""}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kopioidaan kaikki rivit, jotka eivät pääty pisteeseen"}]},{"type":"text","value":"\n kopioi_rivit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiossa parametrille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kriteeri"}]},{"type":"text","value":" on määritelty oletusarvoksi lambda-lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lambda x: True"}]},{"type":"text","value":", jonka tuottama anonyymi funktio palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" kaikille syötteille. Niinpä oletuksena kopioidaan kaikki rivit tiedostosta toiseen. Jos käyttäjä antaa kolmannelle parametrille arvon, tämä korvaa oletusarvon."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tuotteiden haku","tmcname":"osa12-07_tuotteiden_haku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä käsitellään tupleina esitettäviä tuotteita, jotka on esimerkeissä alustettu muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuotteet"}]},{"type":"text","value":" seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"appelsiini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vesimeloni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kaali\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisessa tuplessa ensimmäinen alkio siis edustaa nimeä, seuraava hintaa ja kolmas määrää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae(tuotteet: list, kriteeri: callable)"}]},{"type":"text","value":", missä toisena parametrina on funktio, joka saa parametriksi yhden tuotetta edustavan tuplen ja palauttaa totuusarvon. Funktio palauttaa listassa parametrina annetuista tuotteista ne, jotka toteuttavat kriteerin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sopiva kriteeri voisi olla esimerkiksi seuraavanlainen"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hinta_alle_4_euroa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio siis palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" jos tuotteen hinta on alle 4 euroa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"haku"}]},{"type":"text","value":" toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hae"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hinta_alle_4_euroa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('omena', 3.95, 3)\n('kaali', 0.99, 1)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kriteerifunktion voi myös määritellä lambda-funktiona. Seuraava käyttää funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"haku"}]},{"type":"text","value":" etsimään tuotteet, joita on vähintään 11 kappaletta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tuote "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hae"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"('banaani', 5.95, 12)\n('vesimeloni', 4.95, 22)"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat järjestää listoja eri kriteerien mukaan
    • \n
    • Tiedät mitä tarkoitetaan lambda-lausekkeella
    • \n
    • Osaat hyödyntää lambda-lauseketta myös muiden Pythonin funktioiden kanssa
    • \n
    • Osaat välittää funktion parametrina funktiolle
    • \n

    Olemme jo aikaisemmin käyttäneet metodia sort ja funktiota sorted järjestämään listoja luonnolliseen järjestykseen. Metodit toimivat sellaisenaan hyvin luvuista ja merkkijonoista koostuvien listojen kanssa, mutta jos lista sisältää monimutkaisempia alkioita, Python ei välttämättä järjestä listaa niin kuin ohjelmoija toivoisi.

    Esimerkiksi lista tupleja järjestetään oletuksena jokaisen tuplen ensimmäisen alkion perusteella:

    tuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\ntuotteet.sort()\n\nfor tuote in tuotteet:\n    print(tuote)

    ('appelsiini', 4.5)\n('banaani', 5.95)\n('omena', 3.95)\n('vesimeloni', 4.95)

    Mitä jos haluaisimme järjestää tuotelistan hinnan perusteella?

    Funktiot parametrina

    Järjestysmetodille tai -funktiolle voidaan antaa toisena parametrina järjestyksen määräävä avain. Avaimeksi annetaan funktio, joka kertoo, miten yksittäisen alkion arvo määritetään. Python kutsuu tätä funktiota järjestämisen aikana alkioiden vertailemiseen.

    Esimerkiksi:

    def hintajarjestys(alkio: tuple):\n    # Palautetaan tuplen toinen alkio eli hinta\n    return alkio[1]\n\nif __name__ == \"__main__\":\n    tuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\n    # Hyödynnetään funktiota hintajarjestys\n    tuotteet.sort(key=hintajarjestys)\n\n    for tuote in tuotteet:\n        print(tuote)

    ('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)

    Nyt ohjelma järjestää listan hinnan mukaiseen järjestykseen. Mutta mitä ohjelmassa oikeastaan tapahtuu?

    Funktion hintajarjestys määrittely on melko yksinkertainen: se saa parametrikseen yhden alkion ja palauttaa alkiolle arvon - tässä tapauksessa tuplen toisen alkion (joka esimerkissämme esittää tuotteen hintaa). Tarkastellaan kuitenkin lähemmin järjestysmetodia kutsuvaa riviä:

    tuotteet.sort(key=hintajarjestys)

    Rivillä annetaan metodille sort parametriksi funktio. Ei siis funktion paluuarvoa, vaan viittaus funktioon. Järjestysmetodi kutsuu tätä funktiota jokaiselle alkiolle.

    Kutsut nähdään selkeästi lisäämällä vertailufunktioomme ylimääräinen tulostuslause:

    def hintajarjestys(alkio: tuple):\n    # Tulostetaan alkio\n    print(f\"Kutsuttiin hintajarjestys({alkio})\")\n\n    # Palautetaan tuplen toinen alkio eli hinta\n    return alkio[1]\n\n\ntuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\n# Hyödynnetään funktiota hintajarjestys\ntuotteet.sort(key=hintajarjestys)\n\nfor tuote in tuotteet:\n    print(tuote)

    Kutsuttiin hintajarjestys(('banaani', 5.95))\nKutsuttiin hintajarjestys(('omena', 3.95))\nKutsuttiin hintajarjestys(('appelsiini', 4.5))\nKutsuttiin hintajarjestys(('vesimeloni', 4.95))\n('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)

    Järjestys saadaan käännettyä päinvastaiseksi hyödyntämällä sekä metodista sort että funktiosta sorted löytyvää toista parametria reverse:

    tuotteet.sort(key=hintajarjestys, reverse=True)\n\nt2 = sorted(tuotteet, key=hintajarjestys, reverse=True)

    Funktion sisällä määritelty funktio

    Jos haluaisimme siirtää edellisessä esimerkissä tehdyn järjestämisen omaan funktioonsa jarjesta_hinnan_mukaan, voisimme toteuttaa sen seuraavasti:

    def hintajarjestys(alkio: tuple):\n    return alkio[1]\n\ndef jarjesta_hinnan_mukaan(alkiot: list):\n    # käytetään täällä funktiota hintajarjestys\n    return sorted(alkiot, key=hintajarjestys)\n\ntuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\nfor tuote in jarjesta_hinnan_mukaan(tuotteet):\n    print(tuote)

    Jos järjestämisen käyttämää apufunktiota hintajarjestys ei käytetä missään muussa kohtaa ohjelmaa kuin funktiossa jarjesta_hinnan_mukaan, sen määrittely voitaisiin siirtää funktion sisälle:

    def jarjesta_hinnan_mukaan(alkiot: list):\n    # määritellään apufunktio tällä kertaa funktion sisällä\n    def hintajarjestys(alkio: tuple):\n        return alkio[1]\n\n    return sorted(alkiot, key=hintajarjestys)

    Tee funktio jarjesta_varastosaldon_mukaan(alkiot: list). Funktio saa parametrina listan tupleja, joissa kolmantena alkiona on tuotteiden varastosaldo. Funktio järjestää parametrinaan saamat tuotteet varastosaldojen mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan.

    Funktio toimii seuraavasti:

    tuotteet = [(\"banaani\", 5.95, 12), (\"omena\", 3.95, 3), (\"appelsiini\", 4.50, 2), (\"vesimeloni\", 4.95, 22)]\n\nfor tuote in jarjesta_varastosaldon_mukaan(tuotteet):\n    print(f\"{tuote[0]} {tuote[2]} kpl\")
    \nappelsiini 2 kpl\nomena 3 kpl\nbanaani 12 kpl\nvesimeloni 22 kpl\n

    Tee funktio jarjesta_tuotantokausien_mukaan(alkiot: list). Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne tuotantokausien lukumäärän mukaiseen kasvavaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan.

    Funktio toimii seuraavasti:

    sarjat = [{ \"nimi\": \"Dexter\", \"pisteet\" : 8.6, \"kausia\":9 }, { \"nimi\": \"Friends\", \"pisteet\" : 8.9, \"kausia\":10 },  { \"nimi\": \"Simpsons\", \"pisteet\" : 8.7, \"kausia\":32 }  ]\n\nfor sarja in jarjesta_tuotantokausien_mukaan(sarjat):\n    print(f\"{sarja['nimi']}  {sarja['kausia']} tuotantokautta\")
    \nDexter 9 tuotantokautta\nFriends 10 tuotantokautta\nSimpsons 32 tuotantokautta\n

    Tee funktio jarjesta_pisteiden_mukaan(alkiot: list). Funktio saa parametrina listan sanakirjoja, jotka edustavat yksittäisiä TV-sarjoja, ja järjestää ne pisteiden mukaiseen laskevaan järjestykseen. Funktio ei muuta parametrina olevaa listaa, vaan palauttaa uuden listan.

    sarjat = [{ \"nimi\": \"Dexter\", \"pisteet\" : 8.6, \"kausia\":9 }, { \"nimi\": \"Friends\", \"pisteet\" : 8.9, \"kausia\":10 },  { \"nimi\": \"Simpsons\", \"pisteet\" : 8.7, \"kausia\":32 }  ]\n\nprint(\"IMDB:n mukainen pistemäärä\")\nfor sarja in jarjesta_pisteiden_mukaan(sarjat):\n    print(f\"{sarja['nimi']}  {sarja['pisteet']}\")
    \nIMDB:n mukainen pistemäärä\nFriends 8.9\nSimpsons 8.7\nDexter 8.6\n

    Omien olioiden alkioiden järjestäminen

    Kirjoitetaan samaa periaatetta hyödyntäen ohjelma, joka järjestää listan omasta Opiskelija-luokasta luotuja olioita kahden eri kriteerin avulla:

    class Opiskelija:\n    \"\"\" Luokka mallintaa yhtä opiskelijaa \"\"\"\n    def __init__(self, nimi: str, tunnus: str, pisteet: int):\n        self.nimi = nimi\n        self.tunnus = tunnus\n        self.pisteet = pisteet\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.tunnus}), {self.pisteet} op.\"\n\n\ndef tunnuksen_mukaan(alkio: Opiskelija):\n    return alkio.tunnus\n\ndef pisteiden_mukaan(alkio: Opiskelija):\n    return alkio.pisteet\n\n\nif __name__ == \"__main__\":\n    o1 = Opiskelija(\"Aapeli\", \"a123\", 220)\n    o2 = Opiskelija(\"Maija\", \"m321\", 210)\n    o3 = Opiskelija(\"Anna\", \"a999\", 131)\n\n    opiskelijat = [o1, o2, o3]\n\n    print(\"Tunnuksen mukaan:\")\n    for opiskelija in sorted(opiskelijat, key=tunnuksen_mukaan):\n        print(opiskelija)\n\n    print()\n\n    print(\"Pisteiden mukaan:\")\n    for opiskelija in sorted(opiskelijat, key=pisteiden_mukaan):\n        print(opiskelija)

    Aapeli (a123), 220 op.\nAnna (a999), 131 op.\nMaija (m321), 210 op.

    Pisteiden mukaan:\nAnna (a999), 131 op.\nMaija (m321), 210 op.\nAapeli (a123), 220 op.

    Järjestäminen toimii niinkuin pitää. Jos olioille arvon antavia funktioita tunnuksen_mukaan ja pisteiden_mukaan ei tarvita muuten, voimme kuitenkin vielä yksinkertaistaa ohjelmaa.

    Tehtäväpohjan mukana tulee valmis luokka Kiipeilyreitti, jota käytetään seuraavasti:

    reitti1 = Kiipeilyreitti(\"Kantti\", 38, \"6A+\")\nreitti2 = Kiipeilyreitti(\"Smooth operator\", 11, \"7A\")\nreitti3 = Kiipeilyreitti(\"Syncro\", 14, \"8C+\")\n\n\nprint(reitti1)\nprint(reitti2)\nprint(reitti3.nimi, reitti3.pituus, reitti3.grade)

    Kantti, pituus 38 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A\nSyncro 14 8C+

    Pituuden mukainen järjestys

    Tee funktio pituuden_mukaan(reitit: list) joka palauttaa kiipeilyreitit pituuden mukaan käänteisessä järjestyksessä.

    Funktio toimii seuraavasti:

    r1 = Kiipeilyreitti(\"Kantti\", 38, \"6A+\")\nr2 = Kiipeilyreitti(\"Smooth operator\", 11, \"7A\")\nr3 = Kiipeilyreitti(\"Syncro\", 14, \"8C+\")\nr4 = Kiipeilyreitti(\"Pieniä askelia\", 12, \"6A+\")\n\nreitit = [r1, r2, r3, r4]\n\nfor reitti in pituuden_mukaan(reitit):\n    print(reitti)

    Kantti, pituus 38 metriä, grade 6A+\nSyncro, pituus 14 metriä, grade 8C+\nPieniä askelia, pituus 12 metriä, grade 6A+\nSmooth operator, pituus 11 metriä, grade 7A

    Vaikeuden mukainen järjestys

    Tee funktio vaikeuden_mukaan(reitit: list) joka palauttaa kiipeilyreitit vaikeuden (eli graden) mukaan laskevassa järjestyksessä. Jos reittien vaikeus on sama, ratkaisee pituus vaikeuden. Pidempi on vaikeampi. Kiipeilyreittien vaikeusasteikko on 4, 4+, 5, 5+, 6A, 6A+, ... eli käytännössä se seuraa aakkosjärjestystä.

    Funktio toimii seuraavasti:

    r1 = Kiipeilyreitti(\"Kantti\", 38, \"6A+\")\nr2 = Kiipeilyreitti(\"Smooth operator\", 11, \"7A\")\nr3 = Kiipeilyreitti(\"Syncro\", 14, \"8C+\")\nr4 = Kiipeilyreitti(\"Pieniä askelia\", 12, \"6A+\")\n\nreitit = [r1, r2, r3, r4]\nfor reitti in vaikeuden_mukaan(reitit):\n    print(reitti)

    Syncro, pituus 14 metriä, grade 8C+\nSmooth operator, pituus 11 metriä, grade 7A\nKantti, pituus 38 metriä, grade 6A+\nPieniä askelia, pituus 12 metriä, grade 6A+

    Vihje jos järjestysperusteena on lista tai tuple, järjestetään ensisijaiseti ensimmäisen alkion mukaan, toissijaisesti toisen:

    lista = [(\"a\", 4),(\"a\", 2),(\"b\", 30), (\"b\", 0) ]\nprint(sorted(lista))

    [('a', 2), ('a', 4), ('b', 0), ('b', 30)]

    Tehtäväpohjasta löytyy luokan Kiipeilyreitti lisäksi luokka Kiipeilykallio.

    k1 = Kiipeilykallio(\"Olhava\")\nk1.lisaa_reitti(Kiipeilyreitti(\"Kantti\", 38, \"6A+\"))\nk1.lisaa_reitti(Kiipeilyreitti(\"Suuri leikkaus\", 36, \"6B\"))\nk1.lisaa_reitti(Kiipeilyreitti(\"Ruotsalaisten reitti\", 42, \"5+\"))\n\nk2 = Kiipeilykallio(\"Nummi\")\nk2.lisaa_reitti(Kiipeilyreitti(\"Syncro\", 14, \"8C+\"))\n\nk3 = Kiipeilykallio(\"Nalkkilan släbi\")\nk3.lisaa_reitti(Kiipeilyreitti(\"Pieniä askelia\", 12, \"6A+\"))\nk3.lisaa_reitti(Kiipeilyreitti(\"Smooth operator\", 11, \"7A\"))\nk3.lisaa_reitti(Kiipeilyreitti(\"Possu ei pidä\", 12 , \"6B+\"))\nk3.lisaa_reitti(Kiipeilyreitti(\"Hedelmätarha\", 8, \"6A\"))\n\nprint(k1)\nprint(k3.nimi, k3.reitteja())\nprint(k3.vaikein_reitti())

    Olhava, 3 reittiä, vaikein 6B\nNalkkilan slabi 4\nSmooth operator, pituus 9 metriä, grade 7A

    Reittien määrän mukaan

    Tee funktio reittien_maaran_mukaan, joka järjestää kiipeilykalliot reittien määrän mukaiseen kasvavaan suuruusjärjestykseen.

    # k1, k2 ja k3 määritelty kuten edellä\nkalliot = [k1, k2, k3]\nfor kallio in reittien_maaran_mukaan(kalliot):\n    print(kallio)\n

    Nummi, 1 reittiä, vaikein 8C+\nOlhava, 3 reittiä, vaikein 6B\nNalkkilan slabi, 4 reittiä, vaikein 7A

    Vaikeimman reitin mukaan

    Tee funktio vaikeimman_reitin_mukaan, joka järjestää kiipeilykalliot kalliolta löytyvän vaikeimman reitin mukaiseen laskevaan suuruusjärjestykseen.

    # k1, k2 ja k3 määritelty kuten edellä\nkalliot = [k1, k2, k3]\nfor kallio in vaikeimman_reitin_mukaan(kalliot):\n    print(kallio)\n

    Nummi, 1 reittiä, vaikein 8C+\nNalkkilan slabi, 4 reittiä, vaikein 7A\nOlhava, 3 reittiä, vaikein 6B

    Lambda-lauseke

    Lambda-lausekkeen avulla voidaan luoda anonyymi funktio eli funktio, joka muodostetaan sillä hetkellä, kun sitä tarvitaan. Lausekkeen yleinen syntaksi on seuraava:

    lambda <parametrit> : <lauseke>

    Esimerkiksi tuplelistan järjestys onnistuisi näin käyttämällä lambda-lauseketta:

    tuotteet = [(\"banaani\", 5.95), (\"omena\", 3.95), (\"appelsiini\", 4.50), (\"vesimeloni\", 4.95)]\n\n# Funktio luodaan \"lennosta\" lambda-lausekkeella:\ntuotteet.sort(key=lambda alkio: alkio[1])\n\nfor tuote in tuotteet:\n    print(tuote)

    ('omena', 3.95)\n('appelsiini', 4.5)\n('vesimeloni', 4.95)\n('banaani', 5.95)

    Lauseke

    lambda alkio: alkio[1]

    vastaa funktiomäärittelyä

    \ndef hinta(alkio):\n    return alkio[1]

    paitsi että lambda-lauseketta käytettäessä funktiolle ei anneta nimeä. Tämän takia muodostettavaa funktiota kutsutaan anonyymiksi funktioksi.

    Muuten lambdan avulla muodostettava funktio on kuin mikä tahansa muukin funktio. Esimerkiksi seuraava esimerkki järjestää merkkijonot niiden viimeisten merkkien mukaiseen aakkosjärjestykseen:

    mjonot = [\"Mikko\", \"Makke\", \"Maija\", \"Markku\", \"Mikki\"]\n\nfor jono in sorted(mjonot, key=lambda jono: jono[-1]):\n    print(jono)

    Maija\nMakke\nMikki\nMikko\nMarkku

    Mennään vielä pidemmälle: yhdistämällä listakooste ja join-metodi lambda-lausekkeeseen voidaan esimerkiksi järjestää merkkijonot niistä löytyvien vokaalien mukaiseen järjestykseen välittämättä muista merkeistä:

    mjonot = [\"Mikko\", \"Makke\", \"Maija\", \"Markku\", \"Mikki\"]\n\nfor jono in sorted(mjonot, key=lambda jono: \"\".join([m for m in jono if m in \"aeiouyäö\"])):\n    print(jono)

    Makke\nMaija\nMarkku\nMikki\nMikko

    Anonyymejä funktioita voi hyödyntää Pythonissa monien muidenkin valmiiden funktioiden yhteydessä. Esimerkiksi funktioille min ja max voidaan määritellä samalla tavalla parametri key, jonka perusteella minimi- tai maksimiarvo valitaan.

    Esimerkissä poimitaan levyistä aluksi vanhin ja sitten pisin:

    \nclass Levy:\n    \"\"\"Luokka mallintaa yhtä äänilevyä\"\"\"\n    def __init__(self, nimi: str, esittaja: str, vuosi: int, kesto: int):\n        self.nimi = nimi\n        self.esittaja = esittaja\n        self.vuosi = vuosi\n        self.kesto = kesto\n\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.esittaja}), {self.vuosi}. {self.kesto} min.\"\n\nif __name__ == \"__main__\":\n    l1 = Levy(\"Nevermind\", \"Nirvana\", 1991, 43)\n    l2 = Levy(\"Let It Be\", \"Beatles\", 1969, 35)\n    l3 = Levy(\"Joshua Tree\", \"U2\", 1986, 50)\n\n    levyt = [l1, l2, l3]\n\n\n    print(\"Vanhin levy:\")\n    print(min(levyt, key=lambda levy: levy.vuosi))\n\n    print(\"Pisin levy: \")\n    print(max(levyt, key=lambda levy: levy.kesto))

    Vanhin levy:\nLet It Be (Beatles), 1969. 35 min.\nPisin levy:\nU2 (Joshua Tree), 1986. 50 min.

    Tehtäväpohjasta löytyy luokka Palloilija, jolla on seuraavat julkiset piirteet:

      \n
    • nimi
    • \n
    • pelinumero
    • \n
    • tehtyjen maalien määrä maalit
    • \n
    • annettujen syöttöjen määrä syotot
    • \n
    • peliminuuttien määrä minuutit
    • \n

    Kirjoita seuraavien tehtävänantojen mukaiset funktiot. Huomaa, että jokaisessa funktiossa palautetaan erityyppiset tiedot.

    Eniten maaleja

    Kirjoita funktio eniten_maaleja, joka saa parametrikseen listan palloilijoita.

    Funktio palauttaa merkkijonona sen pelaajan nimen, joka on tehnyt eniten maaleja.

    Eniten pisteitä

    Kirjoita funktio eniten_pisteita, joka saa parametrikseen listan palloilijoita.

    Funktio palauttaa tuplena sen pelaajan nimen ja pelinumeron, joka on tehnyt yhteensä eniten pisteitä. Pisteisiin lasketaan siis sekä maalit että syötöt.

    Vähiten peliminuutteja

    Kirjoita funktio vahiten_minuutteja, joka saa parametrikseen listan palloilijoita.

    Funktio palauttaa sen Palloilija-olion, jolla on vähiten peliminuutteja kaikista pelaajista.

    Testiohjelma

    Voit testata koodisi toimintaa seuraavalla ohjelmalla:

    if __name__ == \"__main__\":\n    pelaaja1 = Palloilija(\"Kelju Kojootti\", 13, 5, 12, 46)\n    pelaaja2 = Palloilija(\"Maantiekiitäjä\", 7, 2, 26, 55)\n    pelaaja3 = Palloilija(\"Uka Naakka\", 9, 1, 32, 26)\n    pelaaja4 = Palloilija(\"Pelle Peloton\", 12, 1, 11, 41)\n    pelaaja5 = Palloilija(\"Hessu Hopo\", 4, 3, 9, 12)\n\n    joukkue = [pelaaja1, pelaaja2, pelaaja3, pelaaja4, pelaaja5]\n    print(eniten_maaleja(joukkue))\n    print(eniten_pisteita(joukkue))\n    print(vahiten_minuutteja(joukkue))

    Tulostuksen tulisi olla:

    Kelju Kojootti\n('Uka Naakka', 9)\nPalloilija(nimi=Hessu Hopo, pelinumero=4, maalit=3, syotot=9, minuutit=12)

    Funktiot parametreina omissa funktioissa

    Pythonissa on siis mahdollista välittää viittaus johonkin funktioon toiselle funktiolle. Tarkastellaan vielä esimerkkinä omaa funktiota, joka saa parametrikseen toisen funktion:

    # tyyppivihje callable viittaa funktioon\ndef suorita_operaatio(operaatio: callable):\n    # Kutsutaan välitettyä funktiota\n    return operaatio(10, 5)\n\ndef summa(a: int, b: int):\n    return a + b\n\ndef tulo(a: int, b: int):\n    return a * b\n\n\nif __name__ == \"__main__\":\n    print(suorita_operaatio(summa))\n    print(suorita_operaatio(tulo))\n    print(suorita_operaatio(lambda x,y: x - y))\n

    15\n50\n5

    Funktion suorita_operaatio lopputulos siis riippuu siitä, mikä funktio sille on välitetty parametrina. Funktioksi kelpaa mikä tahansa funktio (niin def-lauseella määritelty kuin anonyymikin) jolla on kaksi parametria.

    Vaikkei funktioiden välittäminen parametrina olekaan kaikkein yleisimmin tarvittava operaatio, on se joka tapauksessa hyödyllinen mekanismi. Esimerkiksi seuraava ohjelma kirjoittaa tiedostosta 1 halutut rivit tiedostoon 2. Rivien valintakriteeri annetaan funktiona, joka palauttaa True, jos rivi tulee kirjoittaa toiseen tiedostoon:

    def kopioi_rivit(lahde_nimi: str, kohde_nimi: str, kriteeri= lambda x: True):\n    with open(lahde_nimi) as lahde, open(kohde_nimi, \"w\") as kohde:\n        for rivi in lahde:\n            # Poistetaan ensin tyhjät merkit alusta ja lopusta\n            rivi = rivi.strip()\n\n            if kriteeri(rivi):\n                kohde.write(rivi + \"\\n\")\n\n# Esimerkkejä\nif __name__ == \"__main__\":\n    # Jos kolmatta parametria ei ole määritelty, kopioidaan kaikki\n    kopioi_rivit(\"eka.txt\", \"toka.txt\")\n\n    # Kopioidaan kaikki ei-tyhjät rivit\n    kopioi_rivit(\"eka.txt\", \"toka.txt\", lambda rivi: len(rivi) > 0)\n\n    # Kopioidaan kaikki rivit, joilla on sana \"Python\"\n    kopioi_rivit(\"eka.txt\", \"toka.txt\", lambda rivi: \"Python\" in rivi)\n\n    # Kopioidaan kaikki rivit, jotka eivät pääty pisteeseen\n    kopioi_rivit(\"eka.txt\", \"toka.txt\", lambda rivi: rivi[-1] != \".\")

    Funktiossa parametrille kriteeri on määritelty oletusarvoksi lambda-lauseke lambda x: True, jonka tuottama anonyymi funktio palauttaa arvon True kaikille syötteille. Niinpä oletuksena kopioidaan kaikki rivit tiedostosta toiseen. Jos käyttäjä antaa kolmannelle parametrille arvon, tämä korvaa oletusarvon.

    Tässä tehtävässä käsitellään tupleina esitettäviä tuotteita, jotka on esimerkeissä alustettu muuttujaan tuotteet seuraavasti:

    tuotteet = [(\"banaani\", 5.95, 12), (\"omena\", 3.95, 3), (\"appelsiini\", 4.50, 2), (\"vesimeloni\", 4.95, 22), (\"Kaali\", 0.99, 1)]

    Jokaisessa tuplessa ensimmäinen alkio siis edustaa nimeä, seuraava hintaa ja kolmas määrää.

    Toteuta funktio hae(tuotteet: list, kriteeri: callable), missä toisena parametrina on funktio, joka saa parametriksi yhden tuotetta edustavan tuplen ja palauttaa totuusarvon. Funktio palauttaa listassa parametrina annetuista tuotteista ne, jotka toteuttavat kriteerin.

    Sopiva kriteeri voisi olla esimerkiksi seuraavanlainen

    def hinta_alle_4_euroa(tuote):\n    return tuote[1] < 4

    Funktio siis palauttaa True jos tuotteen hinta on alle 4 euroa.

    Funktio haku toimii seuraavasti:

    for tuote in hae(tuotteet, hinta_alle_4_euroa):\n    print(tuote)

    ('omena', 3.95, 3)\n('kaali', 0.99, 1)

    Kriteerifunktion voi myös määritellä lambda-funktiona. Seuraava käyttää funktiota haku etsimään tuotteet, joita on vähintään 11 kappaletta:

    for tuote in hae(tuotteet, lambda t: t[2]>10):\n    print(tuote)

    ('banaani', 5.95, 12)\n('vesimeloni', 4.95, 22)

    ","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/1-funktio-parametrina.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-12/2-generaattorit/page-data.json b/page-data/osa-12/2-generaattorit/page-data.json index 30bf596d0..ef664edf5 100644 --- a/page-data/osa-12/2-generaattorit/page-data.json +++ b/page-data/osa-12/2-generaattorit/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-12/2-generaattorit", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan generaattorilla Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä avainsana yield tekee"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa itse generaattorifunktioita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eräissä tilanteissa olisi kätevää saada ohjelmassa seuraava alkio (tai useampi alkio) tietystä sarjasta ilman että muodostetaan koko sarjaa kerralla. Pythonissa tämä onnistuu näppärästi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"generaattoreiden"}]},{"type":"text","value":" avulla. Generaattorifunktio muistuttaa normaalia arvon palauttavaa funktiota, mutta kun normaalifunktio palauttaa (tai ainakin sen pitäisi palauttaa) samalla syötteellä saman arvon, generaattorifunktio palauttaa seuraavan luvun sarjasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattorien toiminta voidaan toteuttaa ohjelmissa myös muilla keinoilla (itse asiassa sama pätee useimpiin ohjelmointitekniikoihin), mutta niiden käyttö selkeyttää ja mahdollisesti säästää muistia tai muita resursseja tietyntyylisissä ohjelmissa."}]},{"type":"element","tagName":"h2","properties":{"id":"avainsana-yield","style":"position:relative;"},"children":[{"type":"text","value":"Avainsana yield"},{"type":"element","tagName":"a","properties":{"href":"#avainsana-yield","ariaLabel":"avainsana yield permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattorifunktion toiminta perustuu avainsanaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yield"}]},{"type":"text","value":". Tarkastellaan esimerkkinä funktiota, joka palauttaa yksi kerrallaan kokonaislukuja nollasta alkaen kunnes maksimiarvo on saavutettu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laskuri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maksimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" maksimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"yield"}]},{"type":"text","value":" luku\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt laskurilta voi pyytää seuraavan arvon funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"next()"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eka arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toka arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eka arvo:\n0\nToka arvo:\n1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niinkuin esimerkistä huomataan, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yield"}]},{"type":"text","value":" muistuttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komentoa siinä, että se palauttaa arvon funktiosta. Eroavaisuus on kuitenkin siinä, että yield palauttaa yksittäisen arvon, ja funktio \"muistaa\" mihin tilaan se jäi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvoja voi pyytää vain niin kauan kun niitä on generaattorissa jäljellä - tämän jälkeen generaattorifunktio antaa poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"StopIteration"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"0\n1\nTraceback (most recent call last):\nFile \"generaattoriesimerkki.py\", line 11, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nprint(next(luvut))\nStopIteration"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Poikkeuksen voi ottaa kiinni "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" lohkolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" StopIteration"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luvut loppuivat kesken\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n1\nLuvut loppuivat kesken"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos halutaan palauttaa kaikki generaattorin tuottamat alkiot, helpointa on iteroida ne läpi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lauseella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n1\n2\n3\n4\n5"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Parilliset luvut","tmcname":"osa12-08_parilliset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita generaattorifunktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"parilliset(alku: int, maksimi: int)"}]},{"type":"text","value":", joka saa parametrikseen alkuarvon ja maksimin. Funktio tuottaa alkuarvosta lähtien parillisia lukuja. Kun saavutetaan maksimi, generaattori pysähtyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkiä funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n4\n6\n8\n10"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"21"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"12\n14\n16\n18\n20"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkuluvut","tmcname":"osa12-09_alkuluvut"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alkuluvuksi sanotaan kokonaislukua, joka on vähintään 2 ja jaollinen ainoastaan 1:llä ja itsellään. Ensimmäiset alkuluvut ovat 2, 3, 5, 7, 11 ja 13."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjota generaattorifunktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alkuluvut()"}]},{"type":"text","value":", joka luo uuden generaattorin. Generaattori palauttaa yksi kerrallaan alkulukuja järjestyksessä 2:sta alkaen. Huomaa, että generaattori ei pysähdy koskaan, vaan palauttaa lisää lukuja niin kauan kuin niitä pyydetään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkuluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3\n5\n7\n11\n13\n17\n19"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Voit tarkastaa, onko luku "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" alkuluku, silmukalla, joka käy läpi luvut 2:sta lukuun "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":"–1 asti. Jos jokin näistä luvuista jakaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":":n, niin se ei ole alkuluku."}]}]},{"type":"element","tagName":"h2","properties":{"id":"generaattorikoosteet","style":"position:relative;"},"children":[{"type":"text","value":"Generaattorikoosteet"},{"type":"element","tagName":"a","properties":{"href":"#generaattorikoosteet","ariaLabel":"generaattorikoosteet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattorin voi luoda myös listakoostetta (list comprehension) muistuttavalla syntaksilla. Erotuksena listakoosteeseen on, että lauseke ympäröidään kaarisulkeilla hakasulkeiden sijasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Generaattori palauttaa 2:n potensseja"}]},{"type":"text","value":"\nneliot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"64"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"neliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"neliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":" at 0x000002B4224EBFC0>\n1\n4\n9\n16\n25"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkki, jossa generaattori tuottaa kolmimerkkisiä alijonoja englanninkielisistä aakkosista. Esimerkissä tulostetaan generaattorin 10 ensimmäistä alkiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"alijonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcdefghijklmnopqrstuvwxyz\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan ensimmäiset 10 alijonoa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alijonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"abc\nbcd\ncde\ndef\nefg\nfgh\nghi\nhij\nijk\njkl"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Satunnaiset sanat","tmcname":"osa12-10_satunnaiset_sanat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanageneraattori(kirjaimet: str, pituus: int, maara: int)"}]},{"type":"text","value":", joka muodostaa ja palauttaa annettujen parametrien avulla satunnaisia sanoja tuottavan generaattorin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Satunnainen sana muodostetaan valitsemalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":" kappaletta kirjaimia valikoimasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjaimet"}]},{"type":"text","value":". Sama kirjain saa esiintyä sanassa monta kertaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattori palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maara"}]},{"type":"text","value":" kappaletta sanoja ennen kuin se pysähtyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanagen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sanageneraattori"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcdefg\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanagen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"dbf\nbaf\nead\nfga\nccc"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Voit ratkaista tehtävän itse valitsemallasi tavalla (eli käyttäen joko generaattorikoostetta tai \"perinteistä\" generaattoria)."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan generaattorilla Pythonissa
    • \n
    • Tiedät, mitä avainsana yield tekee
    • \n
    • Osaat kirjoittaa itse generaattorifunktioita
    • \n

    Eräissä tilanteissa olisi kätevää saada ohjelmassa seuraava alkio (tai useampi alkio) tietystä sarjasta ilman että muodostetaan koko sarjaa kerralla. Pythonissa tämä onnistuu näppärästi generaattoreiden avulla. Generaattorifunktio muistuttaa normaalia arvon palauttavaa funktiota, mutta kun normaalifunktio palauttaa (tai ainakin sen pitäisi palauttaa) samalla syötteellä saman arvon, generaattorifunktio palauttaa seuraavan luvun sarjasta.

    Generaattorien toiminta voidaan toteuttaa ohjelmissa myös muilla keinoilla (itse asiassa sama pätee useimpiin ohjelmointitekniikoihin), mutta niiden käyttö selkeyttää ja mahdollisesti säästää muistia tai muita resursseja tietyntyylisissä ohjelmissa.

    Avainsana yield

    Generaattorifunktion toiminta perustuu avainsanaan yield. Tarkastellaan esimerkkinä funktiota, joka palauttaa yksi kerrallaan kokonaislukuja nollasta alkaen kunnes maksimiarvo on saavutettu:

    \ndef laskuri(maksimi: int):\n    luku = 0\n    while luku <= maksimi:\n        yield luku\n        luku += 1\n

    Nyt laskurilta voi pyytää seuraavan arvon funktiolla next():

    if __name__ == \"__main__\":\n    luvut = laskuri(10)\n    print(\"Eka arvo:\")\n    print(next(luvut))\n    print(\"Toka arvo:\")\n    print(next(luvut))

    Eka arvo:\n0\nToka arvo:\n1

    Niinkuin esimerkistä huomataan, yield muistuttaa return-komentoa siinä, että se palauttaa arvon funktiosta. Eroavaisuus on kuitenkin siinä, että yield palauttaa yksittäisen arvon, ja funktio \"muistaa\" mihin tilaan se jäi.

    Arvoja voi pyytää vain niin kauan kun niitä on generaattorissa jäljellä - tämän jälkeen generaattorifunktio antaa poikkeuksen StopIteration:

    if __name__ == \"__main__\":\n    luvut = laskuri(1)\n    print(next(luvut))\n    print(next(luvut))\n    print(next(luvut))
    0\n1\nTraceback (most recent call last):\nFile \"generaattoriesimerkki.py\", line 11, in \nprint(next(luvut))\nStopIteration

    Poikkeuksen voi ottaa kiinni try-except lohkolla:

    if __name__ == \"__main__\":\n    luvut = laskuri(1)\n    try:\n        print(next(luvut))\n        print(next(luvut))\n        print(next(luvut))\n    except StopIteration:\n        print(\"Luvut loppuivat kesken\")

    0\n1\nLuvut loppuivat kesken

    Jos halutaan palauttaa kaikki generaattorin tuottamat alkiot, helpointa on iteroida ne läpi for-lauseella:

    if __name__ == \"__main__\":\n    luvut = laskuri(5)\n    for luku in luvut:\n        print(luku)

    0\n1\n2\n3\n4\n5

    Kirjoita generaattorifunktio parilliset(alku: int, maksimi: int), joka saa parametrikseen alkuarvon ja maksimin. Funktio tuottaa alkuarvosta lähtien parillisia lukuja. Kun saavutetaan maksimi, generaattori pysähtyy.

    Kaksi esimerkkiä funktion käytöstä:

    luvut = parilliset(2, 10)\nfor luku in luvut:\n    print(luku)

    2\n4\n6\n8\n10

    luvut = parilliset(11, 21)\nfor luku in luvut:\n    print(luku)

    12\n14\n16\n18\n20

    Alkuluvuksi sanotaan kokonaislukua, joka on vähintään 2 ja jaollinen ainoastaan 1:llä ja itsellään. Ensimmäiset alkuluvut ovat 2, 3, 5, 7, 11 ja 13.

    Kirjota generaattorifunktio alkuluvut(), joka luo uuden generaattorin. Generaattori palauttaa yksi kerrallaan alkulukuja järjestyksessä 2:sta alkaen. Huomaa, että generaattori ei pysähdy koskaan, vaan palauttaa lisää lukuja niin kauan kuin niitä pyydetään.

    Esimerkiksi:

    luvut = alkuluvut()\nfor i in range(8):\n    print(next(luvut))

    2\n3\n5\n7\n11\n13\n17\n19

    Vinkki: Voit tarkastaa, onko luku x alkuluku, silmukalla, joka käy läpi luvut 2:sta lukuun x–1 asti. Jos jokin näistä luvuista jakaa x:n, niin se ei ole alkuluku.

    Generaattorikoosteet

    Generaattorin voi luoda myös listakoostetta (list comprehension) muistuttavalla syntaksilla. Erotuksena listakoosteeseen on, että lauseke ympäröidään kaarisulkeilla hakasulkeiden sijasta.

    Esimerkiksi

    # Generaattori palauttaa 2:n potensseja\nneliot = (x ** 2 for x in range(1, 64))\n\nprint(neliot)\n\nfor i in range(5):\n    print(next(neliot))

    <generator object <genexpr> at 0x000002B4224EBFC0>\n1\n4\n9\n16\n25

    Toinen esimerkki, jossa generaattori tuottaa kolmimerkkisiä alijonoja englanninkielisistä aakkosista. Esimerkissä tulostetaan generaattorin 10 ensimmäistä alkiota:

    alijonot = (\"abcdefghijklmnopqrstuvwxyz\"[i : i + 3] for i in range(24))\n\n# tulostetaan ensimmäiset 10 alijonoa\nfor i in range(10):\n    print(next(alijonot))

    abc\nbcd\ncde\ndef\nefg\nfgh\nghi\nhij\nijk\njkl

    Tee funktio sanageneraattori(kirjaimet: str, pituus: int, maara: int), joka muodostaa ja palauttaa annettujen parametrien avulla satunnaisia sanoja tuottavan generaattorin.

    Satunnainen sana muodostetaan valitsemalla pituus kappaletta kirjaimia valikoimasta kirjaimet. Sama kirjain saa esiintyä sanassa monta kertaa.

    Generaattori palauttaa maara kappaletta sanoja ennen kuin se pysähtyy.

    Esimerkki funktion kutsumisesta:

    sanagen = sanageneraattori(\"abcdefg\", 3, 5)\nfor sana in sanagen:\n    print(sana)

    dbf\nbaf\nead\nfga\nccc

    Huom! Voit ratkaista tehtävän itse valitsemallasi tavalla (eli käyttäen joko generaattorikoostetta tai \"perinteistä\" generaattoria).

    ","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/2-generaattorit.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan generaattorilla Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä avainsana yield tekee"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa itse generaattorifunktioita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eräissä tilanteissa olisi kätevää saada ohjelmassa seuraava alkio (tai useampi alkio) tietystä sarjasta ilman että muodostetaan koko sarjaa kerralla. Pythonissa tämä onnistuu näppärästi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"generaattoreiden"}]},{"type":"text","value":" avulla. Generaattorifunktio muistuttaa normaalia arvon palauttavaa funktiota, mutta kun normaalifunktio palauttaa (tai ainakin sen pitäisi palauttaa) samalla syötteellä saman arvon, generaattorifunktio palauttaa seuraavan luvun sarjasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattorien toiminta voidaan toteuttaa ohjelmissa myös muilla keinoilla (itse asiassa sama pätee useimpiin ohjelmointitekniikoihin), mutta niiden käyttö selkeyttää ja mahdollisesti säästää muistia tai muita resursseja tietyntyylisissä ohjelmissa."}]},{"type":"element","tagName":"h2","properties":{"id":"avainsana-yield","style":"position:relative;"},"children":[{"type":"text","value":"Avainsana yield"},{"type":"element","tagName":"a","properties":{"href":"#avainsana-yield","ariaLabel":"avainsana yield permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattorifunktion toiminta perustuu avainsanaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yield"}]},{"type":"text","value":". Tarkastellaan esimerkkinä funktiota, joka palauttaa yksi kerrallaan kokonaislukuja nollasta alkaen kunnes maksimiarvo on saavutettu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laskuri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maksimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" maksimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"yield"}]},{"type":"text","value":" luku\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt laskurilta voi pyytää seuraavan arvon funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"next()"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eka arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toka arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eka arvo:\n0\nToka arvo:\n1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niinkuin esimerkistä huomataan, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yield"}]},{"type":"text","value":" muistuttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komentoa siinä, että se palauttaa arvon funktiosta. Eroavaisuus on kuitenkin siinä, että yield palauttaa yksittäisen arvon, ja funktio \"muistaa\" mihin tilaan se jäi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvoja voi pyytää vain niin kauan kun niitä on generaattorissa jäljellä - tämän jälkeen generaattorifunktio antaa poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"StopIteration"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"0\n1\nTraceback (most recent call last):\nFile \"generaattoriesimerkki.py\", line 11, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nprint(next(luvut))\nStopIteration"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Poikkeuksen voi ottaa kiinni "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" lohkolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" StopIteration"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luvut loppuivat kesken\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n1\nLuvut loppuivat kesken"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos halutaan palauttaa kaikki generaattorin tuottamat alkiot, helpointa on iteroida ne läpi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lauseella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n1\n2\n3\n4\n5"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Parilliset luvut","tmcname":"osa12-08_parilliset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita generaattorifunktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"parilliset(alku: int, maksimi: int)"}]},{"type":"text","value":", joka saa parametrikseen alkuarvon ja maksimin. Funktio tuottaa alkuarvosta lähtien parillisia lukuja. Kun saavutetaan maksimi, generaattori pysähtyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkiä funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n4\n6\n8\n10"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"21"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"12\n14\n16\n18\n20"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkuluvut","tmcname":"osa12-09_alkuluvut"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alkuluvuksi sanotaan kokonaislukua, joka on vähintään 2 ja jaollinen ainoastaan 1:llä ja itsellään. Ensimmäiset alkuluvut ovat 2, 3, 5, 7, 11 ja 13."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjota generaattorifunktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alkuluvut()"}]},{"type":"text","value":", joka luo uuden generaattorin. Generaattori palauttaa yksi kerrallaan alkulukuja järjestyksessä 2:sta alkaen. Huomaa, että generaattori ei pysähdy koskaan, vaan palauttaa lisää lukuja niin kauan kuin niitä pyydetään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkuluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3\n5\n7\n11\n13\n17\n19"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Voit tarkastaa, onko luku "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" alkuluku, silmukalla, joka käy läpi luvut 2:sta lukuun "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":"–1 asti. Jos jokin näistä luvuista jakaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":":n, niin se ei ole alkuluku."}]}]},{"type":"element","tagName":"h2","properties":{"id":"generaattorikoosteet","style":"position:relative;"},"children":[{"type":"text","value":"Generaattorikoosteet"},{"type":"element","tagName":"a","properties":{"href":"#generaattorikoosteet","ariaLabel":"generaattorikoosteet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattorin voi luoda myös listakoostetta (list comprehension) muistuttavalla syntaksilla. Erotuksena listakoosteeseen on, että lauseke ympäröidään kaarisulkeilla hakasulkeiden sijasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Generaattori palauttaa 2:n potensseja"}]},{"type":"text","value":"\nneliot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"64"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"neliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"neliot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":" at 0x000002B4224EBFC0>\n1\n4\n9\n16\n25"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkki, jossa generaattori tuottaa kolmimerkkisiä alijonoja englanninkielisistä aakkosista. Esimerkissä tulostetaan generaattorin 10 ensimmäistä alkiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"alijonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcdefghijklmnopqrstuvwxyz\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan ensimmäiset 10 alijonoa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"next"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alijonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"abc\nbcd\ncde\ndef\nefg\nfgh\nghi\nhij\nijk\njkl"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Satunnaiset sanat","tmcname":"osa12-10_satunnaiset_sanat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanageneraattori(kirjaimet: str, pituus: int, maara: int)"}]},{"type":"text","value":", joka muodostaa ja palauttaa annettujen parametrien avulla satunnaisia sanoja tuottavan generaattorin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Satunnainen sana muodostetaan valitsemalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":" kappaletta kirjaimia valikoimasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjaimet"}]},{"type":"text","value":". Sama kirjain saa esiintyä sanassa monta kertaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Generaattori palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maara"}]},{"type":"text","value":" kappaletta sanoja ennen kuin se pysähtyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanagen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sanageneraattori"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcdefg\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanagen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"dbf\nbaf\nead\nfga\nccc"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Voit ratkaista tehtävän itse valitsemallasi tavalla (eli käyttäen joko generaattorikoostetta tai \"perinteistä\" generaattoria)."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan generaattorilla Pythonissa
    • \n
    • Tiedät, mitä avainsana yield tekee
    • \n
    • Osaat kirjoittaa itse generaattorifunktioita
    • \n

    Eräissä tilanteissa olisi kätevää saada ohjelmassa seuraava alkio (tai useampi alkio) tietystä sarjasta ilman että muodostetaan koko sarjaa kerralla. Pythonissa tämä onnistuu näppärästi generaattoreiden avulla. Generaattorifunktio muistuttaa normaalia arvon palauttavaa funktiota, mutta kun normaalifunktio palauttaa (tai ainakin sen pitäisi palauttaa) samalla syötteellä saman arvon, generaattorifunktio palauttaa seuraavan luvun sarjasta.

    Generaattorien toiminta voidaan toteuttaa ohjelmissa myös muilla keinoilla (itse asiassa sama pätee useimpiin ohjelmointitekniikoihin), mutta niiden käyttö selkeyttää ja mahdollisesti säästää muistia tai muita resursseja tietyntyylisissä ohjelmissa.

    Avainsana yield

    Generaattorifunktion toiminta perustuu avainsanaan yield. Tarkastellaan esimerkkinä funktiota, joka palauttaa yksi kerrallaan kokonaislukuja nollasta alkaen kunnes maksimiarvo on saavutettu:

    \ndef laskuri(maksimi: int):\n    luku = 0\n    while luku <= maksimi:\n        yield luku\n        luku += 1\n

    Nyt laskurilta voi pyytää seuraavan arvon funktiolla next():

    if __name__ == \"__main__\":\n    luvut = laskuri(10)\n    print(\"Eka arvo:\")\n    print(next(luvut))\n    print(\"Toka arvo:\")\n    print(next(luvut))

    Eka arvo:\n0\nToka arvo:\n1

    Niinkuin esimerkistä huomataan, yield muistuttaa return-komentoa siinä, että se palauttaa arvon funktiosta. Eroavaisuus on kuitenkin siinä, että yield palauttaa yksittäisen arvon, ja funktio \"muistaa\" mihin tilaan se jäi.

    Arvoja voi pyytää vain niin kauan kun niitä on generaattorissa jäljellä - tämän jälkeen generaattorifunktio antaa poikkeuksen StopIteration:

    if __name__ == \"__main__\":\n    luvut = laskuri(1)\n    print(next(luvut))\n    print(next(luvut))\n    print(next(luvut))
    0\n1\nTraceback (most recent call last):\nFile \"generaattoriesimerkki.py\", line 11, in \nprint(next(luvut))\nStopIteration

    Poikkeuksen voi ottaa kiinni try-except lohkolla:

    if __name__ == \"__main__\":\n    luvut = laskuri(1)\n    try:\n        print(next(luvut))\n        print(next(luvut))\n        print(next(luvut))\n    except StopIteration:\n        print(\"Luvut loppuivat kesken\")

    0\n1\nLuvut loppuivat kesken

    Jos halutaan palauttaa kaikki generaattorin tuottamat alkiot, helpointa on iteroida ne läpi for-lauseella:

    if __name__ == \"__main__\":\n    luvut = laskuri(5)\n    for luku in luvut:\n        print(luku)

    0\n1\n2\n3\n4\n5

    Kirjoita generaattorifunktio parilliset(alku: int, maksimi: int), joka saa parametrikseen alkuarvon ja maksimin. Funktio tuottaa alkuarvosta lähtien parillisia lukuja. Kun saavutetaan maksimi, generaattori pysähtyy.

    Kaksi esimerkkiä funktion käytöstä:

    luvut = parilliset(2, 10)\nfor luku in luvut:\n    print(luku)

    2\n4\n6\n8\n10

    luvut = parilliset(11, 21)\nfor luku in luvut:\n    print(luku)

    12\n14\n16\n18\n20

    Alkuluvuksi sanotaan kokonaislukua, joka on vähintään 2 ja jaollinen ainoastaan 1:llä ja itsellään. Ensimmäiset alkuluvut ovat 2, 3, 5, 7, 11 ja 13.

    Kirjota generaattorifunktio alkuluvut(), joka luo uuden generaattorin. Generaattori palauttaa yksi kerrallaan alkulukuja järjestyksessä 2:sta alkaen. Huomaa, että generaattori ei pysähdy koskaan, vaan palauttaa lisää lukuja niin kauan kuin niitä pyydetään.

    Esimerkiksi:

    luvut = alkuluvut()\nfor i in range(8):\n    print(next(luvut))

    2\n3\n5\n7\n11\n13\n17\n19

    Vinkki: Voit tarkastaa, onko luku x alkuluku, silmukalla, joka käy läpi luvut 2:sta lukuun x–1 asti. Jos jokin näistä luvuista jakaa x:n, niin se ei ole alkuluku.

    Generaattorikoosteet

    Generaattorin voi luoda myös listakoostetta (list comprehension) muistuttavalla syntaksilla. Erotuksena listakoosteeseen on, että lauseke ympäröidään kaarisulkeilla hakasulkeiden sijasta.

    Esimerkiksi

    # Generaattori palauttaa 2:n potensseja\nneliot = (x ** 2 for x in range(1, 64))\n\nprint(neliot)\n\nfor i in range(5):\n    print(next(neliot))

    <generator object <genexpr> at 0x000002B4224EBFC0>\n1\n4\n9\n16\n25

    Toinen esimerkki, jossa generaattori tuottaa kolmimerkkisiä alijonoja englanninkielisistä aakkosista. Esimerkissä tulostetaan generaattorin 10 ensimmäistä alkiota:

    alijonot = (\"abcdefghijklmnopqrstuvwxyz\"[i : i + 3] for i in range(24))\n\n# tulostetaan ensimmäiset 10 alijonoa\nfor i in range(10):\n    print(next(alijonot))

    abc\nbcd\ncde\ndef\nefg\nfgh\nghi\nhij\nijk\njkl

    Tee funktio sanageneraattori(kirjaimet: str, pituus: int, maara: int), joka muodostaa ja palauttaa annettujen parametrien avulla satunnaisia sanoja tuottavan generaattorin.

    Satunnainen sana muodostetaan valitsemalla pituus kappaletta kirjaimia valikoimasta kirjaimet. Sama kirjain saa esiintyä sanassa monta kertaa.

    Generaattori palauttaa maara kappaletta sanoja ennen kuin se pysähtyy.

    Esimerkki funktion kutsumisesta:

    sanagen = sanageneraattori(\"abcdefg\", 3, 5)\nfor sana in sanagen:\n    print(sana)

    dbf\nbaf\nead\nfga\nccc

    Huom! Voit ratkaista tehtävän itse valitsemallasi tavalla (eli käyttäen joko generaattorikoostetta tai \"perinteistä\" generaattoria).

    ","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/2-generaattorit.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-12/3-funktionaalista-ohjelmointia/page-data.json b/page-data/osa-12/3-funktionaalista-ohjelmointia/page-data.json index 6df891412..fed71b179 100644 --- a/page-data/osa-12/3-funktionaalista-ohjelmointia/page-data.json +++ b/page-data/osa-12/3-funktionaalista-ohjelmointia/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-12/3-funktionaalista-ohjelmointia", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan funktonaalisella ohjelmoinilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää operaatioita map, reduce ja filter omissa ohjelmissasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktionaalisella ohjelmoinnilla tarkoitetaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ohjelmointiparadigmaa"}]},{"type":"text","value":", jossa vältetään tilan muutoksia mahdollisimman pitkälle. Muuttujien sijasta ohjelman suoritus perustuu funktionaalisessa ohjelmoinnissa mahdollisimman pitkälti funktioiden keskinäisiin kutsuihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin esitetyt lambda-lausekkeet ja listakoosteet ovat esimerkkejä funktionaalisesta ohjelmointityylistä, koska niitä käyttämällä voidaan välttää ohjelman tilan muutokset - esimerkiksi lambda-lausekkeella voimme luoda funktion ilman että viittausta siihen tallennetaan mihinkään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktionaalinen ohjelmointi on esimerkki ohjelmointiparadigmasta eli ohjelmointityylistä. Muita tyypillisiä ja kurssilla jo aiemmin käsiteltyjä paradigmoja ovat esimerkiksi"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"imperatiivinen paradigma, joka perustuu peräkkäisiin komentoihin ja niiden suorittamiseen järjestyksessä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"proseduraalinen paradigma, jossa ohjelma jaetaan pienempiin aliohjelmiin. Imperatiivinen ja proseduraalinen paradigma tarkoittavat joidenkin määrittelyjen mukaan samaa asiaa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"olio-ohjelmointi, jossa ohjelma ja sen tila mallinnetaan luokista muodostettujen olioiden avulla."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin monipuolisuus tulee hyvin esille siinä, että voimme hyödyntää siinä useita eri paradigmoja - jopa samoissa ohjelmissa. Näin voimme hyödyntää tehokkainta ja selkeintä tapaa ongelmien ratkaisemiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä muutamaa funktionaalisen ohjelmoinnin työkalua Pythonissa."}]},{"type":"element","tagName":"h2","properties":{"id":"map","style":"position:relative;"},"children":[{"type":"text","value":"map"},{"type":"element","tagName":"a","properties":{"href":"#map","ariaLabel":"map permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" suorittaa annetun operaation kaikille annetun iteroitavan sarjan alkioille. Niinpä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" muistuttaa koostetta monessa mielessä, syntaksi tosin näyttää erilaiselta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä funktiokutsua, joka muuttaa merkkijonot kokonaisluvuiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjonolista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-10\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"23\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"98\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-110\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mjonolista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\n123\n-10\n23\n98\n0\n-110"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" yleinen syntaksi on siis"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map(, )"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa map-tyyppisen objektin, jonka voi joko iteroida läpi for-lauseella tai esimerkiksi muuttaa listaksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"list"}]},{"type":"text","value":"-funktiolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjain_isoksi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntestilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nvalmiit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvalmiit_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"valmiit_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Eka', 'Toka', 'Kolmas', 'Neljäs']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten esimerkistä huomataan, map-funktiossa voi tietysti käyttää lambda-lausekkeella luodun funktion lisäksi myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-avainsanalla aiemmin määriteltyä nimettyä funktiota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellinen esimerkki voitaisiin toteuttaa myös vaikkapa listakoosteen avulla, esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjain_isoksi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntestilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n\nvalmiit_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"valmiit_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...tai esimerkiksi iteroimalla lista läpi for-lauseella ja tallentamalla käsitellyt alkiot uuteen listaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"append"}]},{"type":"text","value":"-metodilla. Onkin tyypillistä, että saman asian voi toteuttaa usealla eri tavalla. Eri vaihtoehtojen tunteminen auttaa valitsemaan niistä ohjelmaan (ja omaan makuun) parhaiten sopivan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktion palauttama lopputulos ei ole lista, vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iteraattori"}]},{"type":"text","value":"-olio ja vaikka se käyttäytyykin listan tapaan monissa tilanteissa, niin näin ei ole aina."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjain_isoksi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntestilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# talletetaan map-funktion tulos"}]},{"type":"text","value":"\nvalmiit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sama uusiksi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli kun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktion tuloksena olevat nimet yritetään tulostaa toiseen kertaan, ei tulostu mitään. Syynä tälle on se, läpikäynti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lauseella käy iteraattorin oliot jo läpi, ja kun samaa yritetään toistamiseen, ei ole enää mitään läpikäytävää!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelma haluaa tarkastella "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktion tulosta useampaan kertaan, tulee tulos esimerkiksi muuttaa listaksi antamalla se parametriksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"list"}]},{"type":"text","value":"-konstruktorille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"testilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muutetaan map-funktion palauttama iteraattori listaksi"}]},{"type":"text","value":"\nvalmiit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sama uusiksi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:\nEka\nToka\nKolmas\nNeljäs"}]}]},{"type":"element","tagName":"h2","properties":{"id":"map-ja-oliot","style":"position:relative;"},"children":[{"type":"text","value":"map ja oliot"},{"type":"element","tagName":"a","properties":{"href":"#map-ja-oliot","ariaLabel":"map ja oliot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" voidaan toki käsitellä myös omien luokkien olioita. Asiaan ei liity mitään tavanomaisesta poikkeavaa. Tarkastellaan seuraavaa esimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahasumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahasumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" rahasumma\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo\n\nt1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Köyhä \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"223344\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija Miljonääri \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nasiakkaat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" asiakkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsaldot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" saldo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" saldot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reijo Rahakas\nKeijo Köyhä\nMaija Miljonääri\n5000\n1\n1000000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa selvitetään ensin funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" avulla tilien omistajat. Huomaa miten lambda-funktiolla haetaan attribuuttina oleva nimi pankkitiliolioista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asiakkaat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen haetaan samalla tyylillä jokaisen pankkitilin saldo. Lambda-funktio on nyt hieman erilainen, sillä saldo saadaan selville kutsumalla pankkitiliolion metodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"saldot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suoritukset","tmcname":"osa12-11_suoritukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on mukana kurssisuoritusta kuvaava luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suoritus"}]},{"type":"text","value":", joka toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijan_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python\nOhjelmoinnin perusteet\n5\nPekka Python, arvosana kurssilta Ohjelmoinnin perusteet 5"}]}]},{"type":"element","tagName":"h2","properties":{"id":"suorittajat","style":"position:relative;"},"children":[{"type":"text","value":"Suorittajat"},{"type":"element","tagName":"a","properties":{"href":"#suorittajat","ariaLabel":"suorittajat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorittajien_nimet(suoritukset: list)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorittajien nimet."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokurssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suorittajien_nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python\nOlivia Ohjelmoija\nPekka Python"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"kurssit","style":"position:relative;"},"children":[{"type":"text","value":"Kurssit"},{"type":"element","tagName":"a","properties":{"href":"#kurssit","ariaLabel":"kurssit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssien_nimet(suoritukset: list)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolla on suorituksessa olevien kurssien nimet aakkosjärjestyksessä. Kukin kurssi esiintyy listalla vain kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokurssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kurssien_nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin jatkokurssi\nOhjelmoinnin perusteet"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyödynnä funktion toteutuksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktiota. Se ei tosin yksistään riitä, joten tarvitset muutakin..."}]}]},{"type":"element","tagName":"h2","properties":{"id":"filter","style":"position:relative;"},"children":[{"type":"text","value":"filter"},{"type":"element","tagName":"a","properties":{"href":"#filter","ariaLabel":"filter permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" muistuttaa funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":", mutta nimensä mukaisesti se ei poimi kaikkia alkioita lähteestä, vaan ainoastaan ne, joille annettu funktio palauttaa arvon True."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan taas ensin esimerkkiä funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n6\n4\n10\n14"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama esimerkki voitaisiin kirjoittaa ilman lambda-lauseketta määrittelemällä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-avainsanalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"onko_parillinen"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_parillinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiminnallisuuden kannalta ohjelmat ovat täysin yhtäläiset. Onkin mielipidekysymys kumpaa pitää selkeämpänä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä suodattamisesta. Ohjelmassa poimitaan kalalistasta ainoastaan ne kalat, jotka ovat vähintään 1000 gramman painoisia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kala"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa tietynpainoista kalaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" laji"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laji "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laji\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paino\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laji"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" g.)\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1870"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ahven\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"763"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3410"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Turska\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2449"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Särki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"210"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kalat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n ylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kalat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ylikiloiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Taas kerran sama voitaisiin toteuttaa listakoosteena:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kalat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"filter-palauttaa-iteraattorin","style":"position:relative;"},"children":[{"type":"text","value":"filter palauttaa iteraattorin"},{"type":"element","tagName":"a","properties":{"href":"#filter-palauttaa-iteraattorin","ariaLabel":"filter palauttaa iteraattorin permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" tapaan, myös funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" palauttaa listan sijaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iteraattorin"}]},{"type":"text","value":" ja on tilanteita joissa on syytä olla varuillaan sillä iteraattorin voi käydä läpi vain kerran. Eli seuraava yritys tulostaa suuret kalat kahteen kertaan ei onnistu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1870"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ahven\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"763"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3410"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Turska\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2449"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Särki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"210"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkalat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kalat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ylikiloiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sama uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ylikiloiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuu"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)\nsama uudelleen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" tulosta on tarve käsitellä useaan kertaan, tulee se muuttaa esimerkiksi listaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kalat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muutetaan tulos listaksi kutsumalla list-konstruktorioa"}]},{"type":"text","value":"\nylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kalat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Rajatut suoritukset","tmcname":"osa12-12_rajatut_suoritukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä jatketaan luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suoritus"}]},{"type":"text","value":" käyttämistä"}]},{"type":"element","tagName":"h2","properties":{"id":"hyvaksytyt-suoritukset","style":"position:relative;"},"children":[{"type":"text","value":"Hyväksytyt suoritukset"},{"type":"element","tagName":"a","properties":{"href":"#hyvaksytyt-suoritukset","ariaLabel":"hyvaksytyt suoritukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hyvaksytyt(suoritukset: list)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on vähintään 1."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokurssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hyvaksytyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nOlivia Ohjelmoija arvosana kurssilta Ohjelmoinnin perusteet 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"arvosanan-suoritukset","style":"position:relative;"},"children":[{"type":"text","value":"Arvosanan suoritukset"},{"type":"element","tagName":"a","properties":{"href":"#arvosanan-suoritukset","ariaLabel":"arvosanan suoritukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suoritus_arvosanalla(suoritukset: list, arvosana: int)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita sekä kokonaisluvun. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on sama kuin toisen parametrin arvo."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Johdatus yliopistomatematiikkaan\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suoritus_arvosanalla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nPekka Python, arvosana kurssilta Tietoliikenteen perusteet 3\nOlivia Ohjelmoija, arvosana kurssilta Johdatus yliopistomatematiikkaan 3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"kurssin-suorittajat","style":"position:relative;"},"children":[{"type":"text","value":"Kurssin suorittajat"},{"type":"element","tagName":"a","properties":{"href":"#kurssin-suorittajat","ariaLabel":"kurssin suorittajat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssin_suorittajat(suoritukset: list, kurssi: str)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita sekä kurssin nimen. Funktio palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"aakkosjärjestyksessä"}]},{"type":"text","value":" niiden opiskelijoiden nimet, jotka ovat suorittaneet parametrina olevan kurssin arvosanalla joka on suurempi kuin nolla."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Niilo Nörtti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kurssin_suorittajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niilo Nörtti\nOlivia Ohjelmoija"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen funktioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"h2","properties":{"id":"reduce","style":"position:relative;"},"children":[{"type":"text","value":"reduce"},{"type":"element","tagName":"a","properties":{"href":"#reduce","ariaLabel":"reduce permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viimeinen tarkastelemamme funktio on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":". Kuten funktion nimi vihjaa, sen tarkoituksena on vähentää sarjan alkioiden määrä. Itse asiassa alkioiden sijasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" palauttaa yksittäisen arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reduce toimii sitten, että se pitää mukanaan koko ajan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"arvoa"}]},{"type":"text","value":", jota se muuttaa yksi kerrallaan käydessään läpi listan alkioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki, joka summaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktion avulla listan luvut yhteen. Huomaa, että Pythonin versiosta 3 alkaen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" pitää erikseen ottaa käyttöön moduulista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"functools"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlukujen_summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukujen_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä hieman tarkemmin. Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" saa kolme parametria. Parametreista toisena on läpikäytävä lista, ja kolmantena on laskennan alkuarvo. Koska laskemme listan alkioiden summaa, on sopiva alkuarvo nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisenä parametrina on funktio, joka suorittaa toimenpiteen yksi kerrallaan kullekin listan alkiolle. Tällä kertaa funktio on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla on kaksi parametria. Näistä ensimmäinen on laskennan sen hetkinen tulos ja toinen parametri on käsittelyvuorossa oleva listan alkio. Funktio laskee uuden arvon parametriensa perusteella. Tässä tapauksessa uusi arvio on vanha summa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"plus"}]},{"type":"text","value":" kyseisen alkion arvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" toiminta hahmottuu kenties selkeämmin, jos käytetään lambdan sijaan normaalia funktiota apuna ja tehdään funktiosta aputulostuksia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# reducen apufunktio joka huolehtii yhden alkion arvon lisäämisestä summaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"summa nyt "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", vuorossa alkio "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# uusi summa on vanha summa + alkion arvo"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio\n\nlukujen_summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukujen_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"summa nyt 0, vuorossa alkio 2\nsumma nyt 2, vuorossa alkio 3\nsumma nyt 5, vuorossa alkio 1\nsumma nyt 6, vuorossa alkio 5\n11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisenä siis käsitellään listan alkio, jonka arvo on 2. Tässä vaiheessa summa on 0, eli sillä on reducelle annettu alkuarvo. Funktio laskee ja palauttaa näiden summan eli 0 + 2."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä arvo on parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" arvona kun funktiota kutsutaan seuraavalle listan alkiolle eli luvulle 3. Funktio laskee ja palauttaa 2 + 3, joka taas toimii parametrina seuraavalle funktiokutsulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkkimme laskee kaikkien listassa olevien kokonaislukujen tulon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" tulo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" tulo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"480"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska on kyse tulosta, ei alkuarvo voi olla nyt 0 (miten käy jos se olisi nolla?), vaan sopiva arvo sille on 1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aivan kuten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":", myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" voi käsitellä minkä tahansa tyyppisiä olioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä pankin tilien yhteenlasketun saldon selvittämistä reducella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahasumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahasumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" rahasumma\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo\n\nt1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Köyhä \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"223344\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija Miljonääri \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldojen_summaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"yht_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" yht_saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsaldot_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldojen_summaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pankissa rahaa yhteensä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldot_yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"pankissa rahaa yhteensä\n1005001"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa miten funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldojen_summaaja"}]},{"type":"text","value":" \"kaivaa\" saldon jokaisen tiliolion sisältä kutsumalla tilille saldon palauttavaa metodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldojen_summaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"yht_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" yht_saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Alkuarvoton reduce"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" kolmas parametri eli alkuarvo ei itse asiassa ole kaikissa tilanteissa pakollinen. Esimerkiksi summan laskeminen onnistuisi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ilman"}]},{"type":"text","value":" alkuarvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlukujen_summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukujen_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos alkuarvoa ei anneta, toimii listan ensimmäinen luku alkuarvona ja \"redusointi\" aloitetaan vasta listan toisesta alkiosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jos käsiteltävän listan alkiot ovat eri tyyppisiä kuin laskettava arvo, on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktion kolmas parametri välttämätön. Jos yrittäisimme olla tili-esimerkissä käyttämättä alkuarvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"saldot_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldojen_summaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"olisi seurauksena virhe"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"TypeError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" unsupported operand "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"s"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Pankkitili'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'int'"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktion parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yht_saldo"}]},{"type":"text","value":" saisi ensimmäisellä kerralla arvokseen listan ensimmäisen pankkitilin ja sen summaaminen pankkitilin saldoon ei olisi mahdollista."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Opintopisteet","tmcname":"osa12-13_opintopisteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan tässä tehtävässä hieman erilaista versiota luokasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suoritus"}]},{"type":"text","value":". Tällä kertaa se kuvastaa ainoastaan yksittäisen opiskelijan kurssisuorituksia. Luokka toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietorakenteet ja algoritmit (10 op) arvosana 3\nTietorakenteet ja algoritmit\n10\n3"}]}]},{"type":"element","tagName":"h2","properties":{"id":"opintopistemaara","style":"position:relative;"},"children":[{"type":"text","value":"Opintopistemäärä"},{"type":"element","tagName":"a","properties":{"href":"#opintopistemaara","ariaLabel":"opintopistemaara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikkien_opintopisteiden_summa"}]},{"type":"text","value":", joka saa parametriksi listan suorituksia ja laskee suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokutssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kaikkien_opintopisteiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"20"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"hyvaksyttyjen-opintopistemaara","style":"position:relative;"},"children":[{"type":"text","value":"Hyväksyttyjen opintopistemäärä"},{"type":"element","tagName":"a","properties":{"href":"#hyvaksyttyjen-opintopistemaara","ariaLabel":"hyvaksyttyjen opintopistemaara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hyvaksyttyjen_opintopisteiden_summa"}]},{"type":"text","value":", joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokutssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hyvaksyttyjen_opintopisteiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"15"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"hyvaksyttyjen-suoritusten-keskiarvo","style":"position:relative;"},"children":[{"type":"text","value":"Hyväksyttyjen suoritusten keskiarvo"},{"type":"element","tagName":"a","properties":{"href":"#hyvaksyttyjen-suoritusten-keskiarvo","ariaLabel":"hyvaksyttyjen suoritusten keskiarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":", joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten arvosanojen keskiarvon. Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokutssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyödynnä funktion toteutuksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/osa-12/3-funktionaalista-ohjelmointia#filter-palauttaa-iteraattorin"},"children":[{"type":"text","value":"Tämä"}]},{"type":"text","value":" lienee syytä pitää mielessä tätä tehtävää tehdessä-"}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan funktonaalisella ohjelmoinilla
    • \n
    • Osaat hyödyntää operaatioita map, reduce ja filter omissa ohjelmissasi
    • \n

    Funktionaalisella ohjelmoinnilla tarkoitetaan ohjelmointiparadigmaa, jossa vältetään tilan muutoksia mahdollisimman pitkälle. Muuttujien sijasta ohjelman suoritus perustuu funktionaalisessa ohjelmoinnissa mahdollisimman pitkälti funktioiden keskinäisiin kutsuihin.

    Aikaisemmin esitetyt lambda-lausekkeet ja listakoosteet ovat esimerkkejä funktionaalisesta ohjelmointityylistä, koska niitä käyttämällä voidaan välttää ohjelman tilan muutokset - esimerkiksi lambda-lausekkeella voimme luoda funktion ilman että viittausta siihen tallennetaan mihinkään.

    Funktionaalinen ohjelmointi on esimerkki ohjelmointiparadigmasta eli ohjelmointityylistä. Muita tyypillisiä ja kurssilla jo aiemmin käsiteltyjä paradigmoja ovat esimerkiksi

      \n
    • imperatiivinen paradigma, joka perustuu peräkkäisiin komentoihin ja niiden suorittamiseen järjestyksessä
    • \n
    • proseduraalinen paradigma, jossa ohjelma jaetaan pienempiin aliohjelmiin. Imperatiivinen ja proseduraalinen paradigma tarkoittavat joidenkin määrittelyjen mukaan samaa asiaa.
    • \n
    • olio-ohjelmointi, jossa ohjelma ja sen tila mallinnetaan luokista muodostettujen olioiden avulla.
    • \n

    Pythonin monipuolisuus tulee hyvin esille siinä, että voimme hyödyntää siinä useita eri paradigmoja - jopa samoissa ohjelmissa. Näin voimme hyödyntää tehokkainta ja selkeintä tapaa ongelmien ratkaisemiseksi.

    Tarkastellaan vielä muutamaa funktionaalisen ohjelmoinnin työkalua Pythonissa.

    map

    Funktio map suorittaa annetun operaation kaikille annetun iteroitavan sarjan alkioille. Niinpä map muistuttaa koostetta monessa mielessä, syntaksi tosin näyttää erilaiselta.

    Tarkastellaan esimerkkinä funktiokutsua, joka muuttaa merkkijonot kokonaisluvuiksi:

    mjonolista = [\"123\",\"-10\", \"23\", \"98\", \"0\", \"-110\"]\n\nluvut = map(lambda x : int(x), mjonolista)\n\nprint(luvut)\n\nfor luku in luvut:\n    print(luku)

    <map object at 0x0000021A4BFA9A90>\n123\n-10\n23\n98\n0\n-110

    Funktion map yleinen syntaksi on siis

    map(<funktio, jota alkioille kutsutaan>, <sarja, jonka alkioille funktiota kutsutaan>)

    Funktio palauttaa map-tyyppisen objektin, jonka voi joko iteroida läpi for-lauseella tai esimerkiksi muuttaa listaksi list-funktiolla:

    def alkukirjain_isoksi(mjono: str):\n    alku = mjono[0]\n    alku = alku.upper()\n    return alku + mjono[1:]\n\ntestilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\nvalmiit = map(alkukirjain_isoksi, testilista)\n\nvalmiit_lista = list(valmiit)\nprint(valmiit_lista)

    ['Eka', 'Toka', 'Kolmas', 'Neljäs']

    Kuten esimerkistä huomataan, map-funktiossa voi tietysti käyttää lambda-lausekkeella luodun funktion lisäksi myös def-avainsanalla aiemmin määriteltyä nimettyä funktiota.

    Edellinen esimerkki voitaisiin toteuttaa myös vaikkapa listakoosteen avulla, esimerkiksi:

    def alkukirjain_isoksi(mjono: str):\n    alku = mjono[0]\n    alku = alku.upper()\n    return alku + mjono[1:]\n\ntestilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\n\nvalmiit_lista = [alkukirjain_isoksi(alkio) for alkio in testilista]\nprint(valmiit_lista)

    ...tai esimerkiksi iteroimalla lista läpi for-lauseella ja tallentamalla käsitellyt alkiot uuteen listaan append-metodilla. Onkin tyypillistä, että saman asian voi toteuttaa usealla eri tavalla. Eri vaihtoehtojen tunteminen auttaa valitsemaan niistä ohjelmaan (ja omaan makuun) parhaiten sopivan.

    Kannattaa huomata, että map-funktion palauttama lopputulos ei ole lista, vaan iteraattori-olio ja vaikka se käyttäytyykin listan tapaan monissa tilanteissa, niin näin ei ole aina.

    Tarkastellaan seuraavaa esimerkkiä:

    def alkukirjain_isoksi(mjono: str):\n    alku = mjono[0]\n    alku = alku.upper()\n    return alku + mjono[1:]\n\ntestilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\n# talletetaan map-funktion tulos\nvalmiit = map(alkukirjain_isoksi, testilista)\n\nfor sana in valmiit:\n  print(sana)\n\nprint(\"sama uusiksi:\")\nfor sana in valmiit:\n  print(sana)

    Tulostus on seuraava:

    Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:

    Eli kun map-funktion tuloksena olevat nimet yritetään tulostaa toiseen kertaan, ei tulostu mitään. Syynä tälle on se, läpikäynti for-lauseella käy iteraattorin oliot jo läpi, ja kun samaa yritetään toistamiseen, ei ole enää mitään läpikäytävää!

    Jos ohjelma haluaa tarkastella map-funktion tulosta useampaan kertaan, tulee tulos esimerkiksi muuttaa listaksi antamalla se parametriksi list-konstruktorille:

    testilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\n# muutetaan map-funktion palauttama iteraattori listaksi\nvalmiit = list(map(alkukirjain_isoksi, testilista))\n\nfor sana in valmiit:\n  print(sana)\n\nprint(\"sama uusiksi:\")\nfor sana in valmiit:\n  print(sana)

    Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:\nEka\nToka\nKolmas\nNeljäs

    map ja oliot

    Funktiolla map voidaan toki käsitellä myös omien luokkien olioita. Asiaan ei liity mitään tavanomaisesta poikkeavaa. Tarkastellaan seuraavaa esimerkkiä

    class Pankkitili:\n    def __init__(self, numero: str, nimi: str, saldo: float):\n        self.__numero = numero\n        self.nimi = nimi\n        self.__saldo = saldo\n\n    def lisaa_rahaa(self, rahasumma: float):\n        if rahasumma > 0:\n            self.__saldo += rahasumma\n\n    def hae_saldo(self):\n        return self.__saldo\n\nt1 = Pankkitili(\"123456\", \"Reijo Rahakas\", 5000)\nt2 = Pankkitili(\"12321\", \"Keijo Köyhä \", 1)\nt3 = Pankkitili(\"223344\", \"Maija Miljonääri \", 1000000)\n\ntilit = [t1, t2, t3]\n\nasiakkaat = map(lambda t: t.nimi, tilit)\nfor nimi in asiakkaat:\n  print(nimi)\n\nsaldot = map(lambda t: t.hae_saldo(), tilit)\nfor saldo in saldot:\n  print(saldo)

    Reijo Rahakas\nKeijo Köyhä\nMaija Miljonääri\n5000\n1\n1000000

    Koodissa selvitetään ensin funktion map avulla tilien omistajat. Huomaa miten lambda-funktiolla haetaan attribuuttina oleva nimi pankkitiliolioista:

    asiakkaat = map(lambda t: t.nimi, tilit)

    Tämän jälkeen haetaan samalla tyylillä jokaisen pankkitilin saldo. Lambda-funktio on nyt hieman erilainen, sillä saldo saadaan selville kutsumalla pankkitiliolion metodia:

    saldot = map(lambda t: t.hae_saldo(), tilit)

    Tehtäväpohjassa on mukana kurssisuoritusta kuvaava luokka Suoritus, joka toimii seuraavasti:

    suoritus = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 5)\nprint(suoritus.opiskelijan_nimi)\nprint(suoritus.kurssi)\nprint(suoritus.arvosana)\nprint(suoritus)

    Pekka Python\nOhjelmoinnin perusteet\n5\nPekka Python, arvosana kurssilta Ohjelmoinnin perusteet 5

    Suorittajat

    Tee funktio suorittajien_nimet(suoritukset: list) joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorittajien nimet.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin jatkokurssi\", 2)\n\nfor nimi in suorittajien_nimet([s1, s2, s3]):\n    print(nimi)

    Pekka Python\nOlivia Ohjelmoija\nPekka Python

    Toteuta funktio käyttäen map-funktiota!

    Kurssit

    Tee funktio kurssien_nimet(suoritukset: list) joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolla on suorituksessa olevien kurssien nimet aakkosjärjestyksessä. Kukin kurssi esiintyy listalla vain kerran.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin jatkokurssi\", 2)\n\nfor nimi in kurssien_nimet([s1, s2, s3]):\n    print(nimi)

    Ohjelmoinnin jatkokurssi\nOhjelmoinnin perusteet

    Hyödynnä funktion toteutuksessa map-funktiota. Se ei tosin yksistään riitä, joten tarvitset muutakin...

    filter

    Funktio filter muistuttaa funktiota map, mutta nimensä mukaisesti se ei poimi kaikkia alkioita lähteestä, vaan ainoastaan ne, joille annettu funktio palauttaa arvon True.

    Tarkastellaan taas ensin esimerkkiä funktion käytöstä:

    luvut = [1, 2, 3, 5, 6, 4, 9, 10, 14, 15]\n\nparilliset = filter(lambda luku: luku % 2 == 0, luvut)\n\nfor luku in parilliset:\n    print(luku)

    2\n6\n4\n10\n14

    Sama esimerkki voitaisiin kirjoittaa ilman lambda-lauseketta määrittelemällä funktio def-avainsanalla:

    def onko_parillinen(luku: int):\n    if luku % 2 == 0:\n        return True\n    return False\n\nluvut = [1, 2, 3, 5, 6, 4, 9, 10, 14, 15]\n\nparilliset = filter(onko_parillinen, luvut)\n\nfor luku in parilliset:\n    print(luku)

    Toiminnallisuuden kannalta ohjelmat ovat täysin yhtäläiset. Onkin mielipidekysymys kumpaa pitää selkeämpänä.

    Tarkastellaan vielä toista esimerkkiä suodattamisesta. Ohjelmassa poimitaan kalalistasta ainoastaan ne kalat, jotka ovat vähintään 1000 gramman painoisia:

    class Kala:\n    \"\"\" Luokka mallintaa tietynpainoista kalaa \"\"\"\n    def __init__(self, laji: str, paino: int):\n        self.laji = laji\n        self.paino = paino\n\n    def __repr__(self):\n        return f\"{self.laji} ({self.paino} g.)\"\n\nif __name__ == \"__main__\":\n    k1 = Kala(\"Hauki\", 1870)\n    k2 = Kala(\"Ahven\", 763)\n    k3 = Kala(\"Hauki\", 3410)\n    k4 = Kala(\"Turska\", 2449)\n    k5 = Kala(\"Särki\", 210)\n\n    kalat = [k1, k2, k3, k4, k5]\n\n    ylikiloiset = filter(lambda kala : kala.paino >= 1000, kalat)\n\n    for kala in ylikiloiset:\n        print(kala)

    Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)

    Taas kerran sama voitaisiin toteuttaa listakoosteena:

    ylikiloiset = [kala for kala in kalat if kala.paino >= 1000]

    filter palauttaa iteraattorin

    Funktion map tapaan, myös funktio filter palauttaa listan sijaan iteraattorin ja on tilanteita joissa on syytä olla varuillaan sillä iteraattorin voi käydä läpi vain kerran. Eli seuraava yritys tulostaa suuret kalat kahteen kertaan ei onnistu:

    k1 = Kala(\"Hauki\", 1870)\nk2 = Kala(\"Ahven\", 763)\nk3 = Kala(\"Hauki\", 3410)\nk4 = Kala(\"Turska\", 2449)\nk5 = Kala(\"Särki\", 210)\n\nkalat = [k1, k2, k3, k4, k5]\n\nylikiloiset = filter(lambda kala : kala.paino >= 1000, kalat)\n\nfor kala in ylikiloiset:\n    print(kala)\n\nprint(\"sama uudelleen\")\n\nfor kala in ylikiloiset:\n    print(kala)

    Tulostuu

    Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)\nsama uudelleen

    Jos funktion filter tulosta on tarve käsitellä useaan kertaan, tulee se muuttaa esimerkiksi listaksi:

    kalat = [k1, k2, k3, k4, k5]\n\n# muutetaan tulos listaksi kutsumalla list-konstruktorioa\nylikiloiset = list(filter(lambda kala : kala.paino >= 1000, kalat))

    Tässä tehtävässä jatketaan luokan Suoritus käyttämistä

    Hyväksytyt suoritukset

    Tee funktio hyvaksytyt(suoritukset: list) joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on vähintään 1.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin jatkokurssi\", 0)\n\nfor suoritus in hyvaksytyt([s1, s2, s3]):\n    print(suoritus)

    Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nOlivia Ohjelmoija arvosana kurssilta Ohjelmoinnin perusteet 5

    Toteuta funktio käyttäen filter-funktiota!

    Arvosanan suoritukset

    Tee funktio suoritus_arvosanalla(suoritukset: list, arvosana: int) joka saa parametriksi listan suoritus-olioita sekä kokonaisluvun. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on sama kuin toisen parametrin arvo.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Tietoliikenteen perusteet\", 3)\ns4 = Suoritus(\"Olivia Ohjelmoija\", \"Johdatus yliopistomatematiikkaan\", 3)\n\nfor suoritus in suoritus_arvosanalla([s1, s2, s3, s4], 3):\n    print(suoritus)

    Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nPekka Python, arvosana kurssilta Tietoliikenteen perusteet 3\nOlivia Ohjelmoija, arvosana kurssilta Johdatus yliopistomatematiikkaan 3

    Toteuta funktio käyttäen filter-funktiota!

    Kurssin suorittajat

    Tee funktio kurssin_suorittajat(suoritukset: list, kurssi: str) joka saa parametriksi listan suoritus-olioita sekä kurssin nimen. Funktio palauttaa aakkosjärjestyksessä niiden opiskelijoiden nimet, jotka ovat suorittaneet parametrina olevan kurssin arvosanalla joka on suurempi kuin nolla.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Tietoliikenteen perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Tietoliikenteen perusteet\", 0)\ns4 = Suoritus(\"Niilo Nörtti\", \"Tietoliikenteen perusteet\", 3)\n\nfor suoritus in kurssin_suorittajat([s1, s2, s3, s4], \"Tietoliikenteen perusteet\"):\n    print(suoritus)

    Niilo Nörtti\nOlivia Ohjelmoija

    Toteuta funktio käyttäen funktioita filter ja map.

    reduce

    Viimeinen tarkastelemamme funktio on reduce. Kuten funktion nimi vihjaa, sen tarkoituksena on vähentää sarjan alkioiden määrä. Itse asiassa alkioiden sijasta reduce palauttaa yksittäisen arvon.

    Reduce toimii sitten, että se pitää mukanaan koko ajan arvoa, jota se muuttaa yksi kerrallaan käydessään läpi listan alkioita.

    Seuraavassa on esimerkki, joka summaa reduce-funktion avulla listan luvut yhteen. Huomaa, että Pythonin versiosta 3 alkaen funktio reduce pitää erikseen ottaa käyttöön moduulista functools.

    from functools import reduce\n\nlista = [2, 3, 1, 5]\n\nlukujen_summa = reduce(lambda summa, alkio: summa + alkio, lista, 0)\n\nprint(lukujen_summa)

    11

    Tarkastellaan esimerkkiä hieman tarkemmin. Funktio reduce saa kolme parametria. Parametreista toisena on läpikäytävä lista, ja kolmantena on laskennan alkuarvo. Koska laskemme listan alkioiden summaa, on sopiva alkuarvo nolla.

    Ensimmäisenä parametrina on funktio, joka suorittaa toimenpiteen yksi kerrallaan kullekin listan alkiolle. Tällä kertaa funktio on seuraava:

    lambda summa, alkio: summa + alkio

    Funktiolla on kaksi parametria. Näistä ensimmäinen on laskennan sen hetkinen tulos ja toinen parametri on käsittelyvuorossa oleva listan alkio. Funktio laskee uuden arvon parametriensa perusteella. Tässä tapauksessa uusi arvio on vanha summa plus kyseisen alkion arvo.

    Funktion reduce toiminta hahmottuu kenties selkeämmin, jos käytetään lambdan sijaan normaalia funktiota apuna ja tehdään funktiosta aputulostuksia:

    from functools import reduce\n\nlista = [2, 3, 1, 5]\n\n# reducen apufunktio joka huolehtii yhden alkion arvon lisäämisestä summaan\ndef summaaja(summa, alkio):\n  print(f\"summa nyt {summa}, vuorossa alkio {alkio}\")\n  # uusi summa on vanha summa + alkion arvo\n  return summa + alkio\n\nlukujen_summa = reduce(summaaja, lista, 0)\n\nprint(lukujen_summa)

    Ohjelma tulostaa:

    summa nyt 0, vuorossa alkio 2\nsumma nyt 2, vuorossa alkio 3\nsumma nyt 5, vuorossa alkio 1\nsumma nyt 6, vuorossa alkio 5\n11

    Ensimmäisenä siis käsitellään listan alkio, jonka arvo on 2. Tässä vaiheessa summa on 0, eli sillä on reducelle annettu alkuarvo. Funktio laskee ja palauttaa näiden summan eli 0 + 2.

    Tämä arvo on parametrin summa arvona kun funktiota kutsutaan seuraavalle listan alkiolle eli luvulle 3. Funktio laskee ja palauttaa 2 + 3, joka taas toimii parametrina seuraavalle funktiokutsulle.

    Toinen esimerkkimme laskee kaikkien listassa olevien kokonaislukujen tulon.

    from functools import reduce\n\nlista = [2, 2, 4, 3, 5, 2]\n\ntulo = reduce(lambda tulo, alkio: tulo * alkio, lista, 1)\n\nprint(tulo)

    480

    Koska on kyse tulosta, ei alkuarvo voi olla nyt 0 (miten käy jos se olisi nolla?), vaan sopiva arvo sille on 1.

    Aivan kuten filter ja map, myös reduce voi käsitellä minkä tahansa tyyppisiä olioita.

    Tarkastellaan esimerkkinä pankin tilien yhteenlasketun saldon selvittämistä reducella:

    class Pankkitili:\n    def __init__(self, numero: str, nimi: str, saldo: float):\n        self.__numero = numero\n        self.nimi = nimi\n        self.__saldo = saldo\n\n    def lisaa_rahaa(self, rahasumma: float):\n        if rahasumma > 0:\n            self.__saldo += rahasumma\n\n    def hae_saldo(self):\n        return self.__saldo\n\nt1 = Pankkitili(\"123456\", \"Reijo Rahakas\", 5000)\nt2 = Pankkitili(\"12321\", \"Keijo Köyhä \", 1)\nt3 = Pankkitili(\"223344\", \"Maija Miljonääri \", 1000000)\n\ntilit = [t1, t2, t3]\n\nfrom functools import reduce\n\ndef saldojen_summaaja(yht_saldo, tili):\n  return yht_saldo + tili.hae_saldo()\n\nsaldot_yhteensa = reduce(saldojen_summaaja, tilit, 0)\n\nprint(\"pankissa rahaa yhteensä\")\nprint(saldot_yhteensa)

    Ohjelma tulostaa:

    pankissa rahaa yhteensä\n1005001

    Huomaa miten funktio saldojen_summaaja \"kaivaa\" saldon jokaisen tiliolion sisältä kutsumalla tilille saldon palauttavaa metodia:

    def saldojen_summaaja(yht_saldo, tili):\n  return yht_saldo + tili.hae_saldo()

    Funktion reduce kolmas parametri eli alkuarvo ei itse asiassa ole kaikissa tilanteissa pakollinen. Esimerkiksi summan laskeminen onnistuisi ilman alkuarvoa:

    lista = [2, 3, 1, 5]\n\nlukujen_summa = reduce(lambda summa, alkio: summa + alkio, lista)\n\nprint(lukujen_summa)

    Jos alkuarvoa ei anneta, toimii listan ensimmäinen luku alkuarvona ja \"redusointi\" aloitetaan vasta listan toisesta alkiosta.

    Huomaa, että jos käsiteltävän listan alkiot ovat eri tyyppisiä kuin laskettava arvo, on reduce-funktion kolmas parametri välttämätön. Jos yrittäisimme olla tili-esimerkissä käyttämättä alkuarvoa:

    saldot_yhteensa = reduce(saldojen_summaaja, tilit)

    olisi seurauksena virhe

    TypeError: unsupported operand type(s) for +: 'Pankkitili' and 'int'

    sillä reduce-funktion parametri yht_saldo saisi ensimmäisellä kerralla arvokseen listan ensimmäisen pankkitilin ja sen summaaminen pankkitilin saldoon ei olisi mahdollista.

    Tarkastellaan tässä tehtävässä hieman erilaista versiota luokasta Suoritus. Tällä kertaa se kuvastaa ainoastaan yksittäisen opiskelijan kurssisuorituksia. Luokka toimii seuraavasti:

    suoritus = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nprint(suoritus)\nprint(suoritus.kurssi)\nprint(suoritus.opintopisteet)\nprint(suoritus.arvosana)

    Tietorakenteet ja algoritmit (10 op) arvosana 3\nTietorakenteet ja algoritmit\n10\n3

    Opintopistemäärä

    Toteuta funktio kaikkien_opintopisteiden_summa, joka saa parametriksi listan suorituksia ja laskee suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti

    s1 = Suoritus(\"Ohjelmoinnin perusteet\", 5, 5)\ns2 = Suoritus(\"Ohjelmoinnin jatkokutssi\", 4, 5)\ns3 = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nsumma = kaikkien_opintopisteiden_summa([s1, s2, s3])\nprint(summa)

    20

    Toteuta funktio käyttäen reduce-funktiota!

    Hyväksyttyjen opintopistemäärä

    Toteuta funktio hyvaksyttyjen_opintopisteiden_summa, joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti

    s1 = Suoritus(\"Ohjelmoinnin perusteet\", 5, 5)\ns2 = Suoritus(\"Ohjelmoinnin jatkokutssi\", 0, 4)\ns3 = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nsumma = hyvaksyttyjen_opintopisteiden_summa([s1, s2, s3])\nprint(summa)

    15

    Toteuta funktio käyttäen reduce- ja filter-funktiota!

    Hyväksyttyjen suoritusten keskiarvo

    Toteuta funktio keskiarvo, joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten arvosanojen keskiarvon. Funktio toimii seuraavasti

    s1 = Suoritus(\"Ohjelmoinnin perusteet\", 5, 5)\ns2 = Suoritus(\"Ohjelmoinnin jatkokutssi\", 0, 4)\ns3 = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nsumma = keskiarvo([s1, s2, s3])\nprint(summa)

    4.0

    Hyödynnä funktion toteutuksessa reduce- ja filter-funktiota!

    Tämä lienee syytä pitää mielessä tätä tehtävää tehdessä-

    ","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/3-funktionaalista-ohjelmointia.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan funktonaalisella ohjelmoinilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää operaatioita map, reduce ja filter omissa ohjelmissasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktionaalisella ohjelmoinnilla tarkoitetaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ohjelmointiparadigmaa"}]},{"type":"text","value":", jossa vältetään tilan muutoksia mahdollisimman pitkälle. Muuttujien sijasta ohjelman suoritus perustuu funktionaalisessa ohjelmoinnissa mahdollisimman pitkälti funktioiden keskinäisiin kutsuihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin esitetyt lambda-lausekkeet ja listakoosteet ovat esimerkkejä funktionaalisesta ohjelmointityylistä, koska niitä käyttämällä voidaan välttää ohjelman tilan muutokset - esimerkiksi lambda-lausekkeella voimme luoda funktion ilman että viittausta siihen tallennetaan mihinkään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktionaalinen ohjelmointi on esimerkki ohjelmointiparadigmasta eli ohjelmointityylistä. Muita tyypillisiä ja kurssilla jo aiemmin käsiteltyjä paradigmoja ovat esimerkiksi"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"imperatiivinen paradigma, joka perustuu peräkkäisiin komentoihin ja niiden suorittamiseen järjestyksessä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"proseduraalinen paradigma, jossa ohjelma jaetaan pienempiin aliohjelmiin. Imperatiivinen ja proseduraalinen paradigma tarkoittavat joidenkin määrittelyjen mukaan samaa asiaa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"olio-ohjelmointi, jossa ohjelma ja sen tila mallinnetaan luokista muodostettujen olioiden avulla."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin monipuolisuus tulee hyvin esille siinä, että voimme hyödyntää siinä useita eri paradigmoja - jopa samoissa ohjelmissa. Näin voimme hyödyntää tehokkainta ja selkeintä tapaa ongelmien ratkaisemiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä muutamaa funktionaalisen ohjelmoinnin työkalua Pythonissa."}]},{"type":"element","tagName":"h2","properties":{"id":"map","style":"position:relative;"},"children":[{"type":"text","value":"map"},{"type":"element","tagName":"a","properties":{"href":"#map","ariaLabel":"map permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" suorittaa annetun operaation kaikille annetun iteroitavan sarjan alkioille. Niinpä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" muistuttaa koostetta monessa mielessä, syntaksi tosin näyttää erilaiselta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä funktiokutsua, joka muuttaa merkkijonot kokonaisluvuiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjonolista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-10\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"23\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"98\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-110\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mjonolista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\n123\n-10\n23\n98\n0\n-110"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" yleinen syntaksi on siis"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map(, )"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa map-tyyppisen objektin, jonka voi joko iteroida läpi for-lauseella tai esimerkiksi muuttaa listaksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"list"}]},{"type":"text","value":"-funktiolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjain_isoksi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntestilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nvalmiit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvalmiit_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"valmiit_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Eka', 'Toka', 'Kolmas', 'Neljäs']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten esimerkistä huomataan, map-funktiossa voi tietysti käyttää lambda-lausekkeella luodun funktion lisäksi myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-avainsanalla aiemmin määriteltyä nimettyä funktiota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellinen esimerkki voitaisiin toteuttaa myös vaikkapa listakoosteen avulla, esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjain_isoksi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntestilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n\nvalmiit_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"valmiit_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...tai esimerkiksi iteroimalla lista läpi for-lauseella ja tallentamalla käsitellyt alkiot uuteen listaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"append"}]},{"type":"text","value":"-metodilla. Onkin tyypillistä, että saman asian voi toteuttaa usealla eri tavalla. Eri vaihtoehtojen tunteminen auttaa valitsemaan niistä ohjelmaan (ja omaan makuun) parhaiten sopivan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktion palauttama lopputulos ei ole lista, vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iteraattori"}]},{"type":"text","value":"-olio ja vaikka se käyttäytyykin listan tapaan monissa tilanteissa, niin näin ei ole aina."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjain_isoksi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntestilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# talletetaan map-funktion tulos"}]},{"type":"text","value":"\nvalmiit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sama uusiksi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli kun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktion tuloksena olevat nimet yritetään tulostaa toiseen kertaan, ei tulostu mitään. Syynä tälle on se, läpikäynti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lauseella käy iteraattorin oliot jo läpi, ja kun samaa yritetään toistamiseen, ei ole enää mitään läpikäytävää!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelma haluaa tarkastella "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktion tulosta useampaan kertaan, tulee tulos esimerkiksi muuttaa listaksi antamalla se parametriksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"list"}]},{"type":"text","value":"-konstruktorille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"testilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muutetaan map-funktion palauttama iteraattori listaksi"}]},{"type":"text","value":"\nvalmiit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkukirjain_isoksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" testilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sama uusiksi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" valmiit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:\nEka\nToka\nKolmas\nNeljäs"}]}]},{"type":"element","tagName":"h2","properties":{"id":"map-ja-oliot","style":"position:relative;"},"children":[{"type":"text","value":"map ja oliot"},{"type":"element","tagName":"a","properties":{"href":"#map-ja-oliot","ariaLabel":"map ja oliot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" voidaan toki käsitellä myös omien luokkien olioita. Asiaan ei liity mitään tavanomaisesta poikkeavaa. Tarkastellaan seuraavaa esimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahasumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahasumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" rahasumma\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo\n\nt1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Köyhä \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"223344\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija Miljonääri \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nasiakkaat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" asiakkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsaldot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" saldo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" saldot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reijo Rahakas\nKeijo Köyhä\nMaija Miljonääri\n5000\n1\n1000000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa selvitetään ensin funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" avulla tilien omistajat. Huomaa miten lambda-funktiolla haetaan attribuuttina oleva nimi pankkitiliolioista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asiakkaat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen haetaan samalla tyylillä jokaisen pankkitilin saldo. Lambda-funktio on nyt hieman erilainen, sillä saldo saadaan selville kutsumalla pankkitiliolion metodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"saldot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"map"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suoritukset","tmcname":"osa12-11_suoritukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on mukana kurssisuoritusta kuvaava luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suoritus"}]},{"type":"text","value":", joka toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijan_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python\nOhjelmoinnin perusteet\n5\nPekka Python, arvosana kurssilta Ohjelmoinnin perusteet 5"}]}]},{"type":"element","tagName":"h2","properties":{"id":"suorittajat","style":"position:relative;"},"children":[{"type":"text","value":"Suorittajat"},{"type":"element","tagName":"a","properties":{"href":"#suorittajat","ariaLabel":"suorittajat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorittajien_nimet(suoritukset: list)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorittajien nimet."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokurssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suorittajien_nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python\nOlivia Ohjelmoija\nPekka Python"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"kurssit","style":"position:relative;"},"children":[{"type":"text","value":"Kurssit"},{"type":"element","tagName":"a","properties":{"href":"#kurssit","ariaLabel":"kurssit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssien_nimet(suoritukset: list)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolla on suorituksessa olevien kurssien nimet aakkosjärjestyksessä. Kukin kurssi esiintyy listalla vain kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokurssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kurssien_nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin jatkokurssi\nOhjelmoinnin perusteet"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyödynnä funktion toteutuksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"-funktiota. Se ei tosin yksistään riitä, joten tarvitset muutakin..."}]}]},{"type":"element","tagName":"h2","properties":{"id":"filter","style":"position:relative;"},"children":[{"type":"text","value":"filter"},{"type":"element","tagName":"a","properties":{"href":"#filter","ariaLabel":"filter permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" muistuttaa funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":", mutta nimensä mukaisesti se ei poimi kaikkia alkioita lähteestä, vaan ainoastaan ne, joille annettu funktio palauttaa arvon True."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan taas ensin esimerkkiä funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n6\n4\n10\n14"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama esimerkki voitaisiin kirjoittaa ilman lambda-lauseketta määrittelemällä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":"-avainsanalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"onko_parillinen"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nparilliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_parillinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiminnallisuuden kannalta ohjelmat ovat täysin yhtäläiset. Onkin mielipidekysymys kumpaa pitää selkeämpänä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä suodattamisesta. Ohjelmassa poimitaan kalalistasta ainoastaan ne kalat, jotka ovat vähintään 1000 gramman painoisia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kala"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa tietynpainoista kalaa \"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" laji"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laji "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laji\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paino\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laji"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" g.)\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1870"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ahven\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"763"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3410"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Turska\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2449"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Särki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"210"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kalat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n ylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kalat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ylikiloiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Taas kerran sama voitaisiin toteuttaa listakoosteena:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kalat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"filter-palauttaa-iteraattorin","style":"position:relative;"},"children":[{"type":"text","value":"filter palauttaa iteraattorin"},{"type":"element","tagName":"a","properties":{"href":"#filter-palauttaa-iteraattorin","ariaLabel":"filter palauttaa iteraattorin permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":" tapaan, myös funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" palauttaa listan sijaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iteraattorin"}]},{"type":"text","value":" ja on tilanteita joissa on syytä olla varuillaan sillä iteraattorin voi käydä läpi vain kerran. Eli seuraava yritys tulostaa suuret kalat kahteen kertaan ei onnistu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"k1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1870"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ahven\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"763"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hauki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3410"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Turska\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2449"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nk5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Särki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"210"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkalat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kalat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ylikiloiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sama uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ylikiloiset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuu"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)\nsama uudelleen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" tulosta on tarve käsitellä useaan kertaan, tulee se muuttaa esimerkiksi listaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kalat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"k1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" k5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muutetaan tulos listaksi kutsumalla list-konstruktorioa"}]},{"type":"text","value":"\nylikiloiset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"filter"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" kala "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kalat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Rajatut suoritukset","tmcname":"osa12-12_rajatut_suoritukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä jatketaan luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suoritus"}]},{"type":"text","value":" käyttämistä"}]},{"type":"element","tagName":"h2","properties":{"id":"hyvaksytyt-suoritukset","style":"position:relative;"},"children":[{"type":"text","value":"Hyväksytyt suoritukset"},{"type":"element","tagName":"a","properties":{"href":"#hyvaksytyt-suoritukset","ariaLabel":"hyvaksytyt suoritukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hyvaksytyt(suoritukset: list)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on vähintään 1."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokurssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hyvaksytyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nOlivia Ohjelmoija arvosana kurssilta Ohjelmoinnin perusteet 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"arvosanan-suoritukset","style":"position:relative;"},"children":[{"type":"text","value":"Arvosanan suoritukset"},{"type":"element","tagName":"a","properties":{"href":"#arvosanan-suoritukset","ariaLabel":"arvosanan suoritukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suoritus_arvosanalla(suoritukset: list, arvosana: int)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita sekä kokonaisluvun. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on sama kuin toisen parametrin arvo."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Johdatus yliopistomatematiikkaan\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suoritus_arvosanalla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nPekka Python, arvosana kurssilta Tietoliikenteen perusteet 3\nOlivia Ohjelmoija, arvosana kurssilta Johdatus yliopistomatematiikkaan 3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"kurssin-suorittajat","style":"position:relative;"},"children":[{"type":"text","value":"Kurssin suorittajat"},{"type":"element","tagName":"a","properties":{"href":"#kurssin-suorittajat","ariaLabel":"kurssin suorittajat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssin_suorittajat(suoritukset: list, kurssi: str)"}]},{"type":"text","value":" joka saa parametriksi listan suoritus-olioita sekä kurssin nimen. Funktio palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"aakkosjärjestyksessä"}]},{"type":"text","value":" niiden opiskelijoiden nimet, jotka ovat suorittaneet parametrina olevan kurssin arvosanalla joka on suurempi kuin nolla."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olivia Ohjelmoija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Niilo Nörtti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kurssin_suorittajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietoliikenteen perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Niilo Nörtti\nOlivia Ohjelmoija"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen funktioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"h2","properties":{"id":"reduce","style":"position:relative;"},"children":[{"type":"text","value":"reduce"},{"type":"element","tagName":"a","properties":{"href":"#reduce","ariaLabel":"reduce permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viimeinen tarkastelemamme funktio on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":". Kuten funktion nimi vihjaa, sen tarkoituksena on vähentää sarjan alkioiden määrä. Itse asiassa alkioiden sijasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" palauttaa yksittäisen arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reduce toimii sitten, että se pitää mukanaan koko ajan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"arvoa"}]},{"type":"text","value":", jota se muuttaa yksi kerrallaan käydessään läpi listan alkioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki, joka summaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktion avulla listan luvut yhteen. Huomaa, että Pythonin versiosta 3 alkaen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" pitää erikseen ottaa käyttöön moduulista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"functools"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlukujen_summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukujen_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä hieman tarkemmin. Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" saa kolme parametria. Parametreista toisena on läpikäytävä lista, ja kolmantena on laskennan alkuarvo. Koska laskemme listan alkioiden summaa, on sopiva alkuarvo nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisenä parametrina on funktio, joka suorittaa toimenpiteen yksi kerrallaan kullekin listan alkiolle. Tällä kertaa funktio on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla on kaksi parametria. Näistä ensimmäinen on laskennan sen hetkinen tulos ja toinen parametri on käsittelyvuorossa oleva listan alkio. Funktio laskee uuden arvon parametriensa perusteella. Tässä tapauksessa uusi arvio on vanha summa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"plus"}]},{"type":"text","value":" kyseisen alkion arvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" toiminta hahmottuu kenties selkeämmin, jos käytetään lambdan sijaan normaalia funktiota apuna ja tehdään funktiosta aputulostuksia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# reducen apufunktio joka huolehtii yhden alkion arvon lisäämisestä summaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"summa nyt "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", vuorossa alkio "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# uusi summa on vanha summa + alkion arvo"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio\n\nlukujen_summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukujen_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"summa nyt 0, vuorossa alkio 2\nsumma nyt 2, vuorossa alkio 3\nsumma nyt 5, vuorossa alkio 1\nsumma nyt 6, vuorossa alkio 5\n11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisenä siis käsitellään listan alkio, jonka arvo on 2. Tässä vaiheessa summa on 0, eli sillä on reducelle annettu alkuarvo. Funktio laskee ja palauttaa näiden summan eli 0 + 2."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä arvo on parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" arvona kun funktiota kutsutaan seuraavalle listan alkiolle eli luvulle 3. Funktio laskee ja palauttaa 2 + 3, joka taas toimii parametrina seuraavalle funktiokutsulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkkimme laskee kaikkien listassa olevien kokonaislukujen tulon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" tulo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" tulo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"480"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska on kyse tulosta, ei alkuarvo voi olla nyt 0 (miten käy jos se olisi nolla?), vaan sopiva arvo sille on 1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aivan kuten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"map"}]},{"type":"text","value":", myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" voi käsitellä minkä tahansa tyyppisiä olioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä pankin tilien yhteenlasketun saldon selvittämistä reducella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahasumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahasumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" rahasumma\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo\n\nt1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Köyhä \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nt3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"223344\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija Miljonääri \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntilit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"t1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" t3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" functools "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldojen_summaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"yht_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" yht_saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsaldot_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldojen_summaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pankissa rahaa yhteensä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldot_yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"pankissa rahaa yhteensä\n1005001"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa miten funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldojen_summaaja"}]},{"type":"text","value":" \"kaivaa\" saldon jokaisen tiliolion sisältä kutsumalla tilille saldon palauttavaa metodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldojen_summaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"yht_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" yht_saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Alkuarvoton reduce"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":" kolmas parametri eli alkuarvo ei itse asiassa ole kaikissa tilanteissa pakollinen. Esimerkiksi summan laskeminen onnistuisi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ilman"}]},{"type":"text","value":" alkuarvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlukujen_summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"lambda"}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukujen_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos alkuarvoa ei anneta, toimii listan ensimmäinen luku alkuarvona ja \"redusointi\" aloitetaan vasta listan toisesta alkiosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jos käsiteltävän listan alkiot ovat eri tyyppisiä kuin laskettava arvo, on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktion kolmas parametri välttämätön. Jos yrittäisimme olla tili-esimerkissä käyttämättä alkuarvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"saldot_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"reduce"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldojen_summaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"olisi seurauksena virhe"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"TypeError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" unsupported operand "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"s"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Pankkitili'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'int'"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktion parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yht_saldo"}]},{"type":"text","value":" saisi ensimmäisellä kerralla arvokseen listan ensimmäisen pankkitilin ja sen summaaminen pankkitilin saldoon ei olisi mahdollista."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Opintopisteet","tmcname":"osa12-13_opintopisteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan tässä tehtävässä hieman erilaista versiota luokasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suoritus"}]},{"type":"text","value":". Tällä kertaa se kuvastaa ainoastaan yksittäisen opiskelijan kurssisuorituksia. Luokka toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietorakenteet ja algoritmit (10 op) arvosana 3\nTietorakenteet ja algoritmit\n10\n3"}]}]},{"type":"element","tagName":"h2","properties":{"id":"opintopistemaara","style":"position:relative;"},"children":[{"type":"text","value":"Opintopistemäärä"},{"type":"element","tagName":"a","properties":{"href":"#opintopistemaara","ariaLabel":"opintopistemaara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikkien_opintopisteiden_summa"}]},{"type":"text","value":", joka saa parametriksi listan suorituksia ja laskee suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokutssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kaikkien_opintopisteiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"20"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"hyvaksyttyjen-opintopistemaara","style":"position:relative;"},"children":[{"type":"text","value":"Hyväksyttyjen opintopistemäärä"},{"type":"element","tagName":"a","properties":{"href":"#hyvaksyttyjen-opintopistemaara","ariaLabel":"hyvaksyttyjen opintopistemaara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hyvaksyttyjen_opintopisteiden_summa"}]},{"type":"text","value":", joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokutssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hyvaksyttyjen_opintopisteiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"15"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"h2","properties":{"id":"hyvaksyttyjen-suoritusten-keskiarvo","style":"position:relative;"},"children":[{"type":"text","value":"Hyväksyttyjen suoritusten keskiarvo"},{"type":"element","tagName":"a","properties":{"href":"#hyvaksyttyjen-suoritusten-keskiarvo","ariaLabel":"hyvaksyttyjen suoritusten keskiarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":", joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten arvosanojen keskiarvon. Funktio toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin jatkokutssi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tietorakenteet ja algoritmit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyödynnä funktion toteutuksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reduce"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"filter"}]},{"type":"text","value":"-funktiota!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"/osa-12/3-funktionaalista-ohjelmointia#filter-palauttaa-iteraattorin"},"children":[{"type":"text","value":"Tämä"}]},{"type":"text","value":" lienee syytä pitää mielessä tätä tehtävää tehdessä-"}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan funktonaalisella ohjelmoinilla
    • \n
    • Osaat hyödyntää operaatioita map, reduce ja filter omissa ohjelmissasi
    • \n

    Funktionaalisella ohjelmoinnilla tarkoitetaan ohjelmointiparadigmaa, jossa vältetään tilan muutoksia mahdollisimman pitkälle. Muuttujien sijasta ohjelman suoritus perustuu funktionaalisessa ohjelmoinnissa mahdollisimman pitkälti funktioiden keskinäisiin kutsuihin.

    Aikaisemmin esitetyt lambda-lausekkeet ja listakoosteet ovat esimerkkejä funktionaalisesta ohjelmointityylistä, koska niitä käyttämällä voidaan välttää ohjelman tilan muutokset - esimerkiksi lambda-lausekkeella voimme luoda funktion ilman että viittausta siihen tallennetaan mihinkään.

    Funktionaalinen ohjelmointi on esimerkki ohjelmointiparadigmasta eli ohjelmointityylistä. Muita tyypillisiä ja kurssilla jo aiemmin käsiteltyjä paradigmoja ovat esimerkiksi

      \n
    • imperatiivinen paradigma, joka perustuu peräkkäisiin komentoihin ja niiden suorittamiseen järjestyksessä
    • \n
    • proseduraalinen paradigma, jossa ohjelma jaetaan pienempiin aliohjelmiin. Imperatiivinen ja proseduraalinen paradigma tarkoittavat joidenkin määrittelyjen mukaan samaa asiaa.
    • \n
    • olio-ohjelmointi, jossa ohjelma ja sen tila mallinnetaan luokista muodostettujen olioiden avulla.
    • \n

    Pythonin monipuolisuus tulee hyvin esille siinä, että voimme hyödyntää siinä useita eri paradigmoja - jopa samoissa ohjelmissa. Näin voimme hyödyntää tehokkainta ja selkeintä tapaa ongelmien ratkaisemiseksi.

    Tarkastellaan vielä muutamaa funktionaalisen ohjelmoinnin työkalua Pythonissa.

    map

    Funktio map suorittaa annetun operaation kaikille annetun iteroitavan sarjan alkioille. Niinpä map muistuttaa koostetta monessa mielessä, syntaksi tosin näyttää erilaiselta.

    Tarkastellaan esimerkkinä funktiokutsua, joka muuttaa merkkijonot kokonaisluvuiksi:

    mjonolista = [\"123\",\"-10\", \"23\", \"98\", \"0\", \"-110\"]\n\nluvut = map(lambda x : int(x), mjonolista)\n\nprint(luvut)\n\nfor luku in luvut:\n    print(luku)

    <map object at 0x0000021A4BFA9A90>\n123\n-10\n23\n98\n0\n-110

    Funktion map yleinen syntaksi on siis

    map(<funktio, jota alkioille kutsutaan>, <sarja, jonka alkioille funktiota kutsutaan>)

    Funktio palauttaa map-tyyppisen objektin, jonka voi joko iteroida läpi for-lauseella tai esimerkiksi muuttaa listaksi list-funktiolla:

    def alkukirjain_isoksi(mjono: str):\n    alku = mjono[0]\n    alku = alku.upper()\n    return alku + mjono[1:]\n\ntestilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\nvalmiit = map(alkukirjain_isoksi, testilista)\n\nvalmiit_lista = list(valmiit)\nprint(valmiit_lista)

    ['Eka', 'Toka', 'Kolmas', 'Neljäs']

    Kuten esimerkistä huomataan, map-funktiossa voi tietysti käyttää lambda-lausekkeella luodun funktion lisäksi myös def-avainsanalla aiemmin määriteltyä nimettyä funktiota.

    Edellinen esimerkki voitaisiin toteuttaa myös vaikkapa listakoosteen avulla, esimerkiksi:

    def alkukirjain_isoksi(mjono: str):\n    alku = mjono[0]\n    alku = alku.upper()\n    return alku + mjono[1:]\n\ntestilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\n\nvalmiit_lista = [alkukirjain_isoksi(alkio) for alkio in testilista]\nprint(valmiit_lista)

    ...tai esimerkiksi iteroimalla lista läpi for-lauseella ja tallentamalla käsitellyt alkiot uuteen listaan append-metodilla. Onkin tyypillistä, että saman asian voi toteuttaa usealla eri tavalla. Eri vaihtoehtojen tunteminen auttaa valitsemaan niistä ohjelmaan (ja omaan makuun) parhaiten sopivan.

    Kannattaa huomata, että map-funktion palauttama lopputulos ei ole lista, vaan iteraattori-olio ja vaikka se käyttäytyykin listan tapaan monissa tilanteissa, niin näin ei ole aina.

    Tarkastellaan seuraavaa esimerkkiä:

    def alkukirjain_isoksi(mjono: str):\n    alku = mjono[0]\n    alku = alku.upper()\n    return alku + mjono[1:]\n\ntestilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\n# talletetaan map-funktion tulos\nvalmiit = map(alkukirjain_isoksi, testilista)\n\nfor sana in valmiit:\n  print(sana)\n\nprint(\"sama uusiksi:\")\nfor sana in valmiit:\n  print(sana)

    Tulostus on seuraava:

    Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:

    Eli kun map-funktion tuloksena olevat nimet yritetään tulostaa toiseen kertaan, ei tulostu mitään. Syynä tälle on se, läpikäynti for-lauseella käy iteraattorin oliot jo läpi, ja kun samaa yritetään toistamiseen, ei ole enää mitään läpikäytävää!

    Jos ohjelma haluaa tarkastella map-funktion tulosta useampaan kertaan, tulee tulos esimerkiksi muuttaa listaksi antamalla se parametriksi list-konstruktorille:

    testilista = [\"eka\", \"toka\", \"kolmas\", \"neljäs\"]\n\n# muutetaan map-funktion palauttama iteraattori listaksi\nvalmiit = list(map(alkukirjain_isoksi, testilista))\n\nfor sana in valmiit:\n  print(sana)\n\nprint(\"sama uusiksi:\")\nfor sana in valmiit:\n  print(sana)

    Eka\nToka\nKolmas\nNeljäs\nsama uusiksi:\nEka\nToka\nKolmas\nNeljäs

    map ja oliot

    Funktiolla map voidaan toki käsitellä myös omien luokkien olioita. Asiaan ei liity mitään tavanomaisesta poikkeavaa. Tarkastellaan seuraavaa esimerkkiä

    class Pankkitili:\n    def __init__(self, numero: str, nimi: str, saldo: float):\n        self.__numero = numero\n        self.nimi = nimi\n        self.__saldo = saldo\n\n    def lisaa_rahaa(self, rahasumma: float):\n        if rahasumma > 0:\n            self.__saldo += rahasumma\n\n    def hae_saldo(self):\n        return self.__saldo\n\nt1 = Pankkitili(\"123456\", \"Reijo Rahakas\", 5000)\nt2 = Pankkitili(\"12321\", \"Keijo Köyhä \", 1)\nt3 = Pankkitili(\"223344\", \"Maija Miljonääri \", 1000000)\n\ntilit = [t1, t2, t3]\n\nasiakkaat = map(lambda t: t.nimi, tilit)\nfor nimi in asiakkaat:\n  print(nimi)\n\nsaldot = map(lambda t: t.hae_saldo(), tilit)\nfor saldo in saldot:\n  print(saldo)

    Reijo Rahakas\nKeijo Köyhä\nMaija Miljonääri\n5000\n1\n1000000

    Koodissa selvitetään ensin funktion map avulla tilien omistajat. Huomaa miten lambda-funktiolla haetaan attribuuttina oleva nimi pankkitiliolioista:

    asiakkaat = map(lambda t: t.nimi, tilit)

    Tämän jälkeen haetaan samalla tyylillä jokaisen pankkitilin saldo. Lambda-funktio on nyt hieman erilainen, sillä saldo saadaan selville kutsumalla pankkitiliolion metodia:

    saldot = map(lambda t: t.hae_saldo(), tilit)

    Tehtäväpohjassa on mukana kurssisuoritusta kuvaava luokka Suoritus, joka toimii seuraavasti:

    suoritus = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 5)\nprint(suoritus.opiskelijan_nimi)\nprint(suoritus.kurssi)\nprint(suoritus.arvosana)\nprint(suoritus)

    Pekka Python\nOhjelmoinnin perusteet\n5\nPekka Python, arvosana kurssilta Ohjelmoinnin perusteet 5

    Suorittajat

    Tee funktio suorittajien_nimet(suoritukset: list) joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorittajien nimet.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin jatkokurssi\", 2)\n\nfor nimi in suorittajien_nimet([s1, s2, s3]):\n    print(nimi)

    Pekka Python\nOlivia Ohjelmoija\nPekka Python

    Toteuta funktio käyttäen map-funktiota!

    Kurssit

    Tee funktio kurssien_nimet(suoritukset: list) joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolla on suorituksessa olevien kurssien nimet aakkosjärjestyksessä. Kukin kurssi esiintyy listalla vain kerran.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin jatkokurssi\", 2)\n\nfor nimi in kurssien_nimet([s1, s2, s3]):\n    print(nimi)

    Ohjelmoinnin jatkokurssi\nOhjelmoinnin perusteet

    Hyödynnä funktion toteutuksessa map-funktiota. Se ei tosin yksistään riitä, joten tarvitset muutakin...

    filter

    Funktio filter muistuttaa funktiota map, mutta nimensä mukaisesti se ei poimi kaikkia alkioita lähteestä, vaan ainoastaan ne, joille annettu funktio palauttaa arvon True.

    Tarkastellaan taas ensin esimerkkiä funktion käytöstä:

    luvut = [1, 2, 3, 5, 6, 4, 9, 10, 14, 15]\n\nparilliset = filter(lambda luku: luku % 2 == 0, luvut)\n\nfor luku in parilliset:\n    print(luku)

    2\n6\n4\n10\n14

    Sama esimerkki voitaisiin kirjoittaa ilman lambda-lauseketta määrittelemällä funktio def-avainsanalla:

    def onko_parillinen(luku: int):\n    if luku % 2 == 0:\n        return True\n    return False\n\nluvut = [1, 2, 3, 5, 6, 4, 9, 10, 14, 15]\n\nparilliset = filter(onko_parillinen, luvut)\n\nfor luku in parilliset:\n    print(luku)

    Toiminnallisuuden kannalta ohjelmat ovat täysin yhtäläiset. Onkin mielipidekysymys kumpaa pitää selkeämpänä.

    Tarkastellaan vielä toista esimerkkiä suodattamisesta. Ohjelmassa poimitaan kalalistasta ainoastaan ne kalat, jotka ovat vähintään 1000 gramman painoisia:

    class Kala:\n    \"\"\" Luokka mallintaa tietynpainoista kalaa \"\"\"\n    def __init__(self, laji: str, paino: int):\n        self.laji = laji\n        self.paino = paino\n\n    def __repr__(self):\n        return f\"{self.laji} ({self.paino} g.)\"\n\nif __name__ == \"__main__\":\n    k1 = Kala(\"Hauki\", 1870)\n    k2 = Kala(\"Ahven\", 763)\n    k3 = Kala(\"Hauki\", 3410)\n    k4 = Kala(\"Turska\", 2449)\n    k5 = Kala(\"Särki\", 210)\n\n    kalat = [k1, k2, k3, k4, k5]\n\n    ylikiloiset = filter(lambda kala : kala.paino >= 1000, kalat)\n\n    for kala in ylikiloiset:\n        print(kala)

    Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)

    Taas kerran sama voitaisiin toteuttaa listakoosteena:

    ylikiloiset = [kala for kala in kalat if kala.paino >= 1000]

    filter palauttaa iteraattorin

    Funktion map tapaan, myös funktio filter palauttaa listan sijaan iteraattorin ja on tilanteita joissa on syytä olla varuillaan sillä iteraattorin voi käydä läpi vain kerran. Eli seuraava yritys tulostaa suuret kalat kahteen kertaan ei onnistu:

    k1 = Kala(\"Hauki\", 1870)\nk2 = Kala(\"Ahven\", 763)\nk3 = Kala(\"Hauki\", 3410)\nk4 = Kala(\"Turska\", 2449)\nk5 = Kala(\"Särki\", 210)\n\nkalat = [k1, k2, k3, k4, k5]\n\nylikiloiset = filter(lambda kala : kala.paino >= 1000, kalat)\n\nfor kala in ylikiloiset:\n    print(kala)\n\nprint(\"sama uudelleen\")\n\nfor kala in ylikiloiset:\n    print(kala)

    Tulostuu

    Hauki (1870 g.)\nHauki (3410 g.)\nTurska (2449 g.)\nsama uudelleen

    Jos funktion filter tulosta on tarve käsitellä useaan kertaan, tulee se muuttaa esimerkiksi listaksi:

    kalat = [k1, k2, k3, k4, k5]\n\n# muutetaan tulos listaksi kutsumalla list-konstruktorioa\nylikiloiset = list(filter(lambda kala : kala.paino >= 1000, kalat))

    Tässä tehtävässä jatketaan luokan Suoritus käyttämistä

    Hyväksytyt suoritukset

    Tee funktio hyvaksytyt(suoritukset: list) joka saa parametriksi listan suoritus-olioita. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on vähintään 1.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin jatkokurssi\", 0)\n\nfor suoritus in hyvaksytyt([s1, s2, s3]):\n    print(suoritus)

    Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nOlivia Ohjelmoija arvosana kurssilta Ohjelmoinnin perusteet 5

    Toteuta funktio käyttäen filter-funktiota!

    Arvosanan suoritukset

    Tee funktio suoritus_arvosanalla(suoritukset: list, arvosana: int) joka saa parametriksi listan suoritus-olioita sekä kokonaisluvun. Funktio palauttaa listan, jolta löytyy suorituksista ne, joiden arvosana on sama kuin toisen parametrin arvo.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Ohjelmoinnin perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Tietoliikenteen perusteet\", 3)\ns4 = Suoritus(\"Olivia Ohjelmoija\", \"Johdatus yliopistomatematiikkaan\", 3)\n\nfor suoritus in suoritus_arvosanalla([s1, s2, s3, s4], 3):\n    print(suoritus)

    Pekka Python, arvosana kurssilta Ohjelmoinnin perusteet 3\nPekka Python, arvosana kurssilta Tietoliikenteen perusteet 3\nOlivia Ohjelmoija, arvosana kurssilta Johdatus yliopistomatematiikkaan 3

    Toteuta funktio käyttäen filter-funktiota!

    Kurssin suorittajat

    Tee funktio kurssin_suorittajat(suoritukset: list, kurssi: str) joka saa parametriksi listan suoritus-olioita sekä kurssin nimen. Funktio palauttaa aakkosjärjestyksessä niiden opiskelijoiden nimet, jotka ovat suorittaneet parametrina olevan kurssin arvosanalla joka on suurempi kuin nolla.

    s1 = Suoritus(\"Pekka Python\", \"Ohjelmoinnin perusteet\", 3)\ns2 = Suoritus(\"Olivia Ohjelmoija\", \"Tietoliikenteen perusteet\", 5)\ns3 = Suoritus(\"Pekka Python\", \"Tietoliikenteen perusteet\", 0)\ns4 = Suoritus(\"Niilo Nörtti\", \"Tietoliikenteen perusteet\", 3)\n\nfor suoritus in kurssin_suorittajat([s1, s2, s3, s4], \"Tietoliikenteen perusteet\"):\n    print(suoritus)

    Niilo Nörtti\nOlivia Ohjelmoija

    Toteuta funktio käyttäen funktioita filter ja map.

    reduce

    Viimeinen tarkastelemamme funktio on reduce. Kuten funktion nimi vihjaa, sen tarkoituksena on vähentää sarjan alkioiden määrä. Itse asiassa alkioiden sijasta reduce palauttaa yksittäisen arvon.

    Reduce toimii sitten, että se pitää mukanaan koko ajan arvoa, jota se muuttaa yksi kerrallaan käydessään läpi listan alkioita.

    Seuraavassa on esimerkki, joka summaa reduce-funktion avulla listan luvut yhteen. Huomaa, että Pythonin versiosta 3 alkaen funktio reduce pitää erikseen ottaa käyttöön moduulista functools.

    from functools import reduce\n\nlista = [2, 3, 1, 5]\n\nlukujen_summa = reduce(lambda summa, alkio: summa + alkio, lista, 0)\n\nprint(lukujen_summa)

    11

    Tarkastellaan esimerkkiä hieman tarkemmin. Funktio reduce saa kolme parametria. Parametreista toisena on läpikäytävä lista, ja kolmantena on laskennan alkuarvo. Koska laskemme listan alkioiden summaa, on sopiva alkuarvo nolla.

    Ensimmäisenä parametrina on funktio, joka suorittaa toimenpiteen yksi kerrallaan kullekin listan alkiolle. Tällä kertaa funktio on seuraava:

    lambda summa, alkio: summa + alkio

    Funktiolla on kaksi parametria. Näistä ensimmäinen on laskennan sen hetkinen tulos ja toinen parametri on käsittelyvuorossa oleva listan alkio. Funktio laskee uuden arvon parametriensa perusteella. Tässä tapauksessa uusi arvio on vanha summa plus kyseisen alkion arvo.

    Funktion reduce toiminta hahmottuu kenties selkeämmin, jos käytetään lambdan sijaan normaalia funktiota apuna ja tehdään funktiosta aputulostuksia:

    from functools import reduce\n\nlista = [2, 3, 1, 5]\n\n# reducen apufunktio joka huolehtii yhden alkion arvon lisäämisestä summaan\ndef summaaja(summa, alkio):\n  print(f\"summa nyt {summa}, vuorossa alkio {alkio}\")\n  # uusi summa on vanha summa + alkion arvo\n  return summa + alkio\n\nlukujen_summa = reduce(summaaja, lista, 0)\n\nprint(lukujen_summa)

    Ohjelma tulostaa:

    summa nyt 0, vuorossa alkio 2\nsumma nyt 2, vuorossa alkio 3\nsumma nyt 5, vuorossa alkio 1\nsumma nyt 6, vuorossa alkio 5\n11

    Ensimmäisenä siis käsitellään listan alkio, jonka arvo on 2. Tässä vaiheessa summa on 0, eli sillä on reducelle annettu alkuarvo. Funktio laskee ja palauttaa näiden summan eli 0 + 2.

    Tämä arvo on parametrin summa arvona kun funktiota kutsutaan seuraavalle listan alkiolle eli luvulle 3. Funktio laskee ja palauttaa 2 + 3, joka taas toimii parametrina seuraavalle funktiokutsulle.

    Toinen esimerkkimme laskee kaikkien listassa olevien kokonaislukujen tulon.

    from functools import reduce\n\nlista = [2, 2, 4, 3, 5, 2]\n\ntulo = reduce(lambda tulo, alkio: tulo * alkio, lista, 1)\n\nprint(tulo)

    480

    Koska on kyse tulosta, ei alkuarvo voi olla nyt 0 (miten käy jos se olisi nolla?), vaan sopiva arvo sille on 1.

    Aivan kuten filter ja map, myös reduce voi käsitellä minkä tahansa tyyppisiä olioita.

    Tarkastellaan esimerkkinä pankin tilien yhteenlasketun saldon selvittämistä reducella:

    class Pankkitili:\n    def __init__(self, numero: str, nimi: str, saldo: float):\n        self.__numero = numero\n        self.nimi = nimi\n        self.__saldo = saldo\n\n    def lisaa_rahaa(self, rahasumma: float):\n        if rahasumma > 0:\n            self.__saldo += rahasumma\n\n    def hae_saldo(self):\n        return self.__saldo\n\nt1 = Pankkitili(\"123456\", \"Reijo Rahakas\", 5000)\nt2 = Pankkitili(\"12321\", \"Keijo Köyhä \", 1)\nt3 = Pankkitili(\"223344\", \"Maija Miljonääri \", 1000000)\n\ntilit = [t1, t2, t3]\n\nfrom functools import reduce\n\ndef saldojen_summaaja(yht_saldo, tili):\n  return yht_saldo + tili.hae_saldo()\n\nsaldot_yhteensa = reduce(saldojen_summaaja, tilit, 0)\n\nprint(\"pankissa rahaa yhteensä\")\nprint(saldot_yhteensa)

    Ohjelma tulostaa:

    pankissa rahaa yhteensä\n1005001

    Huomaa miten funktio saldojen_summaaja \"kaivaa\" saldon jokaisen tiliolion sisältä kutsumalla tilille saldon palauttavaa metodia:

    def saldojen_summaaja(yht_saldo, tili):\n  return yht_saldo + tili.hae_saldo()

    Funktion reduce kolmas parametri eli alkuarvo ei itse asiassa ole kaikissa tilanteissa pakollinen. Esimerkiksi summan laskeminen onnistuisi ilman alkuarvoa:

    lista = [2, 3, 1, 5]\n\nlukujen_summa = reduce(lambda summa, alkio: summa + alkio, lista)\n\nprint(lukujen_summa)

    Jos alkuarvoa ei anneta, toimii listan ensimmäinen luku alkuarvona ja \"redusointi\" aloitetaan vasta listan toisesta alkiosta.

    Huomaa, että jos käsiteltävän listan alkiot ovat eri tyyppisiä kuin laskettava arvo, on reduce-funktion kolmas parametri välttämätön. Jos yrittäisimme olla tili-esimerkissä käyttämättä alkuarvoa:

    saldot_yhteensa = reduce(saldojen_summaaja, tilit)

    olisi seurauksena virhe

    TypeError: unsupported operand type(s) for +: 'Pankkitili' and 'int'

    sillä reduce-funktion parametri yht_saldo saisi ensimmäisellä kerralla arvokseen listan ensimmäisen pankkitilin ja sen summaaminen pankkitilin saldoon ei olisi mahdollista.

    Tarkastellaan tässä tehtävässä hieman erilaista versiota luokasta Suoritus. Tällä kertaa se kuvastaa ainoastaan yksittäisen opiskelijan kurssisuorituksia. Luokka toimii seuraavasti:

    suoritus = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nprint(suoritus)\nprint(suoritus.kurssi)\nprint(suoritus.opintopisteet)\nprint(suoritus.arvosana)

    Tietorakenteet ja algoritmit (10 op) arvosana 3\nTietorakenteet ja algoritmit\n10\n3

    Opintopistemäärä

    Toteuta funktio kaikkien_opintopisteiden_summa, joka saa parametriksi listan suorituksia ja laskee suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti

    s1 = Suoritus(\"Ohjelmoinnin perusteet\", 5, 5)\ns2 = Suoritus(\"Ohjelmoinnin jatkokutssi\", 4, 5)\ns3 = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nsumma = kaikkien_opintopisteiden_summa([s1, s2, s3])\nprint(summa)

    20

    Toteuta funktio käyttäen reduce-funktiota!

    Hyväksyttyjen opintopistemäärä

    Toteuta funktio hyvaksyttyjen_opintopisteiden_summa, joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten yhteenlasketun opintopistemäärän. Funktio toimii seuraavasti

    s1 = Suoritus(\"Ohjelmoinnin perusteet\", 5, 5)\ns2 = Suoritus(\"Ohjelmoinnin jatkokutssi\", 0, 4)\ns3 = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nsumma = hyvaksyttyjen_opintopisteiden_summa([s1, s2, s3])\nprint(summa)

    15

    Toteuta funktio käyttäen reduce- ja filter-funktiota!

    Hyväksyttyjen suoritusten keskiarvo

    Toteuta funktio keskiarvo, joka saa parametriksi listan suorituksia ja laskee arvosanan 1 tai parempien omaavien suoritusten arvosanojen keskiarvon. Funktio toimii seuraavasti

    s1 = Suoritus(\"Ohjelmoinnin perusteet\", 5, 5)\ns2 = Suoritus(\"Ohjelmoinnin jatkokutssi\", 0, 4)\ns3 = Suoritus(\"Tietorakenteet ja algoritmit\", 3, 10)\nsumma = keskiarvo([s1, s2, s3])\nprint(summa)

    4.0

    Hyödynnä funktion toteutuksessa reduce- ja filter-funktiota!

    Tämä lienee syytä pitää mielessä tätä tehtävää tehdessä-

    ","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/3-funktionaalista-ohjelmointia.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-12/4-saannolliset-lausekkeet/page-data.json b/page-data/osa-12/4-saannolliset-lausekkeet/page-data.json index 464527219..d71122572 100644 --- a/page-data/osa-12/4-saannolliset-lausekkeet/page-data.json +++ b/page-data/osa-12/4-saannolliset-lausekkeet/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-12/4-saannolliset-lausekkeet", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetan säännöllisellä lausekkeella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää säännöllisiä lausekkeita omissa ohjelmissasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python on mainio työkalu tekstin käsittelemiseen. Yksi työkalu tekstin käsittelemisessä ovat\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"säännölliset lausekkeet"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"regular expressions"}]},{"type":"text","value":"), joiden avulla voi esimerkiksi poimia ja etsiä merkkijonoja, jotka ovat tietyn muotoisia. Tässä osiossa käydään läpi säännöllisten lausekkeiden perusteita, ja löydät lisää tietoa Pythonin omasta "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/howto/regex.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tutoriaalista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"mita-ovat-saannolliset-lausekkeet","style":"position:relative;"},"children":[{"type":"text","value":"Mitä ovat säännölliset lausekkeet?"},{"type":"element","tagName":"a","properties":{"href":"#mita-ovat-saannolliset-lausekkeet","ariaLabel":"mita ovat saannolliset lausekkeet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Säännölliset lausekkeet ovat tavallaan ohjelmointikieli ohjelmointikielen sisällä. Lausekkeilla on oma syntaksinsa, jonka mukaan ne määritellään. Ideana on, että säännöllisellä lausekkeella määritellään sellaisten merkkijonojen joukko, jotka ovat tiettyjen sääntöjen mukaisia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkistellaan yksinkertaista esimerkkiä lausekkeiden käytöstä ennen tarkempaa perehtymistä sääntöihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" re\n\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ponneton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ponttooni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pullero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pallon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# merkkijonon tulee alkaa \"P\" ja päättyä \"on\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" re"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"search"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"^P.*on$\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"löytyy!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python löytyy!\nPonneton löytyy!\nPallon löytyy!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa säännöllisiä lausekkeita voi käsitellä moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"re"}]},{"type":"text","value":" avulla. Esimerkiksi yllä olevassa koodissa oleva metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"search"}]},{"type":"text","value":" etsii merkkijonosta osaa, joka täsmää annettuun säännölliseen lausekkeeseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että säännöllinen lauseke annetaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"merkkijonona"}]},{"type":"text","value":" funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"search"}]},{"type":"text","value":" parametriksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkki etsii merkkijonosta luvut. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"findall"}]},{"type":"text","value":" palauttaa kaikki säännölliseen lausekkeeseen täsmäävät osajonot listana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" re\n\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eka, 2 !#kolmas 44 viisi 678xyz962\""}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" re"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"findall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\d+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n44\n678\n962"}]}]},{"type":"element","tagName":"h2","properties":{"id":"saannollisten-lausekkeiden-syntaksi","style":"position:relative;"},"children":[{"type":"text","value":"Säännöllisten lausekkeiden syntaksi"},{"type":"element","tagName":"a","properties":{"href":"#saannollisten-lausekkeiden-syntaksi","ariaLabel":"saannollisten lausekkeiden syntaksi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaksi syntaksia, jota säännöllisissä lausekkeissa käytetään. Useimmissa esimerkeissä käytetään samaa testiohjelmaa eri syötteillä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" re\n\nlauseke "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lauseke: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" re"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"search"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lauseke"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osuma!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei osumaa.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h3","properties":{"id":"vaihtoehtoiset-alijonot","style":"position:relative;"},"children":[{"type":"text","value":"Vaihtoehtoiset alijonot"},{"type":"element","tagName":"a","properties":{"href":"#vaihtoehtoiset-alijonot","ariaLabel":"vaihtoehtoiset alijonot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pystyviivalla voidaan erottaa vaihtoehtoisia osajonoja. Esimerkiksi lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"911|112"}]},{"type":"text","value":" täsmää merkkijonoihin, joista löytyy joko osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"911"}]},{"type":"text","value":" tai osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"112"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aa|ee|ii"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"saapas"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"teema"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"iilimato"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ooppera"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"uuttera"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"h3","properties":{"id":"merkkijoukot","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijoukot"},{"type":"element","tagName":"a","properties":{"href":"#merkkijoukot","ariaLabel":"merkkijoukot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hakasulkeiden väliin voidaan merkitä joukko hyväksyttyjä merkkejä. Esimerkiksi merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[aeio]"}]},{"type":"text","value":" täsmää jonoihin, joista löytyy jokin merkeistä a, e, i, tai o. Merkintätapa sallii myös väliviivan käytön. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[0-68a-d]"}]},{"type":"text","value":" hyväksyy jonot, joista löytyy numero nollasta kuuteen, kahdeksikko tai merkki väliltä a...d. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[1-3][0-9]"}]},{"type":"text","value":" hyväksyy kaksinumeroiset luvut väliltä 10...39."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"[C-FRSÖ]"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"C"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"E"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"G"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"R"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ö"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"T"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"h3","properties":{"id":"toistaminen","style":"position:relative;"},"children":[{"type":"text","value":"Toistaminen"},{"type":"element","tagName":"a","properties":{"href":"#toistaminen","ariaLabel":"toistaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lausekkeen osaa voidaan toistaa esimerkiksi seuraavien operaattorien avulla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" toistaa osaa minkä tahansa määrän kertoja (myös nolla)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" toistaa osaa minkä tahansa määrän kertoja (ainakin yhden)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"{m}"}]},{"type":"text","value":" toistaa osaa täsmälleen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"m"}]},{"type":"text","value":" kertaa"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattorit viittaavat niitä edeltävään lausekkeen osaan. Esimerkiksi lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ba+b"}]},{"type":"text","value":" hyväksyy esimerkiksi osajonot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bab"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"baab"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"baaaaaaaaaaab"}]},{"type":"text","value":". Lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"A[BCDE]*Z"}]},{"type":"text","value":" puolestaan hyväksyy esimerkiksi osajonot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"AZ"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ADZ"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ABCDEBCDEBCDEZ"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1[234]*5"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"125"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"145"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12342345"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"126"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"165"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"h3","properties":{"id":"muita-erikoismerkkeja","style":"position:relative;"},"children":[{"type":"text","value":"Muita erikoismerkkejä"},{"type":"element","tagName":"a","properties":{"href":"#muita-erikoismerkkeja","ariaLabel":"muita erikoismerkkeja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pisteellä merkitään mitä tahansa yksittäistä merkkiä. Niinpä merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c...o"}]},{"type":"text","value":" vastaa esimerkiksi merkkijonoja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c-3po"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"combo"}]},{"type":"text","value":". Merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"^"}]},{"type":"text","value":" voidaan määritellä, että osuman pitää löytyä merkkijonon alusta, ja vastaavasti merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"$"}]},{"type":"text","value":", että sen on oltava lopussa. Näillä voidaan näppärästi myös rajata sääntö koskemaan vain annettuja merkkejä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"^[123]*$"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1221"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"333333333"}]},{"type":"text","value":"\nOsuma!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kenoviivaa voidaan käyttää etsimään erikoismerkkejä. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1+"}]},{"type":"text","value":" tarkoittaa yhtä tai useampaa ykköstä, mutta merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1\\+"}]},{"type":"text","value":" merkkijonoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1+"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"^\\*"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moi*"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"m*o*i"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"*moi"}]},{"type":"text","value":"\nOsuma!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaarisulkeilla voidaan ryhmitellä lausekkeen osia. Esimerkiksi lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(ab)+c"}]},{"type":"text","value":" hyväksyy jonot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"abc"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ababc"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ababababababc"}]},{"type":"text","value":", mutta ei esimerkiksi jonoja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ac"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bc"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"^(jabba).*(hut)$"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jabba the hut"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jabba a hut"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jarmo the hut"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jabba the smut"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Säännölliset lausekkeet","tmcname":"osa12-14_saannolliset_lausekkeet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan hieman säännöllisten lausekkeiden käyttöä."}]},{"type":"element","tagName":"h2","properties":{"id":"viikonpaivat","style":"position:relative;"},"children":[{"type":"text","value":"Viikonpäivät"},{"type":"element","tagName":"a","properties":{"href":"#viikonpaivat","ariaLabel":"viikonpaivat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee säännöllisen lausekkeen avulla funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"on_viikonpaiva(merkkijono: str)"}]},{"type":"text","value":" joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos sen parametrina saama merkkijono sisältää viikonpäivän lyhenteen (ma, ti, ke, to, pe, la tai su)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on_viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on_viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on_viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nFalse"}]}]},{"type":"element","tagName":"h2","properties":{"id":"vokaalitarkistus","style":"position:relative;"},"children":[{"type":"text","value":"Vokaalitarkistus"},{"type":"element","tagName":"a","properties":{"href":"#vokaalitarkistus","ariaLabel":"vokaalitarkistus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki_vokaaleja(merkkijono: str)"}]},{"type":"text","value":", joka tarkistaa säännöllisen lausekkeen avulla, ovatko parametrina annetun merkkijonon kaikki merkit vokaaleja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki_vokaaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eioueioieoieouyyyy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki_vokaaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"autoooo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kellonaika","style":"position:relative;"},"children":[{"type":"text","value":"Kellonaika"},{"type":"element","tagName":"a","properties":{"href":"#kellonaika","ariaLabel":"kellonaika permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kellonaika(merkkijono: str)"}]},{"type":"text","value":", joka tarkistaa säännöllisen lausekkeen avulla, onko parametrina oleva merkkijono muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tt:mm:ss"}]},{"type":"text","value":" oleva kellonaika (tunnit, minuutit ja sekunnit kaksinumeroisina)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12:43:01\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"AB:01:CD\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"17:59:59\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"33:66:77\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nTrue\nFalse"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"loppuhuipennus","style":"position:relative;"},"children":[{"type":"text","value":"Loppuhuipennus"},{"type":"element","tagName":"a","properties":{"href":"#loppuhuipennus","ariaLabel":"loppuhuipennus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tämä tehtävä ei sijainnistaan huolimatta liity mitenkään säännöllisiin lausekkeisiin, mutta luvun "},{"type":"element","tagName":"a","properties":{"href":"/osa-12/1-funktio-parametrina"},"children":[{"type":"text","value":"Funktio parametrina"}]},{"type":"text","value":" asia tulee olemaan tarpeen ja myös "},{"type":"element","tagName":"a","properties":{"href":"/osa-11/1-koosteet"},"children":[{"type":"text","value":"listakoosteet"}]},{"type":"text","value":" voivat olla käyttökelpoisia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovelluksen rakenteelle voi ottaa inspiraatiota osan 10 "},{"type":"element","tagName":"a","properties":{"href":"/osa-10/4-lisaa-esimerkkeja"},"children":[{"type":"text","value":"viimeisestä luvusta"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tilastot ojennukseen","tmcname":"osa12-15_tilastot_ojennukseen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään sovellus, jonka avulla on mahdollista tarkastella NHL-jääkiekkoliigan tilastoja muutamassa hieman erilaisessa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee kaksi json-muodossa olevaa tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki.json"}]},{"type":"text","value":", näistä ensimmäinen on tarkoitettu lähinnä testailun avuksi. Jälkimmäinen sisältää kaikkien kaudella 2019-20 pelanneiden pelaajien statistiikat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäisen pelaajan tiedot ovat muodossa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"json"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Patrik Laine\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"nationality\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"FIN\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"assists\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"goals\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"penalties\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"team\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"WPG\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"games\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"68"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ja molemmat tiedostoista sisältävät yksittäisten pelaajien tiedot taulukossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et muista, miten json-muotoinen tiedosto saadaan luettua Python-ohjelmaan, voit kerrata tämän "},{"type":"element","tagName":"a","properties":{"href":"/osa-7/4-datan-kasittely#json-tiedoston-lukeminen"},"children":[{"type":"text","value":"osan 7 materiaalista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt ohjelma, joka kysyy aluksi tiedoston nimeä ja tarjoaa sitten seuraavat toiminnot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"yksittäisen pelaajan tietojen haku nimen perusteella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"listaus joukkueiden nimien lyhenteistä (aakkosjärjestyksessä)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"listaus maiden nimien lyhenteistä (aakkosjärjestyksessä)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näistä toiminnoista saa yhden pisteen. Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":"\nluettiin 14 pelaajan tiedot"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Travis Zajac"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Travis Zajac NJD  9 + 16 = 25\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nBUF\nCGY\nDAL\nNJD\nNYI\nOTT\nPIT\nWPG\nWSH"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nCAN\nCHE\nCZE\nSWE\nUSA"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että pelaajien tulostusasun pitää olla täsmälleen seuraavanlainen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Leon Draisaitl EDM 43 + 67 = 110\nConnor McDavid EDM 34 + 63 = 97\nTravis Zajac NJD  9 + 16 = 25\nMike Green EDM 3 + 8 = 11\nMarkus Granlund EDM 3 + 1 = 4\n123456789012345678901234567890123456789\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alimman rivin numerot on lisätty helpottamaan oikean merkkimäärän laskemista. Joukkueen nimen lyhenne siis tulostetaan alkaen rivin 22. merkistä. Plus on rivin 30. merkki ja = rivin 35. merkki. Kaikki luvut tulee tasata oikeaan reunaan omaa tulostusaluettaan. Tyhjät kohdat ovat välilyöntejä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen muotoilu kannattaa hoitaa f-merkkijonoina samaan tapaan kuin "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#programming-exercise-kurssin-tulokset-osa-3"},"children":[{"type":"text","value":"tässä"}]},{"type":"text","value":" osan 6 tehtävässä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavat toiminnot tuovat toisen pisteen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"joukkueen pelaajien listaaminen pisteiden (joka saadaan laskemalla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"goals"}]},{"type":"text","value":" + "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"assits"}]},{"type":"text","value":") mukaisessa järjestyksessä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tietyn maan pelaajien listaaminen pisteiden mukaisessa järjestyksessä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiminnallisuus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":"\nluettiin 14 pelaajan tiedot"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\njoukkue: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"OTT"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Drake Batherson OTT 3 + 7 = 10\nJonathan Davidsson OTT 0 + 1 = 1\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nmaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"CAN"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jared McCann PIT 14 + 21 = 35\nTravis Zajac NJD 9 + 16 = 25\nTaylor Fedun DAL 2 + 7 = 9\nMark Jankowski CGY 5 + 2 = 7\nLogan Shaw WPG 3 + 2 = 5\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmannen pisteen saa seuraavilla toiminnoilla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"n eniten pistettä saanutta pelaajaa\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos kahden pelaajan pistemäärä on sama, ratkaisee maalimäärä"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"n eniten maaleja ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"goals"}]},{"type":"text","value":") tehnyttä pelaajaa\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos kahden pelaajan maalimäärä on sama, järjestyksen ratkaisee se kummalla on vähemmän otteluja ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"games"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiminnallisuus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":"\nluettiin 14 pelaajan tiedot"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkuinka monta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jakub Vrana WSH 25 + 27 = 52\nJared McCann PIT 14 + 21 = 35\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkuinka monta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jakub Vrana WSH 25 + 27 = 52\nJared McCann PIT 14 + 21 = 35\nJohn Klingberg DAL 6 + 26 = 32\nTravis Zajac NJD 9 + 16 = 25\nConor Sheary BUF 10 + 13 = 23\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nkuinka monta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jakub Vrana WSH 25 + 27 = 52\nJared McCann PIT 14 + 21 = 35\nConor Sheary BUF 10 + 13 = 23\nTravis Zajac NJD 9 + 16 = 25\nJohn Klingberg DAL 6 + 26 = 32\nMark Jankowski CGY 5 + 2 = 7\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"9d660c41-3094-5bf4-b084-30407dea276d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetan säännöllisellä lausekkeella
    • \n
    • Osaat hyödyntää säännöllisiä lausekkeita omissa ohjelmissasi
    • \n

    Python on mainio työkalu tekstin käsittelemiseen. Yksi työkalu tekstin käsittelemisessä ovat\nsäännölliset lausekkeet (regular expressions), joiden avulla voi esimerkiksi poimia ja etsiä merkkijonoja, jotka ovat tietyn muotoisia. Tässä osiossa käydään läpi säännöllisten lausekkeiden perusteita, ja löydät lisää tietoa Pythonin omasta tutoriaalista.

    Mitä ovat säännölliset lausekkeet?

    Säännölliset lausekkeet ovat tavallaan ohjelmointikieli ohjelmointikielen sisällä. Lausekkeilla on oma syntaksinsa, jonka mukaan ne määritellään. Ideana on, että säännöllisellä lausekkeella määritellään sellaisten merkkijonojen joukko, jotka ovat tiettyjen sääntöjen mukaisia.

    Tarkistellaan yksinkertaista esimerkkiä lausekkeiden käytöstä ennen tarkempaa perehtymistä sääntöihin:

    import re\n\nsanat = [\"Python\", \"Ponneton\", \"Ponttooni\", \"Pullero\", \"Pallon\"]\n\nfor sana in sanat:\n    # merkkijonon tulee alkaa \"P\" ja päättyä \"on\"\n    if re.search(\"^P.*on$\", sana):\n        print(sana, \"löytyy!\")

    Python löytyy!\nPonneton löytyy!\nPallon löytyy!

    Pythonissa säännöllisiä lausekkeita voi käsitellä moduulin re avulla. Esimerkiksi yllä olevassa koodissa oleva metodi search etsii merkkijonosta osaa, joka täsmää annettuun säännölliseen lausekkeeseen.

    Huomaa, että säännöllinen lauseke annetaan merkkijonona funktion search parametriksi.

    Toinen esimerkki etsii merkkijonosta luvut. Metodi findall palauttaa kaikki säännölliseen lausekkeeseen täsmäävät osajonot listana:

    import re\n\nlause = \"Eka, 2 !#kolmas 44 viisi 678xyz962\"\n\nluvut = re.findall(\"\\d+\", lause)\n\nfor luku in luvut:\n    print(luku)

    2\n44\n678\n962

    Säännöllisten lausekkeiden syntaksi

    Tarkastellaan seuraavaksi syntaksia, jota säännöllisissä lausekkeissa käytetään. Useimmissa esimerkeissä käytetään samaa testiohjelmaa eri syötteillä.

    import re\n\nlauseke = input(\"Anna lauseke: \")\n\nwhile True:\n    mjono = input(\"Anna merkkijono: \")\n    if mjono == \"\":\n        break\n    if re.search(lauseke, mjono):\n        print(\"Osuma!\")\n    else:\n        print(\"Ei osumaa.\")

    Vaihtoehtoiset alijonot

    Pystyviivalla voidaan erottaa vaihtoehtoisia osajonoja. Esimerkiksi lauseke 911|112 täsmää merkkijonoihin, joista löytyy joko osajono 911 tai osajono 112.

    Esimerkiksi

    Anna lauseke: aa|ee|ii\nAnna testijono: saapas\nOsuma!\nAnna testijono: teema\nOsuma!\nAnna testijono: iilimato\nOsuma!\nAnna testijono: ooppera\nEi osumaa.\nAnna testijono: uuttera\nEi osumaa.

    Merkkijoukot

    Hakasulkeiden väliin voidaan merkitä joukko hyväksyttyjä merkkejä. Esimerkiksi merkintä [aeio] täsmää jonoihin, joista löytyy jokin merkeistä a, e, i, tai o. Merkintätapa sallii myös väliviivan käytön. Merkintä [0-68a-d] hyväksyy jonot, joista löytyy numero nollasta kuuteen, kahdeksikko tai merkki väliltä a...d. Merkintä [1-3][0-9] hyväksyy kaksinumeroiset luvut väliltä 10...39.

    Esimerkiksi:

    Anna lauseke: [C-FRSÖ]\nAnna testijono: C\nOsuma!\nAnna testijono: E\nOsuma!\nAnna testijono: G\nEi osumaa.\nAnna testijono: R\nOsuma!\nAnna testijono: Ö\nOsuma!\nAnna testijono: T\nEi osumaa.

    Toistaminen

    Lausekkeen osaa voidaan toistaa esimerkiksi seuraavien operaattorien avulla:

      \n
    • * toistaa osaa minkä tahansa määrän kertoja (myös nolla)
    • \n
    • + toistaa osaa minkä tahansa määrän kertoja (ainakin yhden)
    • \n
    • {m} toistaa osaa täsmälleen m kertaa
    • \n

    Operaattorit viittaavat niitä edeltävään lausekkeen osaan. Esimerkiksi lauseke ba+b hyväksyy esimerkiksi osajonot bab, baab ja baaaaaaaaaaab. Lauseke A[BCDE]*Z puolestaan hyväksyy esimerkiksi osajonot AZ, ADZ tai ABCDEBCDEBCDEZ.

    Esimerkiksi:

    Anna lauseke: 1[234]*5\nAnna testijono: 15\nOsuma!\nAnna testijono: 125\nOsuma!\nAnna testijono: 145\nOsuma!\nAnna testijono: 12342345\nOsuma!\nAnna testijono: 126\nEi osumaa.\nAnna testijono: 165\nEi osumaa.

    Muita erikoismerkkejä

    Pisteellä merkitään mitä tahansa yksittäistä merkkiä. Niinpä merkintä c...o vastaa esimerkiksi merkkijonoja c-3po tai combo. Merkillä ^ voidaan määritellä, että osuman pitää löytyä merkkijonon alusta, ja vastaavasti merkillä $, että sen on oltava lopussa. Näillä voidaan näppärästi myös rajata sääntö koskemaan vain annettuja merkkejä:

    Anna lauseke: ^[123]*$\nAnna testijono: 4\nEi osumaa.\nAnna testijono: 1221\nOsuma!\nAnna testijono: 333333333\nOsuma!

    Kenoviivaa voidaan käyttää etsimään erikoismerkkejä. Merkintä 1+ tarkoittaa yhtä tai useampaa ykköstä, mutta merkintä 1\\+ merkkijonoa 1+.

    Esimerkiksi

    Anna lauseke: ^\\*\nAnna testijono: moi*\nEi osumaa.\nAnna testijono: m*o*i\nEi osumaa.\nAnna testijono: *moi\nOsuma!

    Kaarisulkeilla voidaan ryhmitellä lausekkeen osia. Esimerkiksi lauseke (ab)+c hyväksyy jonot abc, ababc ja ababababababc, mutta ei esimerkiksi jonoja ac tai bc.

    Esimerkiksi

    Anna lauseke: ^(jabba).*(hut)$\nAnna testijono: jabba the hut\nOsuma!\nAnna testijono: jabba a hut\nOsuma!\nAnna testijono: jarmo the hut\nEi osumaa.\nAnna testijono: jabba the smut\nEi osumaa.

    Harjoitellaan hieman säännöllisten lausekkeiden käyttöä.

    Viikonpäivät

    Tee säännöllisen lausekkeen avulla funktio on_viikonpaiva(merkkijono: str) joka palauttaa True, jos sen parametrina saama merkkijono sisältää viikonpäivän lyhenteen (ma, ti, ke, to, pe, la tai su).

    Esimerkki funktion kutsumisesta:

    print(on_viikonpaiva(\"ma\"))\nprint(on_viikonpaiva(\"pe\"))\nprint(on_viikonpaiva(\"tu\"))

    True\nTrue\nFalse

    Vokaalitarkistus

    Tee funktio kaikki_vokaaleja(merkkijono: str), joka tarkistaa säännöllisen lausekkeen avulla, ovatko parametrina annetun merkkijonon kaikki merkit vokaaleja.

    Esimerkki funktion kutsumisesta:

    print(kaikki_vokaaleja(\"eioueioieoieouyyyy\"))\nprint(kaikki_vokaaleja(\"autoooo\"))

    True\nFalse

    Kellonaika

    Tee funktio kellonaika(merkkijono: str), joka tarkistaa säännöllisen lausekkeen avulla, onko parametrina oleva merkkijono muotoa tt:mm:ss oleva kellonaika (tunnit, minuutit ja sekunnit kaksinumeroisina).

    Esimerkki funktion kutsumisesta:

    print(kellonaika(\"12:43:01\"))\nprint(kellonaika(\"AB:01:CD\"))\nprint(kellonaika(\"17:59:59\"))\nprint(kellonaika(\"33:66:77\"))

    True\nFalse\nTrue\nFalse

    Loppuhuipennus

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tämä tehtävä ei sijainnistaan huolimatta liity mitenkään säännöllisiin lausekkeisiin, mutta luvun Funktio parametrina asia tulee olemaan tarpeen ja myös listakoosteet voivat olla käyttökelpoisia.

    Sovelluksen rakenteelle voi ottaa inspiraatiota osan 10 viimeisestä luvusta.

    Tässä tehtävässä tehdään sovellus, jonka avulla on mahdollista tarkastella NHL-jääkiekkoliigan tilastoja muutamassa hieman erilaisessa muodossa.

    Tehtäväpohjan mukana tulee kaksi json-muodossa olevaa tiedostoa osa.json ja kaikki.json, näistä ensimmäinen on tarkoitettu lähinnä testailun avuksi. Jälkimmäinen sisältää kaikkien kaudella 2019-20 pelanneiden pelaajien statistiikat.

    Yksittäisen pelaajan tiedot ovat muodossa

    {\n    \"name\": \"Patrik Laine\",\n    \"nationality\": \"FIN\",\n    \"assists\": 35,\n    \"goals\": 28,\n    \"penalties\": 22,\n    \"team\": \"WPG\",\n    \"games\": 68\n},

    ja molemmat tiedostoista sisältävät yksittäisten pelaajien tiedot taulukossa.

    Jos et muista, miten json-muotoinen tiedosto saadaan luettua Python-ohjelmaan, voit kerrata tämän osan 7 materiaalista.

    Tee nyt ohjelma, joka kysyy aluksi tiedoston nimeä ja tarjoaa sitten seuraavat toiminnot:

      \n
    • yksittäisen pelaajan tietojen haku nimen perusteella
    • \n
    • listaus joukkueiden nimien lyhenteistä (aakkosjärjestyksessä)
    • \n
    • listaus maiden nimien lyhenteistä (aakkosjärjestyksessä)
    • \n

    Näistä toiminnoista saa yhden pisteen. Ohjelman tulee toimia seuraavasti:

    tiedosto: osa.json\nluettiin 14 pelaajan tiedot

    komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja

    komento: 1\nnimi: Travis Zajac

    \nTravis Zajac         NJD   9 + 16 =  25\n

    komento: 2\nBUF\nCGY\nDAL\nNJD\nNYI\nOTT\nPIT\nWPG\nWSH

    komento: 3\nCAN\nCHE\nCZE\nSWE\nUSA

    komento: 0

    Huomaa, että pelaajien tulostusasun pitää olla täsmälleen seuraavanlainen:

    \nLeon Draisaitl       EDM  43 + 67 = 110\nConnor McDavid       EDM  34 + 63 =  97\nTravis Zajac         NJD   9 + 16 =  25\nMike Green           EDM   3 +  8 =  11\nMarkus Granlund      EDM   3 +  1 =   4\n123456789012345678901234567890123456789\n

    Alimman rivin numerot on lisätty helpottamaan oikean merkkimäärän laskemista. Joukkueen nimen lyhenne siis tulostetaan alkaen rivin 22. merkistä. Plus on rivin 30. merkki ja = rivin 35. merkki. Kaikki luvut tulee tasata oikeaan reunaan omaa tulostusaluettaan. Tyhjät kohdat ovat välilyöntejä.

    Tulostuksen muotoilu kannattaa hoitaa f-merkkijonoina samaan tapaan kuin tässä osan 6 tehtävässä.

    Seuraavat toiminnot tuovat toisen pisteen:

      \n
    • joukkueen pelaajien listaaminen pisteiden (joka saadaan laskemalla goals + assits) mukaisessa järjestyksessä
    • \n
    • tietyn maan pelaajien listaaminen pisteiden mukaisessa järjestyksessä
    • \n

    Toiminnallisuus on seuraava:

    tiedosto: osa.json\nluettiin 14 pelaajan tiedot

    komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja

    komento: 4\njoukkue: OTT

    \nDrake Batherson      OTT   3 +  7 =  10\nJonathan Davidsson   OTT   0 +  1 =   1\n

    komento: 5\nmaa: CAN

    \nJared McCann         PIT  14 + 21 =  35\nTravis Zajac         NJD   9 + 16 =  25\nTaylor Fedun         DAL   2 +  7 =   9\nMark Jankowski       CGY   5 +  2 =   7\nLogan Shaw           WPG   3 +  2 =   5\n

    komento: 0

    Kolmannen pisteen saa seuraavilla toiminnoilla:

      \n
    • n eniten pistettä saanutta pelaajaa\n
        \n
      • jos kahden pelaajan pistemäärä on sama, ratkaisee maalimäärä
      • \n
      \n
    • \n
    • n eniten maaleja (goals) tehnyttä pelaajaa\n
        \n
      • jos kahden pelaajan maalimäärä on sama, järjestyksen ratkaisee se kummalla on vähemmän otteluja (games)
      • \n
      \n
    • \n

    Toiminnallisuus on seuraava:

    tiedosto: osa.json\nluettiin 14 pelaajan tiedot

    komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja

    komento: 6\nkuinka monta: 2

    \nJakub Vrana          WSH  25 + 27 =  52\nJared McCann         PIT  14 + 21 =  35\n

    komento: 6\nkuinka monta: 5

    \nJakub Vrana          WSH  25 + 27 =  52\nJared McCann         PIT  14 + 21 =  35\nJohn Klingberg       DAL   6 + 26 =  32\nTravis Zajac         NJD   9 + 16 =  25\nConor Sheary         BUF  10 + 13 =  23\n

    komento: 7\nkuinka monta: 6

    \nJakub Vrana          WSH  25 + 27 =  52\nJared McCann         PIT  14 + 21 =  35\nConor Sheary         BUF  10 + 13 =  23\nTravis Zajac         NJD   9 + 16 =  25\nJohn Klingberg       DAL   6 + 26 =  32\nMark Jankowski       CGY   5 +  2 =   7\n

    komento: 0

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/4-saannolliset-lausekkeet.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetan säännöllisellä lausekkeella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää säännöllisiä lausekkeita omissa ohjelmissasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python on mainio työkalu tekstin käsittelemiseen. Yksi työkalu tekstin käsittelemisessä ovat\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"säännölliset lausekkeet"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"regular expressions"}]},{"type":"text","value":"), joiden avulla voi esimerkiksi poimia ja etsiä merkkijonoja, jotka ovat tietyn muotoisia. Tässä osiossa käydään läpi säännöllisten lausekkeiden perusteita, ja löydät lisää tietoa Pythonin omasta "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/howto/regex.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tutoriaalista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"mita-ovat-saannolliset-lausekkeet","style":"position:relative;"},"children":[{"type":"text","value":"Mitä ovat säännölliset lausekkeet?"},{"type":"element","tagName":"a","properties":{"href":"#mita-ovat-saannolliset-lausekkeet","ariaLabel":"mita ovat saannolliset lausekkeet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Säännölliset lausekkeet ovat tavallaan ohjelmointikieli ohjelmointikielen sisällä. Lausekkeilla on oma syntaksinsa, jonka mukaan ne määritellään. Ideana on, että säännöllisellä lausekkeella määritellään sellaisten merkkijonojen joukko, jotka ovat tiettyjen sääntöjen mukaisia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkistellaan yksinkertaista esimerkkiä lausekkeiden käytöstä ennen tarkempaa perehtymistä sääntöihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" re\n\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ponneton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ponttooni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pullero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pallon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# merkkijonon tulee alkaa \"P\" ja päättyä \"on\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" re"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"search"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"^P.*on$\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"löytyy!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python löytyy!\nPonneton löytyy!\nPallon löytyy!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa säännöllisiä lausekkeita voi käsitellä moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"re"}]},{"type":"text","value":" avulla. Esimerkiksi yllä olevassa koodissa oleva metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"search"}]},{"type":"text","value":" etsii merkkijonosta osaa, joka täsmää annettuun säännölliseen lausekkeeseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että säännöllinen lauseke annetaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"merkkijonona"}]},{"type":"text","value":" funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"search"}]},{"type":"text","value":" parametriksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen esimerkki etsii merkkijonosta luvut. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"findall"}]},{"type":"text","value":" palauttaa kaikki säännölliseen lausekkeeseen täsmäävät osajonot listana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" re\n\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eka, 2 !#kolmas 44 viisi 678xyz962\""}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" re"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"findall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\d+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n44\n678\n962"}]}]},{"type":"element","tagName":"h2","properties":{"id":"saannollisten-lausekkeiden-syntaksi","style":"position:relative;"},"children":[{"type":"text","value":"Säännöllisten lausekkeiden syntaksi"},{"type":"element","tagName":"a","properties":{"href":"#saannollisten-lausekkeiden-syntaksi","ariaLabel":"saannollisten lausekkeiden syntaksi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaksi syntaksia, jota säännöllisissä lausekkeissa käytetään. Useimmissa esimerkeissä käytetään samaa testiohjelmaa eri syötteillä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" re\n\nlauseke "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lauseke: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" re"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"search"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lauseke"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osuma!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei osumaa.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h3","properties":{"id":"vaihtoehtoiset-alijonot","style":"position:relative;"},"children":[{"type":"text","value":"Vaihtoehtoiset alijonot"},{"type":"element","tagName":"a","properties":{"href":"#vaihtoehtoiset-alijonot","ariaLabel":"vaihtoehtoiset alijonot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pystyviivalla voidaan erottaa vaihtoehtoisia osajonoja. Esimerkiksi lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"911|112"}]},{"type":"text","value":" täsmää merkkijonoihin, joista löytyy joko osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"911"}]},{"type":"text","value":" tai osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"112"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aa|ee|ii"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"saapas"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"teema"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"iilimato"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ooppera"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"uuttera"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"h3","properties":{"id":"merkkijoukot","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijoukot"},{"type":"element","tagName":"a","properties":{"href":"#merkkijoukot","ariaLabel":"merkkijoukot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hakasulkeiden väliin voidaan merkitä joukko hyväksyttyjä merkkejä. Esimerkiksi merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[aeio]"}]},{"type":"text","value":" täsmää jonoihin, joista löytyy jokin merkeistä a, e, i, tai o. Merkintätapa sallii myös väliviivan käytön. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[0-68a-d]"}]},{"type":"text","value":" hyväksyy jonot, joista löytyy numero nollasta kuuteen, kahdeksikko tai merkki väliltä a...d. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[1-3][0-9]"}]},{"type":"text","value":" hyväksyy kaksinumeroiset luvut väliltä 10...39."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"[C-FRSÖ]"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"C"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"E"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"G"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"R"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ö"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"T"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"h3","properties":{"id":"toistaminen","style":"position:relative;"},"children":[{"type":"text","value":"Toistaminen"},{"type":"element","tagName":"a","properties":{"href":"#toistaminen","ariaLabel":"toistaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lausekkeen osaa voidaan toistaa esimerkiksi seuraavien operaattorien avulla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" toistaa osaa minkä tahansa määrän kertoja (myös nolla)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" toistaa osaa minkä tahansa määrän kertoja (ainakin yhden)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"{m}"}]},{"type":"text","value":" toistaa osaa täsmälleen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"m"}]},{"type":"text","value":" kertaa"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattorit viittaavat niitä edeltävään lausekkeen osaan. Esimerkiksi lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ba+b"}]},{"type":"text","value":" hyväksyy esimerkiksi osajonot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bab"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"baab"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"baaaaaaaaaaab"}]},{"type":"text","value":". Lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"A[BCDE]*Z"}]},{"type":"text","value":" puolestaan hyväksyy esimerkiksi osajonot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"AZ"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ADZ"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ABCDEBCDEBCDEZ"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1[234]*5"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"125"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"145"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12342345"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"126"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"165"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"h3","properties":{"id":"muita-erikoismerkkeja","style":"position:relative;"},"children":[{"type":"text","value":"Muita erikoismerkkejä"},{"type":"element","tagName":"a","properties":{"href":"#muita-erikoismerkkeja","ariaLabel":"muita erikoismerkkeja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pisteellä merkitään mitä tahansa yksittäistä merkkiä. Niinpä merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c...o"}]},{"type":"text","value":" vastaa esimerkiksi merkkijonoja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c-3po"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"combo"}]},{"type":"text","value":". Merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"^"}]},{"type":"text","value":" voidaan määritellä, että osuman pitää löytyä merkkijonon alusta, ja vastaavasti merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"$"}]},{"type":"text","value":", että sen on oltava lopussa. Näillä voidaan näppärästi myös rajata sääntö koskemaan vain annettuja merkkejä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"^[123]*$"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1221"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"333333333"}]},{"type":"text","value":"\nOsuma!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kenoviivaa voidaan käyttää etsimään erikoismerkkejä. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1+"}]},{"type":"text","value":" tarkoittaa yhtä tai useampaa ykköstä, mutta merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1\\+"}]},{"type":"text","value":" merkkijonoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"1+"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"^\\*"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moi*"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"m*o*i"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"*moi"}]},{"type":"text","value":"\nOsuma!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaarisulkeilla voidaan ryhmitellä lausekkeen osia. Esimerkiksi lauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(ab)+c"}]},{"type":"text","value":" hyväksyy jonot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"abc"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ababc"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ababababababc"}]},{"type":"text","value":", mutta ei esimerkiksi jonoja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ac"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bc"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lauseke: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"^(jabba).*(hut)$"}]},{"type":"text","value":"\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jabba the hut"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jabba a hut"}]},{"type":"text","value":"\nOsuma!\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jarmo the hut"}]},{"type":"text","value":"\nEi osumaa.\nAnna testijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jabba the smut"}]},{"type":"text","value":"\nEi osumaa."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Säännölliset lausekkeet","tmcname":"osa12-14_saannolliset_lausekkeet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan hieman säännöllisten lausekkeiden käyttöä."}]},{"type":"element","tagName":"h2","properties":{"id":"viikonpaivat","style":"position:relative;"},"children":[{"type":"text","value":"Viikonpäivät"},{"type":"element","tagName":"a","properties":{"href":"#viikonpaivat","ariaLabel":"viikonpaivat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee säännöllisen lausekkeen avulla funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"on_viikonpaiva(merkkijono: str)"}]},{"type":"text","value":" joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos sen parametrina saama merkkijono sisältää viikonpäivän lyhenteen (ma, ti, ke, to, pe, la tai su)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on_viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on_viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on_viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nFalse"}]}]},{"type":"element","tagName":"h2","properties":{"id":"vokaalitarkistus","style":"position:relative;"},"children":[{"type":"text","value":"Vokaalitarkistus"},{"type":"element","tagName":"a","properties":{"href":"#vokaalitarkistus","ariaLabel":"vokaalitarkistus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki_vokaaleja(merkkijono: str)"}]},{"type":"text","value":", joka tarkistaa säännöllisen lausekkeen avulla, ovatko parametrina annetun merkkijonon kaikki merkit vokaaleja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki_vokaaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eioueioieoieouyyyy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki_vokaaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"autoooo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kellonaika","style":"position:relative;"},"children":[{"type":"text","value":"Kellonaika"},{"type":"element","tagName":"a","properties":{"href":"#kellonaika","ariaLabel":"kellonaika permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kellonaika(merkkijono: str)"}]},{"type":"text","value":", joka tarkistaa säännöllisen lausekkeen avulla, onko parametrina oleva merkkijono muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tt:mm:ss"}]},{"type":"text","value":" oleva kellonaika (tunnit, minuutit ja sekunnit kaksinumeroisina)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12:43:01\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"AB:01:CD\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"17:59:59\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kellonaika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"33:66:77\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nTrue\nFalse"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"loppuhuipennus","style":"position:relative;"},"children":[{"type":"text","value":"Loppuhuipennus"},{"type":"element","tagName":"a","properties":{"href":"#loppuhuipennus","ariaLabel":"loppuhuipennus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tämä tehtävä ei sijainnistaan huolimatta liity mitenkään säännöllisiin lausekkeisiin, mutta luvun "},{"type":"element","tagName":"a","properties":{"href":"/osa-12/1-funktio-parametrina"},"children":[{"type":"text","value":"Funktio parametrina"}]},{"type":"text","value":" asia tulee olemaan tarpeen ja myös "},{"type":"element","tagName":"a","properties":{"href":"/osa-11/1-koosteet"},"children":[{"type":"text","value":"listakoosteet"}]},{"type":"text","value":" voivat olla käyttökelpoisia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovelluksen rakenteelle voi ottaa inspiraatiota osan 10 "},{"type":"element","tagName":"a","properties":{"href":"/osa-10/4-lisaa-esimerkkeja"},"children":[{"type":"text","value":"viimeisestä luvusta"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tilastot ojennukseen","tmcname":"osa12-15_tilastot_ojennukseen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään sovellus, jonka avulla on mahdollista tarkastella NHL-jääkiekkoliigan tilastoja muutamassa hieman erilaisessa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee kaksi json-muodossa olevaa tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki.json"}]},{"type":"text","value":", näistä ensimmäinen on tarkoitettu lähinnä testailun avuksi. Jälkimmäinen sisältää kaikkien kaudella 2019-20 pelanneiden pelaajien statistiikat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäisen pelaajan tiedot ovat muodossa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"json"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Patrik Laine\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"nationality\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"FIN\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"assists\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"goals\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"penalties\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"team\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"WPG\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"games\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"68"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ja molemmat tiedostoista sisältävät yksittäisten pelaajien tiedot taulukossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et muista, miten json-muotoinen tiedosto saadaan luettua Python-ohjelmaan, voit kerrata tämän "},{"type":"element","tagName":"a","properties":{"href":"/osa-7/4-datan-kasittely#json-tiedoston-lukeminen"},"children":[{"type":"text","value":"osan 7 materiaalista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee nyt ohjelma, joka kysyy aluksi tiedoston nimeä ja tarjoaa sitten seuraavat toiminnot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"yksittäisen pelaajan tietojen haku nimen perusteella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"listaus joukkueiden nimien lyhenteistä (aakkosjärjestyksessä)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"listaus maiden nimien lyhenteistä (aakkosjärjestyksessä)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näistä toiminnoista saa yhden pisteen. Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":"\nluettiin 14 pelaajan tiedot"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Travis Zajac"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Travis Zajac NJD  9 + 16 = 25\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nBUF\nCGY\nDAL\nNJD\nNYI\nOTT\nPIT\nWPG\nWSH"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nCAN\nCHE\nCZE\nSWE\nUSA"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että pelaajien tulostusasun pitää olla täsmälleen seuraavanlainen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Leon Draisaitl EDM 43 + 67 = 110\nConnor McDavid EDM 34 + 63 = 97\nTravis Zajac NJD  9 + 16 = 25\nMike Green EDM 3 + 8 = 11\nMarkus Granlund EDM 3 + 1 = 4\n123456789012345678901234567890123456789\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alimman rivin numerot on lisätty helpottamaan oikean merkkimäärän laskemista. Joukkueen nimen lyhenne siis tulostetaan alkaen rivin 22. merkistä. Plus on rivin 30. merkki ja = rivin 35. merkki. Kaikki luvut tulee tasata oikeaan reunaan omaa tulostusaluettaan. Tyhjät kohdat ovat välilyöntejä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen muotoilu kannattaa hoitaa f-merkkijonoina samaan tapaan kuin "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#programming-exercise-kurssin-tulokset-osa-3"},"children":[{"type":"text","value":"tässä"}]},{"type":"text","value":" osan 6 tehtävässä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavat toiminnot tuovat toisen pisteen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"joukkueen pelaajien listaaminen pisteiden (joka saadaan laskemalla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"goals"}]},{"type":"text","value":" + "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"assits"}]},{"type":"text","value":") mukaisessa järjestyksessä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"tietyn maan pelaajien listaaminen pisteiden mukaisessa järjestyksessä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiminnallisuus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":"\nluettiin 14 pelaajan tiedot"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\njoukkue: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"OTT"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Drake Batherson OTT 3 + 7 = 10\nJonathan Davidsson OTT 0 + 1 = 1\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nmaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"CAN"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jared McCann PIT 14 + 21 = 35\nTravis Zajac NJD 9 + 16 = 25\nTaylor Fedun DAL 2 + 7 = 9\nMark Jankowski CGY 5 + 2 = 7\nLogan Shaw WPG 3 + 2 = 5\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmannen pisteen saa seuraavilla toiminnoilla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"n eniten pistettä saanutta pelaajaa\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos kahden pelaajan pistemäärä on sama, ratkaisee maalimäärä"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"n eniten maaleja ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"goals"}]},{"type":"text","value":") tehnyttä pelaajaa\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos kahden pelaajan maalimäärä on sama, järjestyksen ratkaisee se kummalla on vähemmän otteluja ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"games"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toiminnallisuus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"osa.json"}]},{"type":"text","value":"\nluettiin 14 pelaajan tiedot"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkuinka monta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jakub Vrana WSH 25 + 27 = 52\nJared McCann PIT 14 + 21 = 35\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nkuinka monta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jakub Vrana WSH 25 + 27 = 52\nJared McCann PIT 14 + 21 = 35\nJohn Klingberg DAL 6 + 26 = 32\nTravis Zajac NJD 9 + 16 = 25\nConor Sheary BUF 10 + 13 = 23\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nkuinka monta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Jakub Vrana WSH 25 + 27 = 52\nJared McCann PIT 14 + 21 = 35\nConor Sheary BUF 10 + 13 = 23\nTravis Zajac NJD 9 + 16 = 25\nJohn Klingberg DAL 6 + 26 = 32\nMark Jankowski CGY 5 + 2 = 7\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"9d660c41-3094-5bf4-b084-30407dea276d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetan säännöllisellä lausekkeella
    • \n
    • Osaat hyödyntää säännöllisiä lausekkeita omissa ohjelmissasi
    • \n

    Python on mainio työkalu tekstin käsittelemiseen. Yksi työkalu tekstin käsittelemisessä ovat\nsäännölliset lausekkeet (regular expressions), joiden avulla voi esimerkiksi poimia ja etsiä merkkijonoja, jotka ovat tietyn muotoisia. Tässä osiossa käydään läpi säännöllisten lausekkeiden perusteita, ja löydät lisää tietoa Pythonin omasta tutoriaalista.

    Mitä ovat säännölliset lausekkeet?

    Säännölliset lausekkeet ovat tavallaan ohjelmointikieli ohjelmointikielen sisällä. Lausekkeilla on oma syntaksinsa, jonka mukaan ne määritellään. Ideana on, että säännöllisellä lausekkeella määritellään sellaisten merkkijonojen joukko, jotka ovat tiettyjen sääntöjen mukaisia.

    Tarkistellaan yksinkertaista esimerkkiä lausekkeiden käytöstä ennen tarkempaa perehtymistä sääntöihin:

    import re\n\nsanat = [\"Python\", \"Ponneton\", \"Ponttooni\", \"Pullero\", \"Pallon\"]\n\nfor sana in sanat:\n    # merkkijonon tulee alkaa \"P\" ja päättyä \"on\"\n    if re.search(\"^P.*on$\", sana):\n        print(sana, \"löytyy!\")

    Python löytyy!\nPonneton löytyy!\nPallon löytyy!

    Pythonissa säännöllisiä lausekkeita voi käsitellä moduulin re avulla. Esimerkiksi yllä olevassa koodissa oleva metodi search etsii merkkijonosta osaa, joka täsmää annettuun säännölliseen lausekkeeseen.

    Huomaa, että säännöllinen lauseke annetaan merkkijonona funktion search parametriksi.

    Toinen esimerkki etsii merkkijonosta luvut. Metodi findall palauttaa kaikki säännölliseen lausekkeeseen täsmäävät osajonot listana:

    import re\n\nlause = \"Eka, 2 !#kolmas 44 viisi 678xyz962\"\n\nluvut = re.findall(\"\\d+\", lause)\n\nfor luku in luvut:\n    print(luku)

    2\n44\n678\n962

    Säännöllisten lausekkeiden syntaksi

    Tarkastellaan seuraavaksi syntaksia, jota säännöllisissä lausekkeissa käytetään. Useimmissa esimerkeissä käytetään samaa testiohjelmaa eri syötteillä.

    import re\n\nlauseke = input(\"Anna lauseke: \")\n\nwhile True:\n    mjono = input(\"Anna merkkijono: \")\n    if mjono == \"\":\n        break\n    if re.search(lauseke, mjono):\n        print(\"Osuma!\")\n    else:\n        print(\"Ei osumaa.\")

    Vaihtoehtoiset alijonot

    Pystyviivalla voidaan erottaa vaihtoehtoisia osajonoja. Esimerkiksi lauseke 911|112 täsmää merkkijonoihin, joista löytyy joko osajono 911 tai osajono 112.

    Esimerkiksi

    Anna lauseke: aa|ee|ii\nAnna testijono: saapas\nOsuma!\nAnna testijono: teema\nOsuma!\nAnna testijono: iilimato\nOsuma!\nAnna testijono: ooppera\nEi osumaa.\nAnna testijono: uuttera\nEi osumaa.

    Merkkijoukot

    Hakasulkeiden väliin voidaan merkitä joukko hyväksyttyjä merkkejä. Esimerkiksi merkintä [aeio] täsmää jonoihin, joista löytyy jokin merkeistä a, e, i, tai o. Merkintätapa sallii myös väliviivan käytön. Merkintä [0-68a-d] hyväksyy jonot, joista löytyy numero nollasta kuuteen, kahdeksikko tai merkki väliltä a...d. Merkintä [1-3][0-9] hyväksyy kaksinumeroiset luvut väliltä 10...39.

    Esimerkiksi:

    Anna lauseke: [C-FRSÖ]\nAnna testijono: C\nOsuma!\nAnna testijono: E\nOsuma!\nAnna testijono: G\nEi osumaa.\nAnna testijono: R\nOsuma!\nAnna testijono: Ö\nOsuma!\nAnna testijono: T\nEi osumaa.

    Toistaminen

    Lausekkeen osaa voidaan toistaa esimerkiksi seuraavien operaattorien avulla:

      \n
    • * toistaa osaa minkä tahansa määrän kertoja (myös nolla)
    • \n
    • + toistaa osaa minkä tahansa määrän kertoja (ainakin yhden)
    • \n
    • {m} toistaa osaa täsmälleen m kertaa
    • \n

    Operaattorit viittaavat niitä edeltävään lausekkeen osaan. Esimerkiksi lauseke ba+b hyväksyy esimerkiksi osajonot bab, baab ja baaaaaaaaaaab. Lauseke A[BCDE]*Z puolestaan hyväksyy esimerkiksi osajonot AZ, ADZ tai ABCDEBCDEBCDEZ.

    Esimerkiksi:

    Anna lauseke: 1[234]*5\nAnna testijono: 15\nOsuma!\nAnna testijono: 125\nOsuma!\nAnna testijono: 145\nOsuma!\nAnna testijono: 12342345\nOsuma!\nAnna testijono: 126\nEi osumaa.\nAnna testijono: 165\nEi osumaa.

    Muita erikoismerkkejä

    Pisteellä merkitään mitä tahansa yksittäistä merkkiä. Niinpä merkintä c...o vastaa esimerkiksi merkkijonoja c-3po tai combo. Merkillä ^ voidaan määritellä, että osuman pitää löytyä merkkijonon alusta, ja vastaavasti merkillä $, että sen on oltava lopussa. Näillä voidaan näppärästi myös rajata sääntö koskemaan vain annettuja merkkejä:

    Anna lauseke: ^[123]*$\nAnna testijono: 4\nEi osumaa.\nAnna testijono: 1221\nOsuma!\nAnna testijono: 333333333\nOsuma!

    Kenoviivaa voidaan käyttää etsimään erikoismerkkejä. Merkintä 1+ tarkoittaa yhtä tai useampaa ykköstä, mutta merkintä 1\\+ merkkijonoa 1+.

    Esimerkiksi

    Anna lauseke: ^\\*\nAnna testijono: moi*\nEi osumaa.\nAnna testijono: m*o*i\nEi osumaa.\nAnna testijono: *moi\nOsuma!

    Kaarisulkeilla voidaan ryhmitellä lausekkeen osia. Esimerkiksi lauseke (ab)+c hyväksyy jonot abc, ababc ja ababababababc, mutta ei esimerkiksi jonoja ac tai bc.

    Esimerkiksi

    Anna lauseke: ^(jabba).*(hut)$\nAnna testijono: jabba the hut\nOsuma!\nAnna testijono: jabba a hut\nOsuma!\nAnna testijono: jarmo the hut\nEi osumaa.\nAnna testijono: jabba the smut\nEi osumaa.

    Harjoitellaan hieman säännöllisten lausekkeiden käyttöä.

    Viikonpäivät

    Tee säännöllisen lausekkeen avulla funktio on_viikonpaiva(merkkijono: str) joka palauttaa True, jos sen parametrina saama merkkijono sisältää viikonpäivän lyhenteen (ma, ti, ke, to, pe, la tai su).

    Esimerkki funktion kutsumisesta:

    print(on_viikonpaiva(\"ma\"))\nprint(on_viikonpaiva(\"pe\"))\nprint(on_viikonpaiva(\"tu\"))

    True\nTrue\nFalse

    Vokaalitarkistus

    Tee funktio kaikki_vokaaleja(merkkijono: str), joka tarkistaa säännöllisen lausekkeen avulla, ovatko parametrina annetun merkkijonon kaikki merkit vokaaleja.

    Esimerkki funktion kutsumisesta:

    print(kaikki_vokaaleja(\"eioueioieoieouyyyy\"))\nprint(kaikki_vokaaleja(\"autoooo\"))

    True\nFalse

    Kellonaika

    Tee funktio kellonaika(merkkijono: str), joka tarkistaa säännöllisen lausekkeen avulla, onko parametrina oleva merkkijono muotoa tt:mm:ss oleva kellonaika (tunnit, minuutit ja sekunnit kaksinumeroisina).

    Esimerkki funktion kutsumisesta:

    print(kellonaika(\"12:43:01\"))\nprint(kellonaika(\"AB:01:CD\"))\nprint(kellonaika(\"17:59:59\"))\nprint(kellonaika(\"33:66:77\"))

    True\nFalse\nTrue\nFalse

    Loppuhuipennus

    Harjoitellaan vielä osan lopussa hieman laajemman ohjelman tekemistä olioita hyödyntäen. Tämä tehtävä ei sijainnistaan huolimatta liity mitenkään säännöllisiin lausekkeisiin, mutta luvun Funktio parametrina asia tulee olemaan tarpeen ja myös listakoosteet voivat olla käyttökelpoisia.

    Sovelluksen rakenteelle voi ottaa inspiraatiota osan 10 viimeisestä luvusta.

    Tässä tehtävässä tehdään sovellus, jonka avulla on mahdollista tarkastella NHL-jääkiekkoliigan tilastoja muutamassa hieman erilaisessa muodossa.

    Tehtäväpohjan mukana tulee kaksi json-muodossa olevaa tiedostoa osa.json ja kaikki.json, näistä ensimmäinen on tarkoitettu lähinnä testailun avuksi. Jälkimmäinen sisältää kaikkien kaudella 2019-20 pelanneiden pelaajien statistiikat.

    Yksittäisen pelaajan tiedot ovat muodossa

    {\n    \"name\": \"Patrik Laine\",\n    \"nationality\": \"FIN\",\n    \"assists\": 35,\n    \"goals\": 28,\n    \"penalties\": 22,\n    \"team\": \"WPG\",\n    \"games\": 68\n},

    ja molemmat tiedostoista sisältävät yksittäisten pelaajien tiedot taulukossa.

    Jos et muista, miten json-muotoinen tiedosto saadaan luettua Python-ohjelmaan, voit kerrata tämän osan 7 materiaalista.

    Tee nyt ohjelma, joka kysyy aluksi tiedoston nimeä ja tarjoaa sitten seuraavat toiminnot:

      \n
    • yksittäisen pelaajan tietojen haku nimen perusteella
    • \n
    • listaus joukkueiden nimien lyhenteistä (aakkosjärjestyksessä)
    • \n
    • listaus maiden nimien lyhenteistä (aakkosjärjestyksessä)
    • \n

    Näistä toiminnoista saa yhden pisteen. Ohjelman tulee toimia seuraavasti:

    tiedosto: osa.json\nluettiin 14 pelaajan tiedot

    komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja

    komento: 1\nnimi: Travis Zajac

    \nTravis Zajac         NJD   9 + 16 =  25\n

    komento: 2\nBUF\nCGY\nDAL\nNJD\nNYI\nOTT\nPIT\nWPG\nWSH

    komento: 3\nCAN\nCHE\nCZE\nSWE\nUSA

    komento: 0

    Huomaa, että pelaajien tulostusasun pitää olla täsmälleen seuraavanlainen:

    \nLeon Draisaitl       EDM  43 + 67 = 110\nConnor McDavid       EDM  34 + 63 =  97\nTravis Zajac         NJD   9 + 16 =  25\nMike Green           EDM   3 +  8 =  11\nMarkus Granlund      EDM   3 +  1 =   4\n123456789012345678901234567890123456789\n

    Alimman rivin numerot on lisätty helpottamaan oikean merkkimäärän laskemista. Joukkueen nimen lyhenne siis tulostetaan alkaen rivin 22. merkistä. Plus on rivin 30. merkki ja = rivin 35. merkki. Kaikki luvut tulee tasata oikeaan reunaan omaa tulostusaluettaan. Tyhjät kohdat ovat välilyöntejä.

    Tulostuksen muotoilu kannattaa hoitaa f-merkkijonoina samaan tapaan kuin tässä osan 6 tehtävässä.

    Seuraavat toiminnot tuovat toisen pisteen:

      \n
    • joukkueen pelaajien listaaminen pisteiden (joka saadaan laskemalla goals + assits) mukaisessa järjestyksessä
    • \n
    • tietyn maan pelaajien listaaminen pisteiden mukaisessa järjestyksessä
    • \n

    Toiminnallisuus on seuraava:

    tiedosto: osa.json\nluettiin 14 pelaajan tiedot

    komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja

    komento: 4\njoukkue: OTT

    \nDrake Batherson      OTT   3 +  7 =  10\nJonathan Davidsson   OTT   0 +  1 =   1\n

    komento: 5\nmaa: CAN

    \nJared McCann         PIT  14 + 21 =  35\nTravis Zajac         NJD   9 + 16 =  25\nTaylor Fedun         DAL   2 +  7 =   9\nMark Jankowski       CGY   5 +  2 =   7\nLogan Shaw           WPG   3 +  2 =   5\n

    komento: 0

    Kolmannen pisteen saa seuraavilla toiminnoilla:

      \n
    • n eniten pistettä saanutta pelaajaa\n
        \n
      • jos kahden pelaajan pistemäärä on sama, ratkaisee maalimäärä
      • \n
      \n
    • \n
    • n eniten maaleja (goals) tehnyttä pelaajaa\n
        \n
      • jos kahden pelaajan maalimäärä on sama, järjestyksen ratkaisee se kummalla on vähemmän otteluja (games)
      • \n
      \n
    • \n

    Toiminnallisuus on seuraava:

    tiedosto: osa.json\nluettiin 14 pelaajan tiedot

    komennot:\n0 lopeta\n1 hae pelaaja\n2 joukkueet\n3 maat\n4 joukkueen pelaajat\n5 maan pelaajat\n6 eniten pisteitä\n7 eniten maaleja

    komento: 6\nkuinka monta: 2

    \nJakub Vrana          WSH  25 + 27 =  52\nJared McCann         PIT  14 + 21 =  35\n

    komento: 6\nkuinka monta: 5

    \nJakub Vrana          WSH  25 + 27 =  52\nJared McCann         PIT  14 + 21 =  35\nJohn Klingberg       DAL   6 + 26 =  32\nTravis Zajac         NJD   9 + 16 =  25\nConor Sheary         BUF  10 + 13 =  23\n

    komento: 7\nkuinka monta: 6

    \nJakub Vrana          WSH  25 + 27 =  52\nJared McCann         PIT  14 + 21 =  35\nConor Sheary         BUF  10 + 13 =  23\nTravis Zajac         NJD   9 + 16 =  25\nJohn Klingberg       DAL   6 + 26 =  32\nMark Jankowski       CGY   5 +  2 =   7\n

    komento: 0

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/4-saannolliset-lausekkeet.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-12/page-data.json b/page-data/osa-12/page-data.json index 9935cd8b7..d652f5d30 100644 --- a/page-data/osa-12/page-data.json +++ b/page-data/osa-12/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-12", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-12","title":"Osa 12"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-12","title":"Osa 12"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-12/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-13/1-pygame-kayttoon/page-data.json b/page-data/osa-13/1-pygame-kayttoon/page-data.json index 15044ad4e..0c59cfd33 100644 --- a/page-data/osa-13/1-pygame-kayttoon/page-data.json +++ b/page-data/osa-13/1-pygame-kayttoon/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-13/1-pygame-kayttoon", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Olet asentanut Pygame-kirjaston koneellesi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda ikkunan ja sulkea ohjelman"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat piirtää ikkunaan tiedostossa olevan kuvan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin kahdella viimeisellä viikolla tutustumme Pygame-kirjastoon, joka on peliohjelmointiin tarkoitettu Python-kirjasto. Pygamen avulla pystyy piirtämään grafiikkaa, käsittelemään näppäimistön ja hiiren tapahtumia ja tekemään muuta peleissä tarvittavaa."}]},{"type":"element","tagName":"h2","properties":{"id":"pygamen-asentaminen","style":"position:relative;"},"children":[{"type":"text","value":"Pygamen asentaminen"},{"type":"element","tagName":"a","properties":{"href":"#pygamen-asentaminen","ariaLabel":"pygamen asentaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"h3","properties":{"id":"linux","style":"position:relative;"},"children":[{"type":"text","value":"Linux"},{"type":"element","tagName":"a","properties":{"href":"#linux","ariaLabel":"linux permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Avaa komentorivi ja kirjoita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pip3 install pygame"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 399px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/a92634cb53af0aa1734e9ca12ca79562/a307d/pygame_linux.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 60.434782608695656%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAyElEQVQoz+2Oy26CYBSE/5XXxssTKAWqUQSixmorKhEEfgQv7/8un8FqorELFm5MXHyZyZnJ5IhEBgSeyy4Oz5rGIZG/JokC9lvJerVgn0gOaYwMPOLQ57jbMp994/w8IrzuL5G5YtNzWKoTpOkSGkuc1oh07HOcRrj6FLOmYje/sBr6n9a1fxFWVWNY62B/6FgVDbuqk93Mssqo3j1nme8X2hhF5cKtv0cYJYV+VigpD2T3azYof+ZC5C3mHc09+PQP34MvPHgC7r1OntPJWSAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a92634cb53af0aa1734e9ca12ca79562/a0b58/pygame_linux.webp 230w","/static/a92634cb53af0aa1734e9ca12ca79562/66086/pygame_linux.webp 399w"],"sizes":"(max-width: 399px) 100vw, 399px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a92634cb53af0aa1734e9ca12ca79562/81c8e/pygame_linux.png 230w","/static/a92634cb53af0aa1734e9ca12ca79562/a307d/pygame_linux.png 399w"],"sizes":"(max-width: 399px) 100vw, 399px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/a92634cb53af0aa1734e9ca12ca79562/a307d/pygame_linux.png","alt":"pygame linux","title":"pygame linux","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h3","properties":{"id":"windows","style":"position:relative;"},"children":[{"type":"text","value":"Windows"},{"type":"element","tagName":"a","properties":{"href":"#windows","ariaLabel":"windows permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Avaa Windowsin terminaali napauttamalla vasemman alakulman Windows-painiketta. Kirjoita aukeavaan ikkunaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cmd"}]},{"type":"text","value":" ja paina enter:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 392px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/76954afbb36ac5953d205b7cdab98ff6/0acb4/13_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 173.47826086956525%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAjCAIAAAAblL1PAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADp0lEQVRIx+2VT0gjVxzHp0g1kwlqNEmJqUTblB6EPewaEKGlINKlhW5Peyhb2GNPwkIPhUJvPRVakP6hQr0UlvoHm6yaSfaSVTdqEpdQt8ZsTGidxJ3JG2cmk0ky+fPevDKZVUrQrnruly+PuXze7/d+v/d7Q9hsNovFEgwGYUu1Wq3RaGiaJsuypmn4P0W43e6BgYHl5eVMJoMQKhQKsixDCBOJBITwPKxeryOEiJ6ens7OziBNY4xVVW02GkjTjJjay0QMDg66XK7FhYVcLndwcPB0d1dRFIPELxPhdDrtNtt3vz7YFfBGVt7IlsJpMZyWwmnxUVoKPxPXs0rk7+qZ1tOmKOqLb2fffW/i3tc/LCT4n0N/zDx8OvPwz9lw6qdA4n40v5yq+PZK/qTSZsJqtVos1Jff//bVjO/HQOJ+7PncE/AgVfUly/79si9Z9iWV3/dKZ1qHzaRpdiHAIfzsuL73vLLHVfdB7dQpUD/PLdhspldX/soe8IXCBUv1omBWq5UkyUBAb5VcKgHAHzJMVVUxxlBDSNNOrWm4zTpsMpGhUBBjLAgCy7KpVKpcLl8kBaNglvn5+XQ6I4kSAEBRlGKxCAAoFAo8zx8fH7Msq7ZyadtOhymKWlxcPDo6KhaLHMcBAGRZFgQBtCSKIsdxjUbj3Mhzc3PJ5L4sy7lcDgDAMAzLshzHGVvwPM+yLMMw+Xz+3xf+ReSlpSUAQLlcBgBIkiQIgrEqiiJJUrFYNHIRBAEh1F7t1dVVURQzmUw+n89mszzPX7RgJEnSNN1sNhVFqVQqqqrWarXmidomycAghPpUnfQ5YAwzwzDValU8kSAIZ8avVCr6PLf6bAqFQsZ++DL6H74s3NfXR5LkFWHj6b0i7Ha7nU4n3Xq3Lw17PB632x0IBK4C9/b2Xv3MY2NjXq/X7/efXvdLwA6Hg6KolZUVjHGtVoMQ1i8svVUGXK/XeZ4/PDxUVRUhpGGMEEIQYg1BCJGm6StCuPUBNQQRJCiK6ujomJ6ejsVi4XCYpulIJPJkJ76x9mh7OxqJxdY2t3biO4/XH29H41ubW+vrkXg8Hl3bjG1FCa/XOzk5SRD677Krq2t4+I3B113Eq+bR21P9Dvv4a92fjnsIgrj74biru+v66Jt3PnnnFYKw3r1mfqufGBoaGhkZMZlMDofDbDbb7HZ7v9Uy4Jn65pebH30wcX3is1t3eoff/vjzqWs3bozevHV76l5vn936vqd7yP4P6JyrnQ25/+oAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/76954afbb36ac5953d205b7cdab98ff6/a0b58/13_1_1.webp 230w","/static/76954afbb36ac5953d205b7cdab98ff6/86099/13_1_1.webp 392w"],"sizes":"(max-width: 392px) 100vw, 392px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/76954afbb36ac5953d205b7cdab98ff6/81c8e/13_1_1.png 230w","/static/76954afbb36ac5953d205b7cdab98ff6/0acb4/13_1_1.png 392w"],"sizes":"(max-width: 392px) 100vw, 392px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/76954afbb36ac5953d205b7cdab98ff6/0acb4/13_1_1.png","alt":"13 1 1","title":"13 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita auenneeeseen komentokehoteikkunaan seuraava komentosarja ja paina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"enter"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pip3 install pygame"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä asentaa Pygame-paketin koneellesi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asennus voi vaatia järjestelmänvalvojan oikeuksia. Jos ylläoleva ei toimi, voit yrittää ajaa terminaalin järjestelmänvalvojana (valitse Windows-valikko, paina hiiren kakkospainiketta CMD-valinnan päällä ja valitse \"Run as administrator\" tai \"Aja järjestelmänvalvojana\")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että asennus vaatii että olet asennusvaiheessa ohjeiden mukaisesti valinnut kohdan \"Add Python 3.XX to path\", katso "},{"type":"element","tagName":"a","properties":{"href":"https://www.mooc.fi/fi/installation/vscode#python3","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ohjeet"}]}]},{"type":"element","tagName":"h3","properties":{"id":"mac","style":"position:relative;"},"children":[{"type":"text","value":"Mac"},{"type":"element","tagName":"a","properties":{"href":"#mac","ariaLabel":"mac permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Avaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Terminaali"}]},{"type":"text","value":", esim. painamalla oikean yläkulman suurennuslasi-symbolia:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 746px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/77ceacb61dfaf80c7c442a4225b65e87/62de4/13-1-2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 24.347826086956523%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAABYlAAAWJQFJUiTwAAABGUlEQVQY02OYs2Rje9/sSTOWzlmycdKsZVPmrJg6Z+WC5Zt7py7s6J/dO2nehDnLW6bOb+mftWD55oUrN/VPXVNRPW3SzEVzlqxn0Lf207Hw1rPyhTF89Kx99W38tM08VE3dZE2c7S18z7gX99gnqll7G9n6alt6q5u561l56lv7MLCIaLGIaLGKaLMIQ0kWYU1GIQ1GYU1JMf1QKbs6OY9OeW8DcVMGQTUWIQ1mYQ1WEU0mIQ1mQXUGPnkzEJIzhSBeOVMeWRNZOQtHRYdAZRdzBTt+OVMGaQMOWWOQrKwJCMlASGMGfgVzfjlTXhkjXlljXhlDHil9PmkDNRlTKRkTNlljVjkTPnkzIXlzPnlzXpDRUJvAbFMAjAFKS35RLdoAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/77ceacb61dfaf80c7c442a4225b65e87/a0b58/13-1-2.webp 230w","/static/77ceacb61dfaf80c7c442a4225b65e87/bc10c/13-1-2.webp 460w","/static/77ceacb61dfaf80c7c442a4225b65e87/f7ebd/13-1-2.webp 746w"],"sizes":"(max-width: 746px) 100vw, 746px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/77ceacb61dfaf80c7c442a4225b65e87/81c8e/13-1-2.png 230w","/static/77ceacb61dfaf80c7c442a4225b65e87/08a84/13-1-2.png 460w","/static/77ceacb61dfaf80c7c442a4225b65e87/62de4/13-1-2.png 746w"],"sizes":"(max-width: 746px) 100vw, 746px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/77ceacb61dfaf80c7c442a4225b65e87/62de4/13-1-2.png","alt":"13 1 2","title":"13 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita aukeavaan teksikenttään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"terminal"}]},{"type":"text","value":" ja paina enter:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/a310ec5ccf9438989514ad8da107dcc3/47218/13-1-3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 66.95652173913044%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAABYlAAAWJQFJUiTwAAACa0lEQVQozy2STXLTQBCFdYFwgzh3IlmFDeQGkAQ2LKGo4hBAQhWp7FglQMohln8iO7Yly7JkzWime370M5LsACeg5KTq23W97ur3njX3poNup2t3Bv0+53z9+aL63ilGcx1zlRZK50pnSmdCapQKUQHKvCi/nZ0PnKFlDyZt22nbo+vu3cQnvhP4HvEXHEArnUn1qASUHAQHAahUmg+c0cwPrIOP3dcn+PbcvDw1h6fF8Vn55swcfjVOkJs8lypXOi9MvVr/Xf/5V5Q1CiVUWlYrqVLr99XNz+vBzdB3PDKeM2/BZyF4IeeodZoJmZqy/vTl5PmLg929vXfvPxSm0UuVAUirb/fa1+3e7W0UkygmhFCaJJRSFFKoFIQq6/XR8fHOTuvJ1tbT3T1TrQGl0hmgsJxhMBxPnYnrBVFMgaFuAM1AMZCUYW7ql6+Otre3W63W/v6zLDeMI0rNAK1Ob2L3h+2b3tW17frhkkAYs3DJ4gQJEyRBDspx7i4vf11c/Oh0eknCCWEJw0UYW+4s6N+OnOHE88NFRBdLuohoEBHKxcNxAIkgXW8+Hk8TyilhyyWlCUw93/LcmTube37QpJLmchOPUBnKdIMWQgMIShkhjDHgXHCOHCRNuEVRzfxgNJ66ng/YxCBUo0GhUahHUAmppUql1KIhlSprfg4TGS1JGMVhFLPGx2bQ3NyIYQMKHUZkPPFcz3+ojc7yxu04pjFJHiCUMY4gFEeVbKymDBgXwWLpDO96fcfu9jmI5i+ZMY6WTvMGnWmdZXluTFlWa1OtTFkXpipMWZgKmmKiaJaKsqrr1X29ui/L+j/LRoPjTcXpPgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a310ec5ccf9438989514ad8da107dcc3/a0b58/13-1-3.webp 230w","/static/a310ec5ccf9438989514ad8da107dcc3/bc10c/13-1-3.webp 460w","/static/a310ec5ccf9438989514ad8da107dcc3/966d8/13-1-3.webp 920w","/static/a310ec5ccf9438989514ad8da107dcc3/3dddb/13-1-3.webp 1344w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a310ec5ccf9438989514ad8da107dcc3/81c8e/13-1-3.png 230w","/static/a310ec5ccf9438989514ad8da107dcc3/08a84/13-1-3.png 460w","/static/a310ec5ccf9438989514ad8da107dcc3/c0255/13-1-3.png 920w","/static/a310ec5ccf9438989514ad8da107dcc3/47218/13-1-3.png 1344w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/a310ec5ccf9438989514ad8da107dcc3/c0255/13-1-3.png","alt":"13 1 3","title":"13 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita auenneeeseen komentokehoteikkunaan seuraava komentosarja ja paina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"enter"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pip3 install pygame"}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/cc8d7c319bc7baf0232b2d92350f9631/d56e1/13-1-4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 28.695652173913043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAiElEQVQY06XNwQoCIRSFYd//ZXoJ4dpUIpqEYRZii1y4cRai4xgMGEEboW954PAjcd6BYXd1OR0PhBDGGABgjAkhADBNe8651lpKKYSglHLOHx2yz9ftqp1z1lpjjFIqhDDPc4zRe19Kaa2tm9atHVpqXTa11pRSzrkNQ7/TJ/JdGz3/VR4/vwF1E1iIv4njxgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cc8d7c319bc7baf0232b2d92350f9631/a0b58/13-1-4.webp 230w","/static/cc8d7c319bc7baf0232b2d92350f9631/bc10c/13-1-4.webp 460w","/static/cc8d7c319bc7baf0232b2d92350f9631/966d8/13-1-4.webp 920w","/static/cc8d7c319bc7baf0232b2d92350f9631/bbe5b/13-1-4.webp 1130w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cc8d7c319bc7baf0232b2d92350f9631/81c8e/13-1-4.png 230w","/static/cc8d7c319bc7baf0232b2d92350f9631/08a84/13-1-4.png 460w","/static/cc8d7c319bc7baf0232b2d92350f9631/c0255/13-1-4.png 920w","/static/cc8d7c319bc7baf0232b2d92350f9631/d56e1/13-1-4.png 1130w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/cc8d7c319bc7baf0232b2d92350f9631/c0255/13-1-4.png","alt":"13 1 4","title":"13 1 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä asentaa Pygame-paketin koneellesi."}]},{"type":"element","tagName":"h2","properties":{"id":"ensimmainen-ohjelma","style":"position:relative;"},"children":[{"type":"text","value":"Ensimmäinen ohjelma"},{"type":"element","tagName":"a","properties":{"href":"#ensimmainen-ohjelma","ariaLabel":"ensimmainen ohjelma permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on yksinkertainen Pygamea käyttävä testiohjelma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma käynnistetään, se näyttää käyttäjälle seuraavanlaisen ikkunan:"}]},{"type":"element","tagName":"img","properties":{"src":"/d11704399cba1d2075b1135cef373b65/pygame_eka.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa ei ole kuitenkaan vielä muuta sisältöä kuin ikkunan näyttäminen. Ohjelman suoritus jatkuu niin kauan, kunnes käyttäjä sulkee ikkunan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan seuraavaksi tarkemmin, miten ohjelma on rakentunut. Ohjelman alussa rivi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import pygame"}]},{"type":"text","value":" ottaa mukaan Pygame-kirjaston. Kirjaston käyttäminen alkaa kutsumalla funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.init"}]},{"type":"text","value":", minkä jälkeen ohjelma luo ikkunan funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.set_mode"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"naytto"}]},{"type":"text","value":" kautta ikkunaan voidaan viitata myöhemmin esimerkiksi grafiikan piirtämistä varten. Parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(640, 480)"}]},{"type":"text","value":" tarkoittaa, että tässä ohjelmassa ikkunan leveys on 640 pikseliä ja korkeus on 480 pikseliä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavaksi ohjelmassa on kaksi komentoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fill"}]},{"type":"text","value":" täyttää näytön annetulla värillä. Tässä tapauksessa värinä on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(0, 0, 0)"}]},{"type":"text","value":", mikä tarkoittaa mustaa. Sitten metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.flip"}]},{"type":"text","value":" päivittää näytön sisällön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen alkaa ohjelman "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pääsilmukka"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääsilmukka käsittelee tapahtumat, jotka käyttöjärjestelmä välittää ohjelmalle. Joka kierroksella funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.event.get"}]},{"type":"text","value":" antaa listan tapahtumista, jotka ovat syntyneet funktion edellisen kutsukerran jälkeen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa ohjelma käsittelee vain tyyppiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.QUIT"}]},{"type":"text","value":" olevat tapahtumat. Tällainen tapahtuma syntyy, kun käyttäjä sulkee ohjelman esimerkiksi painamalla ikkunan ylänurkassa olevaa raksia. Tämän tapahtuman seurauksena ohjelma sulkee itsensä kutsumalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":"-funktiota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit kokeilla, mitä tapahtuu, jos ohjelma ei käsittele tapahtumaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.QUIT"}]},{"type":"text","value":". Tällöin raksin painamisen ei pitäisi vaikuttaa ohjelman toimintaan, mikä on hämmentävää käyttäjälle. Ohjelman voi kuitenkin tässäkin tapauksessa sulkea väkisin komentoriviltä painamalla Control+C."}]},{"type":"element","tagName":"h2","properties":{"id":"kuva-ohjelmaan","style":"position:relative;"},"children":[{"type":"text","value":"Kuva ohjelmaan"},{"type":"element","tagName":"a","properties":{"href":"#kuva-ohjelmaan","ariaLabel":"kuva ohjelmaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan seuraavaksi ohjelmaa niin, että se näyttää ikkunassa kuvan. Tämä onnistuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodi käyttää kuvaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]},{"type":"text","value":", jossa on robotin kuva:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/c90257b456f195bb0d06e65ddbbc1728/a1812/robo.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 172%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAiCAYAAABfqvm9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEyklEQVRIx7WWX0hbdxzFTzRWqNTODLWpsWoRfbGQFtMqtIUykGJsuxWq0dptqTWWVTtFR11u/m0VX/YwN6jazUopQx0Iw7AOmzUmG7bGJMJGYd1gjMFehDFSGIPVJX7Hub3tqrONe9gPvtyv53zOSYi54QLrTnl5ebbZbIbJZPIdPnz495ycnMbHHndq9MiQRbpTWFiIPXv2YMeOHV0HDhwQAAdLS0vB4U6NHhmy6c4Wg8HwWklJiWN7bu45AKM7d+5sNZlMHRzu1OiRIcvMRkU67frChQsXxO/3y2d+v8zevi3T09MyOTmpDndq9MiQZWZdx5o/cn0+36/xpaXVyy7XQ1dPT3JqamolGo2qw50aPTJkmXle4fZ33e7Ep8GgfASkfgbkUmenLMRi6nCnRo8MWWaeW+hzuxOfh8OiGI2pcUB8TqdEolF1uFOjR8a3mUKnoiRi0ah8MjOTujYzI7O3bklobk4d7tTokSGbvtDpTMRiMYkvLqa+jceFwcVIRB3u1OiRIZu2UFGURCQSkQ9HRlJDw8O8ytDoqDrq/khLkVE28w69Hk9iNhSSlszM1HlAXuXnqA13avTIkE1XmOt1u3/7IhgUG/CXA0ieBlIeQDjcqdEjQzbt18bj8SSXlpbk6vi4jFy7JmM3bsjo9eurHO7U6JEh+6x3+OT+P3LkSKCrqyvS0919p6+396vzHR3Lb/X1CYc7NXpkyDKzpsHv92N5eVl9BRHJAJCl3Z9bRXhn4ePW1lbhcNe0rRqTpWV07GAXxsbGUFdXp9Pp1HecdeLEiV8GBgb+UBTlgdvtfuB0Oh+63W7haPsDemTIMsMsO9iFioqKzKqqKpSUlPRXVlb+6PV6k/fv35eFhQWJRqMS5/cuHl/VRtXokSHLDLPsYBeOHz+ut9ls2L9//3X+eiiKsrK4uJgKBAKrwWAwFQwGeRVtVI0eGbLMMMsOdsFqteobGxtRXV090t7eLi6Xa4V3AcPhcFg2GnpkyDLDLDvYhYaGBrXQYrFcdTgcTxfKcwrlcSEzzLKDXf9DodWqbzp1Cpbq6qsd587950JmmGUHu3D05En9yTNnsK+2dtTe3a1C8U18hnGtkBlm2cEuHC0u1r9SVoZ9hYVjr5eWinLp0p/RWCz5ZSCQ0v6zqbm5uSRH+68LPTJkmWGWHeyCHdC/CeCljIz3LwPyTn+/fHPvnty9c4ffOfVnan5+Xh3u1OiRIcsMs+xgF5CfDxw7BlitvJWKDh46FHI4HBFbc/NyW1ubNDc3/2S32+9yuFOjR4YsM2qWHex6coxG9cJ7NRwKoaio6AOGAZyemJgAhzs1emS0+/pJds0pKChQfyAGBwe38KnAYrFcuXjxohiNxrP/vKbxLDV6ZMgyo2U3PvX19fqmpibs3bv3Smdnp+Tl5dlNJhOfdcCdGj0yZJ/9DAKATz61NTVZbe3tMJvNw7xP1xdSo0eGbPaznkWePhUWC2oslqHenh4xGAz2XcXF4HCnRo/M5k52dhk7t+3ePdFgs0nOtm32FwsKwOFOjR4Zjd34vA3ovQDqgIl5QL4H5CYgu4A3qgBwuN/UPDJkvVr2X4WNQGYLgH1A/3vAd8PA1x6d7od84OVdj8rAnRo9MmRbtOzjor8BpWPSyH+RAgAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/c90257b456f195bb0d06e65ddbbc1728/6ac13/robo.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/c90257b456f195bb0d06e65ddbbc1728/a1812/robo.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/c90257b456f195bb0d06e65ddbbc1728/a1812/robo.png","alt":"robo","title":"robo","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]},{"type":"text","value":" tulee olla samassa hakemistossa ohjelman lähdekoodin kanssa, jotta ohjelma löytää kuvan. Tämän viikon tehtävissä robotin kuva on valmiina tehtäväpohjissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ikkuna näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/0f7db0536914ccd471841bcee4201632/pygame_kuva.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.image.load"}]},{"type":"text","value":" lataa muuttujaan tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]},{"type":"text","value":" olevan kuvan. Tämän jälkeen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"blit"}]},{"type":"text","value":" piirtää kuvan ikkunaan kohtaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(100, 50)"}]},{"type":"text","value":" ja sitten funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.flip"}]},{"type":"text","value":" päivittää ikkunan sisällön. Kohta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(100, 50)"}]},{"type":"text","value":" tarkoittaa, että kuvan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"vasen yläkulma"}]},{"type":"text","value":" on kyseisessä kohdassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että Pygamessa ja yleensä muutenkin ohjelmoinnissa koordinaatisto on rakennettu niin, että piirtoalueen vasen yläkulma on kohdassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(0, 0)"}]},{"type":"text","value":" ja koordinaatit kasvavat x-suunnassa oikealle ja y-suunnassa alaspäin. Tässä tapauksessa ikkunan oikean alakulman koordinaatit ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(640, 480)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuvan voi piirtää moneenkin kohtaan ikkunassa. Esimerkiksi seuraava koodi piirtää kuvan kolmeen eri kohtaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"300"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällöin ikkuna näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/a7807afa43ad1cc7d9686968e6838712/pygame_kuva2.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi puolestaan piirtää kuvan ikkunan keskelle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkorkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"320"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"240"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ikkuna näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/498f521486feca567f74dd51c44e371b/pygame_kuva3.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"get_width"}]},{"type":"text","value":" antaa kuvan leveyden ja vastaavasti metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"get_height"}]},{"type":"text","value":" antaa kuvan korkeuden. Ikkunan keskikohta on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(320, 240)"}]},{"type":"text","value":", joten tämän avulla saadaan laskettua sopiva kohta kuvan vasemmalle yläkulmalle niin, että kuva sijoittuu ikkunan keskelle."}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Pygame-tehtävät"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osan tehtävissä ei ole automaattisia testejä, vaan testi antaa pisteet automaattisesti, kun lähetät ratkaisun palvelimelle. Lähetä ratkaisu vasta sitten, kun se on valmis ja vastaa tehtävänannon vaatimuksia. Vaikka tehtävissä ei ole testejä, kurssin henkilökunta näkee lähetetyt ratkaisut. Myös keskeneräisen ratkaisun lähettäminen TMC Pasteen antaa pisteet automaattisesti, joten sitä ei tule käyttää kysyessä apua tämän osan tehtäviin. Voit kurssin tukikanavilla apua kysyessä käyttää "},{"type":"element","tagName":"a","properties":{"href":"https://pastebin.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pastebin.com"}]},{"type":"text","value":"ia tai jotain muuta internetin pastebin-palvelua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lähetät palvelimelle ratkaisun, joka selkeästi ei vastaa tehtävänantoa, voit menettää pisteet tämän osan tehtävistä."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neljä robottia","tmcname":"osa13-01_nelja_robottia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää robotin jokaiseen ikkunan neljään nurkkaan. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/8ba6d635c4ceb93c2b86711f83589b3a/pygame_nelja.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotit rivissä","tmcname":"osa13-02_robotit_rivissa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää kymmenen robottia riviin. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/8dc589e5970721e2bf8bfe2bd22fa6cf/pygame_rivi.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sata robottia","tmcname":"osa13-03_sata_robottia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää sata robottia: kymmenen riviä ja joka rivissä kymmenen robottia. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/7012bfc1e6ade044e03c53f07f35e7a6/pygame_sata.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Satunnaiset robotit","tmcname":"osa13-04_satunnaiset_robotit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tuhat"}]},{"type":"text","value":" robottia satunnaisiin paikkoihin. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/61a30808255873a3e24df2fc559d9367/pygame_tuhat.gif"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Olet asentanut Pygame-kirjaston koneellesi
    • \n
    • Osaat luoda ikkunan ja sulkea ohjelman
    • \n
    • Osaat piirtää ikkunaan tiedostossa olevan kuvan
    • \n

    Kurssin kahdella viimeisellä viikolla tutustumme Pygame-kirjastoon, joka on peliohjelmointiin tarkoitettu Python-kirjasto. Pygamen avulla pystyy piirtämään grafiikkaa, käsittelemään näppäimistön ja hiiren tapahtumia ja tekemään muuta peleissä tarvittavaa.

    Pygamen asentaminen

    Linux

    Avaa komentorivi ja kirjoita pip3 install pygame.

    \n \n \n \n \n \n \"13\n \n \n

    Kirjoita auenneeeseen komentokehoteikkunaan seuraava komentosarja ja paina enter:

    pip3 install pygame

    \n \n \n \n \n \n \"13\n \n \n

    Tämä asentaa Pygame-paketin koneellesi.

    Ensimmäinen ohjelma

    Tässä on yksinkertainen Pygamea käyttävä testiohjelma:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nnaytto.fill((0,0,0))\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Kun ohjelma käynnistetään, se näyttää käyttäjälle seuraavanlaisen ikkunan:

    Ohjelmassa ei ole kuitenkaan vielä muuta sisältöä kuin ikkunan näyttäminen. Ohjelman suoritus jatkuu niin kauan, kunnes käyttäjä sulkee ikkunan.

    Katsotaan seuraavaksi tarkemmin, miten ohjelma on rakentunut. Ohjelman alussa rivi import pygame ottaa mukaan Pygame-kirjaston. Kirjaston käyttäminen alkaa kutsumalla funktiota pygame.init, minkä jälkeen ohjelma luo ikkunan funktiolla pygame.display.set_mode.

    pygame.init()\nnaytto = pygame.display.set_mode((640, 480))

    Muuttujan naytto kautta ikkunaan voidaan viitata myöhemmin esimerkiksi grafiikan piirtämistä varten. Parametri (640, 480) tarkoittaa, että tässä ohjelmassa ikkunan leveys on 640 pikseliä ja korkeus on 480 pikseliä.

    Seuraavaksi ohjelmassa on kaksi komentoa:

    naytto.fill((0, 0, 0))\npygame.display.flip()

    Metodi fill täyttää näytön annetulla värillä. Tässä tapauksessa värinä on (0, 0, 0), mikä tarkoittaa mustaa. Sitten metodi pygame.display.flip päivittää näytön sisällön.

    Tämän jälkeen alkaa ohjelman pääsilmukka:

    while True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Pääsilmukka käsittelee tapahtumat, jotka käyttöjärjestelmä välittää ohjelmalle. Joka kierroksella funktio pygame.event.get antaa listan tapahtumista, jotka ovat syntyneet funktion edellisen kutsukerran jälkeen.

    Tässä tapauksessa ohjelma käsittelee vain tyyppiä pygame.QUIT olevat tapahtumat. Tällainen tapahtuma syntyy, kun käyttäjä sulkee ohjelman esimerkiksi painamalla ikkunan ylänurkassa olevaa raksia. Tämän tapahtuman seurauksena ohjelma sulkee itsensä kutsumalla exit-funktiota.

    Voit kokeilla, mitä tapahtuu, jos ohjelma ei käsittele tapahtumaa pygame.QUIT. Tällöin raksin painamisen ei pitäisi vaikuttaa ohjelman toimintaan, mikä on hämmentävää käyttäjälle. Ohjelman voi kuitenkin tässäkin tapauksessa sulkea väkisin komentoriviltä painamalla Control+C.

    Kuva ohjelmaan

    Laajennetaan seuraavaksi ohjelmaa niin, että se näyttää ikkunassa kuvan. Tämä onnistuu seuraavasti:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nnaytto.fill((0, 0, 0))\nnaytto.blit(robo, (100, 50))\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Koodi käyttää kuvaa robo.png, jossa on robotin kuva:

    \n \n

    Tämän osan tehtävissä ei ole automaattisia testejä, vaan testi antaa pisteet automaattisesti, kun lähetät ratkaisun palvelimelle. Lähetä ratkaisu vasta sitten, kun se on valmis ja vastaa tehtävänannon vaatimuksia. Vaikka tehtävissä ei ole testejä, kurssin henkilökunta näkee lähetetyt ratkaisut. Myös keskeneräisen ratkaisun lähettäminen TMC Pasteen antaa pisteet automaattisesti, joten sitä ei tule käyttää kysyessä apua tämän osan tehtäviin. Voit kurssin tukikanavilla apua kysyessä käyttää Pastebin.comia tai jotain muuta internetin pastebin-palvelua.

    Jos lähetät palvelimelle ratkaisun, joka selkeästi ei vastaa tehtävänantoa, voit menettää pisteet tämän osan tehtävistä.

    Tee ohjelma, joka piirtää robotin jokaiseen ikkunan neljään nurkkaan. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, joka piirtää kymmenen robottia riviin. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, joka piirtää sata robottia: kymmenen riviä ja joka rivissä kymmenen robottia. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, joka piirtää tuhat robottia satunnaisiin paikkoihin. Ohjelman suorituksen tulee näyttää tältä:

    ","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/1-pygame-kayttoon.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Olet asentanut Pygame-kirjaston koneellesi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda ikkunan ja sulkea ohjelman"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat piirtää ikkunaan tiedostossa olevan kuvan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin kahdella viimeisellä viikolla tutustumme Pygame-kirjastoon, joka on peliohjelmointiin tarkoitettu Python-kirjasto. Pygamen avulla pystyy piirtämään grafiikkaa, käsittelemään näppäimistön ja hiiren tapahtumia ja tekemään muuta peleissä tarvittavaa."}]},{"type":"element","tagName":"h2","properties":{"id":"pygamen-asentaminen","style":"position:relative;"},"children":[{"type":"text","value":"Pygamen asentaminen"},{"type":"element","tagName":"a","properties":{"href":"#pygamen-asentaminen","ariaLabel":"pygamen asentaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"h3","properties":{"id":"linux","style":"position:relative;"},"children":[{"type":"text","value":"Linux"},{"type":"element","tagName":"a","properties":{"href":"#linux","ariaLabel":"linux permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Avaa komentorivi ja kirjoita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pip3 install pygame"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 399px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/a92634cb53af0aa1734e9ca12ca79562/a307d/pygame_linux.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 60.434782608695656%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAyElEQVQoz+2Oy26CYBSE/5XXxssTKAWqUQSixmorKhEEfgQv7/8un8FqorELFm5MXHyZyZnJ5IhEBgSeyy4Oz5rGIZG/JokC9lvJerVgn0gOaYwMPOLQ57jbMp994/w8IrzuL5G5YtNzWKoTpOkSGkuc1oh07HOcRrj6FLOmYje/sBr6n9a1fxFWVWNY62B/6FgVDbuqk93Mssqo3j1nme8X2hhF5cKtv0cYJYV+VigpD2T3azYof+ZC5C3mHc09+PQP34MvPHgC7r1OntPJWSAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a92634cb53af0aa1734e9ca12ca79562/a0b58/pygame_linux.webp 230w","/static/a92634cb53af0aa1734e9ca12ca79562/66086/pygame_linux.webp 399w"],"sizes":"(max-width: 399px) 100vw, 399px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a92634cb53af0aa1734e9ca12ca79562/81c8e/pygame_linux.png 230w","/static/a92634cb53af0aa1734e9ca12ca79562/a307d/pygame_linux.png 399w"],"sizes":"(max-width: 399px) 100vw, 399px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/a92634cb53af0aa1734e9ca12ca79562/a307d/pygame_linux.png","alt":"pygame linux","title":"pygame linux","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h3","properties":{"id":"windows","style":"position:relative;"},"children":[{"type":"text","value":"Windows"},{"type":"element","tagName":"a","properties":{"href":"#windows","ariaLabel":"windows permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Avaa Windowsin terminaali napauttamalla vasemman alakulman Windows-painiketta. Kirjoita aukeavaan ikkunaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cmd"}]},{"type":"text","value":" ja paina enter:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 392px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/76954afbb36ac5953d205b7cdab98ff6/0acb4/13_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 173.47826086956525%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAjCAIAAAAblL1PAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADp0lEQVRIx+2VT0gjVxzHp0g1kwlqNEmJqUTblB6EPewaEKGlINKlhW5Peyhb2GNPwkIPhUJvPRVakP6hQr0UlvoHm6yaSfaSVTdqEpdQt8ZsTGidxJ3JG2cmk0ky+fPevDKZVUrQrnruly+PuXze7/d+v/d7Q9hsNovFEgwGYUu1Wq3RaGiaJsuypmn4P0W43e6BgYHl5eVMJoMQKhQKsixDCBOJBITwPKxeryOEiJ6ens7OziBNY4xVVW02GkjTjJjay0QMDg66XK7FhYVcLndwcPB0d1dRFIPELxPhdDrtNtt3vz7YFfBGVt7IlsJpMZyWwmnxUVoKPxPXs0rk7+qZ1tOmKOqLb2fffW/i3tc/LCT4n0N/zDx8OvPwz9lw6qdA4n40v5yq+PZK/qTSZsJqtVos1Jff//bVjO/HQOJ+7PncE/AgVfUly/79si9Z9iWV3/dKZ1qHzaRpdiHAIfzsuL73vLLHVfdB7dQpUD/PLdhspldX/soe8IXCBUv1omBWq5UkyUBAb5VcKgHAHzJMVVUxxlBDSNNOrWm4zTpsMpGhUBBjLAgCy7KpVKpcLl8kBaNglvn5+XQ6I4kSAEBRlGKxCAAoFAo8zx8fH7Msq7ZyadtOhymKWlxcPDo6KhaLHMcBAGRZFgQBtCSKIsdxjUbj3Mhzc3PJ5L4sy7lcDgDAMAzLshzHGVvwPM+yLMMw+Xz+3xf+ReSlpSUAQLlcBgBIkiQIgrEqiiJJUrFYNHIRBAEh1F7t1dVVURQzmUw+n89mszzPX7RgJEnSNN1sNhVFqVQqqqrWarXmidomycAghPpUnfQ5YAwzwzDValU8kSAIZ8avVCr6PLf6bAqFQsZ++DL6H74s3NfXR5LkFWHj6b0i7Ha7nU4n3Xq3Lw17PB632x0IBK4C9/b2Xv3MY2NjXq/X7/efXvdLwA6Hg6KolZUVjHGtVoMQ1i8svVUGXK/XeZ4/PDxUVRUhpGGMEEIQYg1BCJGm6StCuPUBNQQRJCiK6ujomJ6ejsVi4XCYpulIJPJkJ76x9mh7OxqJxdY2t3biO4/XH29H41ubW+vrkXg8Hl3bjG1FCa/XOzk5SRD677Krq2t4+I3B113Eq+bR21P9Dvv4a92fjnsIgrj74biru+v66Jt3PnnnFYKw3r1mfqufGBoaGhkZMZlMDofDbDbb7HZ7v9Uy4Jn65pebH30wcX3is1t3eoff/vjzqWs3bozevHV76l5vn936vqd7yP4P6JyrnQ25/+oAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/76954afbb36ac5953d205b7cdab98ff6/a0b58/13_1_1.webp 230w","/static/76954afbb36ac5953d205b7cdab98ff6/86099/13_1_1.webp 392w"],"sizes":"(max-width: 392px) 100vw, 392px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/76954afbb36ac5953d205b7cdab98ff6/81c8e/13_1_1.png 230w","/static/76954afbb36ac5953d205b7cdab98ff6/0acb4/13_1_1.png 392w"],"sizes":"(max-width: 392px) 100vw, 392px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/76954afbb36ac5953d205b7cdab98ff6/0acb4/13_1_1.png","alt":"13 1 1","title":"13 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita auenneeeseen komentokehoteikkunaan seuraava komentosarja ja paina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"enter"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pip3 install pygame"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä asentaa Pygame-paketin koneellesi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asennus voi vaatia järjestelmänvalvojan oikeuksia. Jos ylläoleva ei toimi, voit yrittää ajaa terminaalin järjestelmänvalvojana (valitse Windows-valikko, paina hiiren kakkospainiketta CMD-valinnan päällä ja valitse \"Run as administrator\" tai \"Aja järjestelmänvalvojana\")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että asennus vaatii että olet asennusvaiheessa ohjeiden mukaisesti valinnut kohdan \"Add Python 3.XX to path\", katso "},{"type":"element","tagName":"a","properties":{"href":"https://www.mooc.fi/fi/installation/vscode#python3","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ohjeet"}]}]},{"type":"element","tagName":"h3","properties":{"id":"mac","style":"position:relative;"},"children":[{"type":"text","value":"Mac"},{"type":"element","tagName":"a","properties":{"href":"#mac","ariaLabel":"mac permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Avaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Terminaali"}]},{"type":"text","value":", esim. painamalla oikean yläkulman suurennuslasi-symbolia:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 746px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/77ceacb61dfaf80c7c442a4225b65e87/62de4/13-1-2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 24.347826086956523%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAABYlAAAWJQFJUiTwAAABGUlEQVQY02OYs2Rje9/sSTOWzlmycdKsZVPmrJg6Z+WC5Zt7py7s6J/dO2nehDnLW6bOb+mftWD55oUrN/VPXVNRPW3SzEVzlqxn0Lf207Hw1rPyhTF89Kx99W38tM08VE3dZE2c7S18z7gX99gnqll7G9n6alt6q5u561l56lv7MLCIaLGIaLGKaLMIQ0kWYU1GIQ1GYU1JMf1QKbs6OY9OeW8DcVMGQTUWIQ1mYQ1WEU0mIQ1mQXUGPnkzEJIzhSBeOVMeWRNZOQtHRYdAZRdzBTt+OVMGaQMOWWOQrKwJCMlASGMGfgVzfjlTXhkjXlljXhlDHil9PmkDNRlTKRkTNlljVjkTPnkzIXlzPnlzXpDRUJvAbFMAjAFKS35RLdoAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/77ceacb61dfaf80c7c442a4225b65e87/a0b58/13-1-2.webp 230w","/static/77ceacb61dfaf80c7c442a4225b65e87/bc10c/13-1-2.webp 460w","/static/77ceacb61dfaf80c7c442a4225b65e87/f7ebd/13-1-2.webp 746w"],"sizes":"(max-width: 746px) 100vw, 746px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/77ceacb61dfaf80c7c442a4225b65e87/81c8e/13-1-2.png 230w","/static/77ceacb61dfaf80c7c442a4225b65e87/08a84/13-1-2.png 460w","/static/77ceacb61dfaf80c7c442a4225b65e87/62de4/13-1-2.png 746w"],"sizes":"(max-width: 746px) 100vw, 746px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/77ceacb61dfaf80c7c442a4225b65e87/62de4/13-1-2.png","alt":"13 1 2","title":"13 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita aukeavaan teksikenttään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"terminal"}]},{"type":"text","value":" ja paina enter:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/a310ec5ccf9438989514ad8da107dcc3/47218/13-1-3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 66.95652173913044%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAABYlAAAWJQFJUiTwAAACa0lEQVQozy2STXLTQBCFdYFwgzh3IlmFDeQGkAQ2LKGo4hBAQhWp7FglQMohln8iO7Yly7JkzWime370M5LsACeg5KTq23W97ur3njX3poNup2t3Bv0+53z9+aL63ilGcx1zlRZK50pnSmdCapQKUQHKvCi/nZ0PnKFlDyZt22nbo+vu3cQnvhP4HvEXHEArnUn1qASUHAQHAahUmg+c0cwPrIOP3dcn+PbcvDw1h6fF8Vn55swcfjVOkJs8lypXOi9MvVr/Xf/5V5Q1CiVUWlYrqVLr99XNz+vBzdB3PDKeM2/BZyF4IeeodZoJmZqy/vTl5PmLg929vXfvPxSm0UuVAUirb/fa1+3e7W0UkygmhFCaJJRSFFKoFIQq6/XR8fHOTuvJ1tbT3T1TrQGl0hmgsJxhMBxPnYnrBVFMgaFuAM1AMZCUYW7ql6+Otre3W63W/v6zLDeMI0rNAK1Ob2L3h+2b3tW17frhkkAYs3DJ4gQJEyRBDspx7i4vf11c/Oh0eknCCWEJw0UYW+4s6N+OnOHE88NFRBdLuohoEBHKxcNxAIkgXW8+Hk8TyilhyyWlCUw93/LcmTube37QpJLmchOPUBnKdIMWQgMIShkhjDHgXHCOHCRNuEVRzfxgNJ66ng/YxCBUo0GhUahHUAmppUql1KIhlSprfg4TGS1JGMVhFLPGx2bQ3NyIYQMKHUZkPPFcz3+ojc7yxu04pjFJHiCUMY4gFEeVbKymDBgXwWLpDO96fcfu9jmI5i+ZMY6WTvMGnWmdZXluTFlWa1OtTFkXpipMWZgKmmKiaJaKsqrr1X29ui/L+j/LRoPjTcXpPgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a310ec5ccf9438989514ad8da107dcc3/a0b58/13-1-3.webp 230w","/static/a310ec5ccf9438989514ad8da107dcc3/bc10c/13-1-3.webp 460w","/static/a310ec5ccf9438989514ad8da107dcc3/966d8/13-1-3.webp 920w","/static/a310ec5ccf9438989514ad8da107dcc3/3dddb/13-1-3.webp 1344w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a310ec5ccf9438989514ad8da107dcc3/81c8e/13-1-3.png 230w","/static/a310ec5ccf9438989514ad8da107dcc3/08a84/13-1-3.png 460w","/static/a310ec5ccf9438989514ad8da107dcc3/c0255/13-1-3.png 920w","/static/a310ec5ccf9438989514ad8da107dcc3/47218/13-1-3.png 1344w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/a310ec5ccf9438989514ad8da107dcc3/c0255/13-1-3.png","alt":"13 1 3","title":"13 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita auenneeeseen komentokehoteikkunaan seuraava komentosarja ja paina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"enter"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pip3 install pygame"}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/cc8d7c319bc7baf0232b2d92350f9631/d56e1/13-1-4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 28.695652173913043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAiElEQVQY06XNwQoCIRSFYd//ZXoJ4dpUIpqEYRZii1y4cRai4xgMGEEboW954PAjcd6BYXd1OR0PhBDGGABgjAkhADBNe8651lpKKYSglHLOHx2yz9ftqp1z1lpjjFIqhDDPc4zRe19Kaa2tm9atHVpqXTa11pRSzrkNQ7/TJ/JdGz3/VR4/vwF1E1iIv4njxgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cc8d7c319bc7baf0232b2d92350f9631/a0b58/13-1-4.webp 230w","/static/cc8d7c319bc7baf0232b2d92350f9631/bc10c/13-1-4.webp 460w","/static/cc8d7c319bc7baf0232b2d92350f9631/966d8/13-1-4.webp 920w","/static/cc8d7c319bc7baf0232b2d92350f9631/bbe5b/13-1-4.webp 1130w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cc8d7c319bc7baf0232b2d92350f9631/81c8e/13-1-4.png 230w","/static/cc8d7c319bc7baf0232b2d92350f9631/08a84/13-1-4.png 460w","/static/cc8d7c319bc7baf0232b2d92350f9631/c0255/13-1-4.png 920w","/static/cc8d7c319bc7baf0232b2d92350f9631/d56e1/13-1-4.png 1130w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/cc8d7c319bc7baf0232b2d92350f9631/c0255/13-1-4.png","alt":"13 1 4","title":"13 1 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä asentaa Pygame-paketin koneellesi."}]},{"type":"element","tagName":"h2","properties":{"id":"ensimmainen-ohjelma","style":"position:relative;"},"children":[{"type":"text","value":"Ensimmäinen ohjelma"},{"type":"element","tagName":"a","properties":{"href":"#ensimmainen-ohjelma","ariaLabel":"ensimmainen ohjelma permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on yksinkertainen Pygamea käyttävä testiohjelma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma käynnistetään, se näyttää käyttäjälle seuraavanlaisen ikkunan:"}]},{"type":"element","tagName":"img","properties":{"src":"/d11704399cba1d2075b1135cef373b65/pygame_eka.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa ei ole kuitenkaan vielä muuta sisältöä kuin ikkunan näyttäminen. Ohjelman suoritus jatkuu niin kauan, kunnes käyttäjä sulkee ikkunan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan seuraavaksi tarkemmin, miten ohjelma on rakentunut. Ohjelman alussa rivi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import pygame"}]},{"type":"text","value":" ottaa mukaan Pygame-kirjaston. Kirjaston käyttäminen alkaa kutsumalla funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.init"}]},{"type":"text","value":", minkä jälkeen ohjelma luo ikkunan funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.set_mode"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"naytto"}]},{"type":"text","value":" kautta ikkunaan voidaan viitata myöhemmin esimerkiksi grafiikan piirtämistä varten. Parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(640, 480)"}]},{"type":"text","value":" tarkoittaa, että tässä ohjelmassa ikkunan leveys on 640 pikseliä ja korkeus on 480 pikseliä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavaksi ohjelmassa on kaksi komentoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fill"}]},{"type":"text","value":" täyttää näytön annetulla värillä. Tässä tapauksessa värinä on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(0, 0, 0)"}]},{"type":"text","value":", mikä tarkoittaa mustaa. Sitten metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.flip"}]},{"type":"text","value":" päivittää näytön sisällön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen alkaa ohjelman "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pääsilmukka"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääsilmukka käsittelee tapahtumat, jotka käyttöjärjestelmä välittää ohjelmalle. Joka kierroksella funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.event.get"}]},{"type":"text","value":" antaa listan tapahtumista, jotka ovat syntyneet funktion edellisen kutsukerran jälkeen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa ohjelma käsittelee vain tyyppiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.QUIT"}]},{"type":"text","value":" olevat tapahtumat. Tällainen tapahtuma syntyy, kun käyttäjä sulkee ohjelman esimerkiksi painamalla ikkunan ylänurkassa olevaa raksia. Tämän tapahtuman seurauksena ohjelma sulkee itsensä kutsumalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":"-funktiota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit kokeilla, mitä tapahtuu, jos ohjelma ei käsittele tapahtumaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.QUIT"}]},{"type":"text","value":". Tällöin raksin painamisen ei pitäisi vaikuttaa ohjelman toimintaan, mikä on hämmentävää käyttäjälle. Ohjelman voi kuitenkin tässäkin tapauksessa sulkea väkisin komentoriviltä painamalla Control+C."}]},{"type":"element","tagName":"h2","properties":{"id":"kuva-ohjelmaan","style":"position:relative;"},"children":[{"type":"text","value":"Kuva ohjelmaan"},{"type":"element","tagName":"a","properties":{"href":"#kuva-ohjelmaan","ariaLabel":"kuva ohjelmaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan seuraavaksi ohjelmaa niin, että se näyttää ikkunassa kuvan. Tämä onnistuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodi käyttää kuvaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]},{"type":"text","value":", jossa on robotin kuva:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/c90257b456f195bb0d06e65ddbbc1728/a1812/robo.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 172%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAiCAYAAABfqvm9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEyklEQVRIx7WWX0hbdxzFTzRWqNTODLWpsWoRfbGQFtMqtIUykGJsuxWq0dptqTWWVTtFR11u/m0VX/YwN6jazUopQx0Iw7AOmzUmG7bGJMJGYd1gjMFehDFSGIPVJX7Hub3tqrONe9gPvtyv53zOSYi54QLrTnl5ebbZbIbJZPIdPnz495ycnMbHHndq9MiQRbpTWFiIPXv2YMeOHV0HDhwQAAdLS0vB4U6NHhmy6c4Wg8HwWklJiWN7bu45AKM7d+5sNZlMHRzu1OiRIcvMRkU67frChQsXxO/3y2d+v8zevi3T09MyOTmpDndq9MiQZWZdx5o/cn0+36/xpaXVyy7XQ1dPT3JqamolGo2qw50aPTJkmXle4fZ33e7Ep8GgfASkfgbkUmenLMRi6nCnRo8MWWaeW+hzuxOfh8OiGI2pcUB8TqdEolF1uFOjR8a3mUKnoiRi0ah8MjOTujYzI7O3bklobk4d7tTokSGbvtDpTMRiMYkvLqa+jceFwcVIRB3u1OiRIZu2UFGURCQSkQ9HRlJDw8O8ytDoqDrq/khLkVE28w69Hk9iNhSSlszM1HlAXuXnqA13avTIkE1XmOt1u3/7IhgUG/CXA0ieBlIeQDjcqdEjQzbt18bj8SSXlpbk6vi4jFy7JmM3bsjo9eurHO7U6JEh+6x3+OT+P3LkSKCrqyvS0919p6+396vzHR3Lb/X1CYc7NXpkyDKzpsHv92N5eVl9BRHJAJCl3Z9bRXhn4ePW1lbhcNe0rRqTpWV07GAXxsbGUFdXp9Pp1HecdeLEiV8GBgb+UBTlgdvtfuB0Oh+63W7haPsDemTIMsMsO9iFioqKzKqqKpSUlPRXVlb+6PV6k/fv35eFhQWJRqMS5/cuHl/VRtXokSHLDLPsYBeOHz+ut9ls2L9//3X+eiiKsrK4uJgKBAKrwWAwFQwGeRVtVI0eGbLMMMsOdsFqteobGxtRXV090t7eLi6Xa4V3AcPhcFg2GnpkyDLDLDvYhYaGBrXQYrFcdTgcTxfKcwrlcSEzzLKDXf9DodWqbzp1Cpbq6qsd587950JmmGUHu3D05En9yTNnsK+2dtTe3a1C8U18hnGtkBlm2cEuHC0u1r9SVoZ9hYVjr5eWinLp0p/RWCz5ZSCQ0v6zqbm5uSRH+68LPTJkmWGWHeyCHdC/CeCljIz3LwPyTn+/fHPvnty9c4ffOfVnan5+Xh3u1OiRIcsMs+xgF5CfDxw7BlitvJWKDh46FHI4HBFbc/NyW1ubNDc3/2S32+9yuFOjR4YsM2qWHex6coxG9cJ7NRwKoaio6AOGAZyemJgAhzs1emS0+/pJds0pKChQfyAGBwe38KnAYrFcuXjxohiNxrP/vKbxLDV6ZMgyo2U3PvX19fqmpibs3bv3Smdnp+Tl5dlNJhOfdcCdGj0yZJ/9DAKATz61NTVZbe3tMJvNw7xP1xdSo0eGbPaznkWePhUWC2oslqHenh4xGAz2XcXF4HCnRo/M5k52dhk7t+3ePdFgs0nOtm32FwsKwOFOjR4Zjd34vA3ovQDqgIl5QL4H5CYgu4A3qgBwuN/UPDJkvVr2X4WNQGYLgH1A/3vAd8PA1x6d7od84OVdj8rAnRo9MmRbtOzjor8BpWPSyH+RAgAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/c90257b456f195bb0d06e65ddbbc1728/6ac13/robo.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/c90257b456f195bb0d06e65ddbbc1728/a1812/robo.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/c90257b456f195bb0d06e65ddbbc1728/a1812/robo.png","alt":"robo","title":"robo","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]},{"type":"text","value":" tulee olla samassa hakemistossa ohjelman lähdekoodin kanssa, jotta ohjelma löytää kuvan. Tämän viikon tehtävissä robotin kuva on valmiina tehtäväpohjissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ikkuna näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/0f7db0536914ccd471841bcee4201632/pygame_kuva.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.image.load"}]},{"type":"text","value":" lataa muuttujaan tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]},{"type":"text","value":" olevan kuvan. Tämän jälkeen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"blit"}]},{"type":"text","value":" piirtää kuvan ikkunaan kohtaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(100, 50)"}]},{"type":"text","value":" ja sitten funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.flip"}]},{"type":"text","value":" päivittää ikkunan sisällön. Kohta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(100, 50)"}]},{"type":"text","value":" tarkoittaa, että kuvan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"vasen yläkulma"}]},{"type":"text","value":" on kyseisessä kohdassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että Pygamessa ja yleensä muutenkin ohjelmoinnissa koordinaatisto on rakennettu niin, että piirtoalueen vasen yläkulma on kohdassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(0, 0)"}]},{"type":"text","value":" ja koordinaatit kasvavat x-suunnassa oikealle ja y-suunnassa alaspäin. Tässä tapauksessa ikkunan oikean alakulman koordinaatit ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(640, 480)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuvan voi piirtää moneenkin kohtaan ikkunassa. Esimerkiksi seuraava koodi piirtää kuvan kolmeen eri kohtaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"300"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällöin ikkuna näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/a7807afa43ad1cc7d9686968e6838712/pygame_kuva2.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi puolestaan piirtää kuvan ikkunan keskelle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkorkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"320"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"240"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ikkuna näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/498f521486feca567f74dd51c44e371b/pygame_kuva3.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"get_width"}]},{"type":"text","value":" antaa kuvan leveyden ja vastaavasti metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"get_height"}]},{"type":"text","value":" antaa kuvan korkeuden. Ikkunan keskikohta on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(320, 240)"}]},{"type":"text","value":", joten tämän avulla saadaan laskettua sopiva kohta kuvan vasemmalle yläkulmalle niin, että kuva sijoittuu ikkunan keskelle."}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Pygame-tehtävät"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osan tehtävissä ei ole automaattisia testejä, vaan testi antaa pisteet automaattisesti, kun lähetät ratkaisun palvelimelle. Lähetä ratkaisu vasta sitten, kun se on valmis ja vastaa tehtävänannon vaatimuksia. Vaikka tehtävissä ei ole testejä, kurssin henkilökunta näkee lähetetyt ratkaisut. Myös keskeneräisen ratkaisun lähettäminen TMC Pasteen antaa pisteet automaattisesti, joten sitä ei tule käyttää kysyessä apua tämän osan tehtäviin. Voit kurssin tukikanavilla apua kysyessä käyttää "},{"type":"element","tagName":"a","properties":{"href":"https://pastebin.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pastebin.com"}]},{"type":"text","value":"ia tai jotain muuta internetin pastebin-palvelua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lähetät palvelimelle ratkaisun, joka selkeästi ei vastaa tehtävänantoa, voit menettää pisteet tämän osan tehtävistä."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neljä robottia","tmcname":"osa13-01_nelja_robottia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää robotin jokaiseen ikkunan neljään nurkkaan. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/8ba6d635c4ceb93c2b86711f83589b3a/pygame_nelja.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotit rivissä","tmcname":"osa13-02_robotit_rivissa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää kymmenen robottia riviin. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/8dc589e5970721e2bf8bfe2bd22fa6cf/pygame_rivi.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sata robottia","tmcname":"osa13-03_sata_robottia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää sata robottia: kymmenen riviä ja joka rivissä kymmenen robottia. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/7012bfc1e6ade044e03c53f07f35e7a6/pygame_sata.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Satunnaiset robotit","tmcname":"osa13-04_satunnaiset_robotit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tuhat"}]},{"type":"text","value":" robottia satunnaisiin paikkoihin. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/61a30808255873a3e24df2fc559d9367/pygame_tuhat.gif"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Olet asentanut Pygame-kirjaston koneellesi
    • \n
    • Osaat luoda ikkunan ja sulkea ohjelman
    • \n
    • Osaat piirtää ikkunaan tiedostossa olevan kuvan
    • \n

    Kurssin kahdella viimeisellä viikolla tutustumme Pygame-kirjastoon, joka on peliohjelmointiin tarkoitettu Python-kirjasto. Pygamen avulla pystyy piirtämään grafiikkaa, käsittelemään näppäimistön ja hiiren tapahtumia ja tekemään muuta peleissä tarvittavaa.

    Pygamen asentaminen

    Linux

    Avaa komentorivi ja kirjoita pip3 install pygame.

    \n \n \n \n \n \n \"13\n \n \n

    Kirjoita auenneeeseen komentokehoteikkunaan seuraava komentosarja ja paina enter:

    pip3 install pygame

    \n \n \n \n \n \n \"13\n \n \n

    Tämä asentaa Pygame-paketin koneellesi.

    Ensimmäinen ohjelma

    Tässä on yksinkertainen Pygamea käyttävä testiohjelma:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nnaytto.fill((0,0,0))\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Kun ohjelma käynnistetään, se näyttää käyttäjälle seuraavanlaisen ikkunan:

    Ohjelmassa ei ole kuitenkaan vielä muuta sisältöä kuin ikkunan näyttäminen. Ohjelman suoritus jatkuu niin kauan, kunnes käyttäjä sulkee ikkunan.

    Katsotaan seuraavaksi tarkemmin, miten ohjelma on rakentunut. Ohjelman alussa rivi import pygame ottaa mukaan Pygame-kirjaston. Kirjaston käyttäminen alkaa kutsumalla funktiota pygame.init, minkä jälkeen ohjelma luo ikkunan funktiolla pygame.display.set_mode.

    pygame.init()\nnaytto = pygame.display.set_mode((640, 480))

    Muuttujan naytto kautta ikkunaan voidaan viitata myöhemmin esimerkiksi grafiikan piirtämistä varten. Parametri (640, 480) tarkoittaa, että tässä ohjelmassa ikkunan leveys on 640 pikseliä ja korkeus on 480 pikseliä.

    Seuraavaksi ohjelmassa on kaksi komentoa:

    naytto.fill((0, 0, 0))\npygame.display.flip()

    Metodi fill täyttää näytön annetulla värillä. Tässä tapauksessa värinä on (0, 0, 0), mikä tarkoittaa mustaa. Sitten metodi pygame.display.flip päivittää näytön sisällön.

    Tämän jälkeen alkaa ohjelman pääsilmukka:

    while True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Pääsilmukka käsittelee tapahtumat, jotka käyttöjärjestelmä välittää ohjelmalle. Joka kierroksella funktio pygame.event.get antaa listan tapahtumista, jotka ovat syntyneet funktion edellisen kutsukerran jälkeen.

    Tässä tapauksessa ohjelma käsittelee vain tyyppiä pygame.QUIT olevat tapahtumat. Tällainen tapahtuma syntyy, kun käyttäjä sulkee ohjelman esimerkiksi painamalla ikkunan ylänurkassa olevaa raksia. Tämän tapahtuman seurauksena ohjelma sulkee itsensä kutsumalla exit-funktiota.

    Voit kokeilla, mitä tapahtuu, jos ohjelma ei käsittele tapahtumaa pygame.QUIT. Tällöin raksin painamisen ei pitäisi vaikuttaa ohjelman toimintaan, mikä on hämmentävää käyttäjälle. Ohjelman voi kuitenkin tässäkin tapauksessa sulkea väkisin komentoriviltä painamalla Control+C.

    Kuva ohjelmaan

    Laajennetaan seuraavaksi ohjelmaa niin, että se näyttää ikkunassa kuvan. Tämä onnistuu seuraavasti:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nnaytto.fill((0, 0, 0))\nnaytto.blit(robo, (100, 50))\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Koodi käyttää kuvaa robo.png, jossa on robotin kuva:

    \n \n

    Tämän osan tehtävissä ei ole automaattisia testejä, vaan testi antaa pisteet automaattisesti, kun lähetät ratkaisun palvelimelle. Lähetä ratkaisu vasta sitten, kun se on valmis ja vastaa tehtävänannon vaatimuksia. Vaikka tehtävissä ei ole testejä, kurssin henkilökunta näkee lähetetyt ratkaisut. Myös keskeneräisen ratkaisun lähettäminen TMC Pasteen antaa pisteet automaattisesti, joten sitä ei tule käyttää kysyessä apua tämän osan tehtäviin. Voit kurssin tukikanavilla apua kysyessä käyttää Pastebin.comia tai jotain muuta internetin pastebin-palvelua.

    Jos lähetät palvelimelle ratkaisun, joka selkeästi ei vastaa tehtävänantoa, voit menettää pisteet tämän osan tehtävistä.

    Tee ohjelma, joka piirtää robotin jokaiseen ikkunan neljään nurkkaan. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, joka piirtää kymmenen robottia riviin. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, joka piirtää sata robottia: kymmenen riviä ja joka rivissä kymmenen robottia. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, joka piirtää tuhat robottia satunnaisiin paikkoihin. Ohjelman suorituksen tulee näyttää tältä:

    ","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/1-pygame-kayttoon.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-13/2-animaatio/page-data.json b/page-data/osa-13/2-animaatio/page-data.json index 7c16cb222..d4245d590 100644 --- a/page-data/osa-13/2-animaatio/page-data.json +++ b/page-data/osa-13/2-animaatio/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-13/2-animaatio", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten voi toteuttaa animaation"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tahdistaa ohjelman nopeuden kellon avulla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää trigonometriaa animaatiossa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monissa peleissä on tarvetta saada aikaan liikkuvia hahmoja, joten seuraava luonteva askel on opetella animaation tekeminen. Animaatio syntyy, kun kuva piirretään eri kohtiin näytöllä sopivasti ajastettuna."}]},{"type":"element","tagName":"h2","properties":{"id":"animaation-tekeminen","style":"position:relative;"},"children":[{"type":"text","value":"Animaation tekeminen"},{"type":"element","tagName":"a","properties":{"href":"#animaation-tekeminen","ariaLabel":"animaation tekeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi luo animaation, jossa robotti kulkee vasemmalta oikealle ikkunassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/e0ac2065e7c54214a7440186eb4b9a5b/pygame_animaatio.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan taas tarkemmin, mitä ohjelmassa tapahtuu. Jotta kuva pystyy liikkumaan, ohjelmassa täytyy olla tieto sen paikasta. Tämä onnistuu ottamalla käyttöön kaksi muuttujaa, jotka sisältävät kuvan vasemman yläkulman koordinaatit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän lisäksi määritellään kello, jonka avulla pystyy huolehtimaan siitä, että animaation nopeus on sopiva:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääsilmukan sisällä on koodi, joka piirtää kuvan sen nykyiseen paikkaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensin kutsutaan metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fill"}]},{"type":"text","value":", joka tyhjentää ikkunan mustalla värillä. Väri määritellään RGB-muodossa parametrilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(0, 0, 0)"}]},{"type":"text","value":", mikä tarkoittaa, että värin punainen, vihreä ja sininen komponentti on 0 eli väri on musta. Jokainen komponentti voi olla välillä 0–255. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(255, 255, 255)"}]},{"type":"text","value":" on valkoinen ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(255, 0, 0)"}]},{"type":"text","value":" on punainen. Verkossa on monia työkaluja, joiden avulla voi tutkia RGB-värejä, kuten "},{"type":"element","tagName":"a","properties":{"href":"https://www.rapidtables.com/web/color/RGB_Color.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"RGB Color Codes Chart"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen kuva piirretään tuttuun tapaan metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"blit"}]},{"type":"text","value":" ja lopuksi ikkunan sisältö päivitetään funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.flip"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan päätteeksi muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" arvo kasvaa, minkä ansiosta kuva liikkuu pikselin eteenpäin joka kierroksella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi silmukan lopussa suoritetaan kellon metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" huolehtii siitä, että animaation nopeus on sopiva: se tahdistaa silmukan niin, että silmukka pyritään suorittamaan 60 kertaa sekunnissa. Toisin sanoen kuva liikkuu sekunnissa 60 pikseliä oikealle. Tämä vastaa suunnilleen pelien yhteydessä käytettävää termiä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"FPS"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"frames per second"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" on hyödyllinen, koska sen avulla animaatio toimii periaatteessa yhtä nopeasti jokaisella koneella. Jos silmukassa ei olisi tällaista ajastusta, pelin nopeus riippuisi siitä, kuinka nopeasti pelaajan kone toimii."}]},{"type":"element","tagName":"h2","properties":{"id":"seinaan-tormaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Seinään törmääminen"},{"type":"element","tagName":"a","properties":{"href":"#seinaan-tormaaminen","ariaLabel":"seinaan tormaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Äskeinen animaatio on muuten hieno, mutta kun robotti etenee ikkunan ulkopuolelle, animaatio jatkuu ja robotti katoaa näkyvistä. Tehdään seuraavaksi ohjelmaan parannus, jonka avulla robotin suunta muuttuu, jos se törmää seinään."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nnopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" nopeus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus\n\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää nyt tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/5dac9b07ba4879c217b0b35a817a727f/pygame_animaatio2.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ohjelmassa on uusi muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nopeus"}]},{"type":"text","value":", joka määrittää robotin liikkumistavan. Positiivinen nopeus tarkoittaa liikkumista oikealle ja negatiivinen nopeus tarkoittaa liikkumista vasemmalle. Tässä tapauksessa kun nopeus on 1, robotti liikkuu oikealle, ja kun nopeus on –1, robotti liikkuu vasemmalle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavat rivit huolehtivat, että robotti osaa törmätä seinään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos nopeus on positiivinen eli robotti liikkuu oikealle ja sen oikea reuna menee ikkunan oikean reunan ulkopuolelle, robotin suunta muuttuu käänteiseksi eli se alkaa liikkua vasemmalle. Vastaavasti jos nopeus on negatiivinen ja robotin vasen reuna menee ikkunan vasemman reunan ulkopuolelle, suunta muuttuu taas käänteiseksi eli robotti alkaa liikkua oikealle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän koodin ansiosta robotti jatkaa loputtomasti rataa, jossa se liikkuu ensin koko ikkunan verran oikealle, sitten takaisin vasemmalle, sitten taas oikealle, jne."}]},{"type":"element","tagName":"h2","properties":{"id":"pyoriva-animaatio","style":"position:relative;"},"children":[{"type":"text","value":"Pyörivä animaatio"},{"type":"element","tagName":"a","properties":{"href":"#pyoriva-animaatio","ariaLabel":"pyoriva animaatio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä animaatio, jossa robotti "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pyörii"}]},{"type":"text","value":" ikkunan keskipisteen ympärillä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"320"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"cos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"240"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.01"}]},{"type":"text","value":"\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/ce164a1f214ed31343271340f9157733/pygame_pyorinta.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pyörimisanimaatio saadaan toteutettua trigonometrian avulla: muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kulma"}]},{"type":"text","value":" on radiaaneina robotin sijainnin kulma suhteessa ikkunan keskipisteeseen. Tästä saadaan laskettua sini- ja kosinifunktioilla robotin sijainti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"320"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"cos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"240"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tarkoittaa, että robotin sijainti on ympyrällä, jonka säde on 100. Kosini antaa x-suuntaisen sijainnin ja sini puolestaan y-suuntaisen sijainnin. Jotta animaatio näyttää hyvältä, robotti lisäksi keskitetään niin, että sen keskipiste on ympyrällä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joka kierroksella muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kulma"}]},{"type":"text","value":" arvo kasvaa 0.01:llä. Koska radiaaneissa täysi ympyrä on 2π eli noin 6.28, robotti pyörii suunnilleen kierroksen verran 10 sekunnissa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pystyliike","tmcname":"osa13-05_pystyliike"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa robotti liikkuu vuorotellen ylös ja alas. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/7dfa8e1aefab9c5f0586d8148b819543/pygame_pysty.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Reunan kierto","tmcname":"osa13-06_reunan_kierto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa robotti kiertää ympäri ikkunan reunaa. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/b313e2cd6e747c9b47375655616b0e2d/pygame_kierto.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaksi robottia","tmcname":"osa13-07_kaksi_robottia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa kaksi robottia kulkee näytöllä vuorotellen oikealle ja vasemmalle. Alempi robotti kulkee tuplavauhtia. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/5b2b134a4afcdbaa9c11796d3cadb5e2/pygame_liike2.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Piirileikki","tmcname":"osa13-08_piirileikki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa on kymmenen robottia piirileikissä. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/c8832b391e97f55d98358c8f0e5bfd57/pygame_piiri.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pomppiva pallo","tmcname":"osa13-09_pomppiva_pallo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa pallo kimpoaa ikkunan reunoilta. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/e9503906920a8a19bc3a33143b0dde81/pygame_pallo.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on palloa varten kuvatiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pallo.png"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotti-invaasio","tmcname":"osa13-10_robotti_invaasio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa taivaalta tippuu satunnaisesti robotteja. Kun robotti laskeutuu maahan, se lähtee joko vasemmalle tai oikealle ja katoaa lopuksi ruudulta. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/23bd928da4c554324efdf7de4806cc60/pygame_invaasio.gif"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten voi toteuttaa animaation
    • \n
    • Osaat tahdistaa ohjelman nopeuden kellon avulla
    • \n
    • Osaat käyttää trigonometriaa animaatiossa
    • \n

    Monissa peleissä on tarvetta saada aikaan liikkuvia hahmoja, joten seuraava luonteva askel on opetella animaation tekeminen. Animaatio syntyy, kun kuva piirretään eri kohtiin näytöllä sopivasti ajastettuna.

    Animaation tekeminen

    Seuraava koodi luo animaation, jossa robotti kulkee vasemmalta oikealle ikkunassa:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nx = 0\ny = 0\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n\n    x += 1\n    kello.tick(60)

    Ohjelman suoritus näyttää seuraavalta:

    Katsotaan taas tarkemmin, mitä ohjelmassa tapahtuu. Jotta kuva pystyy liikkumaan, ohjelmassa täytyy olla tieto sen paikasta. Tämä onnistuu ottamalla käyttöön kaksi muuttujaa, jotka sisältävät kuvan vasemman yläkulman koordinaatit:

    x = 0\ny = 0

    Tämän lisäksi määritellään kello, jonka avulla pystyy huolehtimaan siitä, että animaation nopeus on sopiva:

    kello = pygame.time.Clock()

    Pääsilmukan sisällä on koodi, joka piirtää kuvan sen nykyiseen paikkaan:

        naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()

    Ensin kutsutaan metodia fill, joka tyhjentää ikkunan mustalla värillä. Väri määritellään RGB-muodossa parametrilla (0, 0, 0), mikä tarkoittaa, että värin punainen, vihreä ja sininen komponentti on 0 eli väri on musta. Jokainen komponentti voi olla välillä 0–255. Esimerkiksi (255, 255, 255) on valkoinen ja (255, 0, 0) on punainen. Verkossa on monia työkaluja, joiden avulla voi tutkia RGB-värejä, kuten RGB Color Codes Chart.

    Tämän jälkeen kuva piirretään tuttuun tapaan metodilla blit ja lopuksi ikkunan sisältö päivitetään funktiolla pygame.display.flip.

    Silmukan päätteeksi muuttujan x arvo kasvaa, minkä ansiosta kuva liikkuu pikselin eteenpäin joka kierroksella:

        x += 1

    Lisäksi silmukan lopussa suoritetaan kellon metodi tick:

        kello.tick(60)

    Metodi tick huolehtii siitä, että animaation nopeus on sopiva: se tahdistaa silmukan niin, että silmukka pyritään suorittamaan 60 kertaa sekunnissa. Toisin sanoen kuva liikkuu sekunnissa 60 pikseliä oikealle. Tämä vastaa suunnilleen pelien yhteydessä käytettävää termiä FPS (frames per second).

    Metodi tick on hyödyllinen, koska sen avulla animaatio toimii periaatteessa yhtä nopeasti jokaisella koneella. Jos silmukassa ei olisi tällaista ajastusta, pelin nopeus riippuisi siitä, kuinka nopeasti pelaajan kone toimii.

    Seinään törmääminen

    Äskeinen animaatio on muuten hieno, mutta kun robotti etenee ikkunan ulkopuolelle, animaatio jatkuu ja robotti katoaa näkyvistä. Tehdään seuraavaksi ohjelmaan parannus, jonka avulla robotin suunta muuttuu, jos se törmää seinään.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nx = 0\ny = 0\nnopeus = 1\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n    \n    x += nopeus\n    if nopeus > 0 and x+robo.get_width() >= 640:\n        nopeus = -nopeus\n    if nopeus < 0 and x <= 0:\n        nopeus = -nopeus\n\n    kello.tick(60)

    Ohjelman suoritus näyttää nyt tältä:

    Nyt ohjelmassa on uusi muuttuja nopeus, joka määrittää robotin liikkumistavan. Positiivinen nopeus tarkoittaa liikkumista oikealle ja negatiivinen nopeus tarkoittaa liikkumista vasemmalle. Tässä tapauksessa kun nopeus on 1, robotti liikkuu oikealle, ja kun nopeus on –1, robotti liikkuu vasemmalle.

    Seuraavat rivit huolehtivat, että robotti osaa törmätä seinään:

        if nopeus > 0 and x+robo.get_width() >= 640:\n        nopeus = -nopeus\n    if nopeus < 0 and x <= 0:\n        nopeus = -nopeus

    Jos nopeus on positiivinen eli robotti liikkuu oikealle ja sen oikea reuna menee ikkunan oikean reunan ulkopuolelle, robotin suunta muuttuu käänteiseksi eli se alkaa liikkua vasemmalle. Vastaavasti jos nopeus on negatiivinen ja robotin vasen reuna menee ikkunan vasemman reunan ulkopuolelle, suunta muuttuu taas käänteiseksi eli robotti alkaa liikkua oikealle.

    Tämän koodin ansiosta robotti jatkaa loputtomasti rataa, jossa se liikkuu ensin koko ikkunan verran oikealle, sitten takaisin vasemmalle, sitten taas oikealle, jne.

    Pyörivä animaatio

    Tehdään vielä animaatio, jossa robotti pyörii ikkunan keskipisteen ympärillä:

    import pygame\nimport math\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nkulma = 0\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    x = 320+math.cos(kulma)*100-robo.get_width()/2\n    y = 240+math.sin(kulma)*100-robo.get_height()/2\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n\n    kulma += 0.01\n    kello.tick(60)

    Ohjelman suoritus näyttää tältä:

    Pyörimisanimaatio saadaan toteutettua trigonometrian avulla: muuttujassa kulma on radiaaneina robotin sijainnin kulma suhteessa ikkunan keskipisteeseen. Tästä saadaan laskettua sini- ja kosinifunktioilla robotin sijainti:

            x = 320+math.cos(kulma)*100-robo.get_width()/2\n        y = 240+math.sin(kulma)*100-robo.get_height()/2

    Tämä tarkoittaa, että robotin sijainti on ympyrällä, jonka säde on 100. Kosini antaa x-suuntaisen sijainnin ja sini puolestaan y-suuntaisen sijainnin. Jotta animaatio näyttää hyvältä, robotti lisäksi keskitetään niin, että sen keskipiste on ympyrällä.

    Joka kierroksella muuttujan kulma arvo kasvaa 0.01:llä. Koska radiaaneissa täysi ympyrä on 2π eli noin 6.28, robotti pyörii suunnilleen kierroksen verran 10 sekunnissa.

    Tee animaatio, jossa robotti liikkuu vuorotellen ylös ja alas. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa robotti kiertää ympäri ikkunan reunaa. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa kaksi robottia kulkee näytöllä vuorotellen oikealle ja vasemmalle. Alempi robotti kulkee tuplavauhtia. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa on kymmenen robottia piirileikissä. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa pallo kimpoaa ikkunan reunoilta. Ohjelman suorituksen tulee näyttää tältä:

    Tehtäväpohjassa on palloa varten kuvatiedosto pallo.png.

    Tee animaatio, jossa taivaalta tippuu satunnaisesti robotteja. Kun robotti laskeutuu maahan, se lähtee joko vasemmalle tai oikealle ja katoaa lopuksi ruudulta. Ohjelman suorituksen tulee näyttää tältä:

    ","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/2-animaatio.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten voi toteuttaa animaation"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tahdistaa ohjelman nopeuden kellon avulla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää trigonometriaa animaatiossa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monissa peleissä on tarvetta saada aikaan liikkuvia hahmoja, joten seuraava luonteva askel on opetella animaation tekeminen. Animaatio syntyy, kun kuva piirretään eri kohtiin näytöllä sopivasti ajastettuna."}]},{"type":"element","tagName":"h2","properties":{"id":"animaation-tekeminen","style":"position:relative;"},"children":[{"type":"text","value":"Animaation tekeminen"},{"type":"element","tagName":"a","properties":{"href":"#animaation-tekeminen","ariaLabel":"animaation tekeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi luo animaation, jossa robotti kulkee vasemmalta oikealle ikkunassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/e0ac2065e7c54214a7440186eb4b9a5b/pygame_animaatio.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan taas tarkemmin, mitä ohjelmassa tapahtuu. Jotta kuva pystyy liikkumaan, ohjelmassa täytyy olla tieto sen paikasta. Tämä onnistuu ottamalla käyttöön kaksi muuttujaa, jotka sisältävät kuvan vasemman yläkulman koordinaatit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän lisäksi määritellään kello, jonka avulla pystyy huolehtimaan siitä, että animaation nopeus on sopiva:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääsilmukan sisällä on koodi, joka piirtää kuvan sen nykyiseen paikkaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensin kutsutaan metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fill"}]},{"type":"text","value":", joka tyhjentää ikkunan mustalla värillä. Väri määritellään RGB-muodossa parametrilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(0, 0, 0)"}]},{"type":"text","value":", mikä tarkoittaa, että värin punainen, vihreä ja sininen komponentti on 0 eli väri on musta. Jokainen komponentti voi olla välillä 0–255. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(255, 255, 255)"}]},{"type":"text","value":" on valkoinen ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(255, 0, 0)"}]},{"type":"text","value":" on punainen. Verkossa on monia työkaluja, joiden avulla voi tutkia RGB-värejä, kuten "},{"type":"element","tagName":"a","properties":{"href":"https://www.rapidtables.com/web/color/RGB_Color.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"RGB Color Codes Chart"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen kuva piirretään tuttuun tapaan metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"blit"}]},{"type":"text","value":" ja lopuksi ikkunan sisältö päivitetään funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.display.flip"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan päätteeksi muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" arvo kasvaa, minkä ansiosta kuva liikkuu pikselin eteenpäin joka kierroksella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi silmukan lopussa suoritetaan kellon metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" huolehtii siitä, että animaation nopeus on sopiva: se tahdistaa silmukan niin, että silmukka pyritään suorittamaan 60 kertaa sekunnissa. Toisin sanoen kuva liikkuu sekunnissa 60 pikseliä oikealle. Tämä vastaa suunnilleen pelien yhteydessä käytettävää termiä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"FPS"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"frames per second"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" on hyödyllinen, koska sen avulla animaatio toimii periaatteessa yhtä nopeasti jokaisella koneella. Jos silmukassa ei olisi tällaista ajastusta, pelin nopeus riippuisi siitä, kuinka nopeasti pelaajan kone toimii."}]},{"type":"element","tagName":"h2","properties":{"id":"seinaan-tormaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Seinään törmääminen"},{"type":"element","tagName":"a","properties":{"href":"#seinaan-tormaaminen","ariaLabel":"seinaan tormaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Äskeinen animaatio on muuten hieno, mutta kun robotti etenee ikkunan ulkopuolelle, animaatio jatkuu ja robotti katoaa näkyvistä. Tehdään seuraavaksi ohjelmaan parannus, jonka avulla robotin suunta muuttuu, jos se törmää seinään."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nnopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" nopeus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus\n\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää nyt tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/5dac9b07ba4879c217b0b35a817a727f/pygame_animaatio2.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt ohjelmassa on uusi muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nopeus"}]},{"type":"text","value":", joka määrittää robotin liikkumistavan. Positiivinen nopeus tarkoittaa liikkumista oikealle ja negatiivinen nopeus tarkoittaa liikkumista vasemmalle. Tässä tapauksessa kun nopeus on 1, robotti liikkuu oikealle, ja kun nopeus on –1, robotti liikkuu vasemmalle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavat rivit huolehtivat, että robotti osaa törmätä seinään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nopeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nopeus"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos nopeus on positiivinen eli robotti liikkuu oikealle ja sen oikea reuna menee ikkunan oikean reunan ulkopuolelle, robotin suunta muuttuu käänteiseksi eli se alkaa liikkua vasemmalle. Vastaavasti jos nopeus on negatiivinen ja robotin vasen reuna menee ikkunan vasemman reunan ulkopuolelle, suunta muuttuu taas käänteiseksi eli robotti alkaa liikkua oikealle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän koodin ansiosta robotti jatkaa loputtomasti rataa, jossa se liikkuu ensin koko ikkunan verran oikealle, sitten takaisin vasemmalle, sitten taas oikealle, jne."}]},{"type":"element","tagName":"h2","properties":{"id":"pyoriva-animaatio","style":"position:relative;"},"children":[{"type":"text","value":"Pyörivä animaatio"},{"type":"element","tagName":"a","properties":{"href":"#pyoriva-animaatio","ariaLabel":"pyoriva animaatio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä animaatio, jossa robotti "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pyörii"}]},{"type":"text","value":" ikkunan keskipisteen ympärillä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"320"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"cos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"240"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.01"}]},{"type":"text","value":"\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/ce164a1f214ed31343271340f9157733/pygame_pyorinta.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pyörimisanimaatio saadaan toteutettua trigonometrian avulla: muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kulma"}]},{"type":"text","value":" on radiaaneina robotin sijainnin kulma suhteessa ikkunan keskipisteeseen. Tästä saadaan laskettua sini- ja kosinifunktioilla robotin sijainti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"320"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"cos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"240"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tarkoittaa, että robotin sijainti on ympyrällä, jonka säde on 100. Kosini antaa x-suuntaisen sijainnin ja sini puolestaan y-suuntaisen sijainnin. Jotta animaatio näyttää hyvältä, robotti lisäksi keskitetään niin, että sen keskipiste on ympyrällä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joka kierroksella muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kulma"}]},{"type":"text","value":" arvo kasvaa 0.01:llä. Koska radiaaneissa täysi ympyrä on 2π eli noin 6.28, robotti pyörii suunnilleen kierroksen verran 10 sekunnissa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pystyliike","tmcname":"osa13-05_pystyliike"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa robotti liikkuu vuorotellen ylös ja alas. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/7dfa8e1aefab9c5f0586d8148b819543/pygame_pysty.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Reunan kierto","tmcname":"osa13-06_reunan_kierto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa robotti kiertää ympäri ikkunan reunaa. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/b313e2cd6e747c9b47375655616b0e2d/pygame_kierto.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaksi robottia","tmcname":"osa13-07_kaksi_robottia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa kaksi robottia kulkee näytöllä vuorotellen oikealle ja vasemmalle. Alempi robotti kulkee tuplavauhtia. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/5b2b134a4afcdbaa9c11796d3cadb5e2/pygame_liike2.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Piirileikki","tmcname":"osa13-08_piirileikki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa on kymmenen robottia piirileikissä. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/c8832b391e97f55d98358c8f0e5bfd57/pygame_piiri.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pomppiva pallo","tmcname":"osa13-09_pomppiva_pallo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa pallo kimpoaa ikkunan reunoilta. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/e9503906920a8a19bc3a33143b0dde81/pygame_pallo.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on palloa varten kuvatiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pallo.png"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotti-invaasio","tmcname":"osa13-10_robotti_invaasio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee animaatio, jossa taivaalta tippuu satunnaisesti robotteja. Kun robotti laskeutuu maahan, se lähtee joko vasemmalle tai oikealle ja katoaa lopuksi ruudulta. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/23bd928da4c554324efdf7de4806cc60/pygame_invaasio.gif"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten voi toteuttaa animaation
    • \n
    • Osaat tahdistaa ohjelman nopeuden kellon avulla
    • \n
    • Osaat käyttää trigonometriaa animaatiossa
    • \n

    Monissa peleissä on tarvetta saada aikaan liikkuvia hahmoja, joten seuraava luonteva askel on opetella animaation tekeminen. Animaatio syntyy, kun kuva piirretään eri kohtiin näytöllä sopivasti ajastettuna.

    Animaation tekeminen

    Seuraava koodi luo animaation, jossa robotti kulkee vasemmalta oikealle ikkunassa:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nx = 0\ny = 0\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n\n    x += 1\n    kello.tick(60)

    Ohjelman suoritus näyttää seuraavalta:

    Katsotaan taas tarkemmin, mitä ohjelmassa tapahtuu. Jotta kuva pystyy liikkumaan, ohjelmassa täytyy olla tieto sen paikasta. Tämä onnistuu ottamalla käyttöön kaksi muuttujaa, jotka sisältävät kuvan vasemman yläkulman koordinaatit:

    x = 0\ny = 0

    Tämän lisäksi määritellään kello, jonka avulla pystyy huolehtimaan siitä, että animaation nopeus on sopiva:

    kello = pygame.time.Clock()

    Pääsilmukan sisällä on koodi, joka piirtää kuvan sen nykyiseen paikkaan:

        naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()

    Ensin kutsutaan metodia fill, joka tyhjentää ikkunan mustalla värillä. Väri määritellään RGB-muodossa parametrilla (0, 0, 0), mikä tarkoittaa, että värin punainen, vihreä ja sininen komponentti on 0 eli väri on musta. Jokainen komponentti voi olla välillä 0–255. Esimerkiksi (255, 255, 255) on valkoinen ja (255, 0, 0) on punainen. Verkossa on monia työkaluja, joiden avulla voi tutkia RGB-värejä, kuten RGB Color Codes Chart.

    Tämän jälkeen kuva piirretään tuttuun tapaan metodilla blit ja lopuksi ikkunan sisältö päivitetään funktiolla pygame.display.flip.

    Silmukan päätteeksi muuttujan x arvo kasvaa, minkä ansiosta kuva liikkuu pikselin eteenpäin joka kierroksella:

        x += 1

    Lisäksi silmukan lopussa suoritetaan kellon metodi tick:

        kello.tick(60)

    Metodi tick huolehtii siitä, että animaation nopeus on sopiva: se tahdistaa silmukan niin, että silmukka pyritään suorittamaan 60 kertaa sekunnissa. Toisin sanoen kuva liikkuu sekunnissa 60 pikseliä oikealle. Tämä vastaa suunnilleen pelien yhteydessä käytettävää termiä FPS (frames per second).

    Metodi tick on hyödyllinen, koska sen avulla animaatio toimii periaatteessa yhtä nopeasti jokaisella koneella. Jos silmukassa ei olisi tällaista ajastusta, pelin nopeus riippuisi siitä, kuinka nopeasti pelaajan kone toimii.

    Seinään törmääminen

    Äskeinen animaatio on muuten hieno, mutta kun robotti etenee ikkunan ulkopuolelle, animaatio jatkuu ja robotti katoaa näkyvistä. Tehdään seuraavaksi ohjelmaan parannus, jonka avulla robotin suunta muuttuu, jos se törmää seinään.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nx = 0\ny = 0\nnopeus = 1\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n    \n    x += nopeus\n    if nopeus > 0 and x+robo.get_width() >= 640:\n        nopeus = -nopeus\n    if nopeus < 0 and x <= 0:\n        nopeus = -nopeus\n\n    kello.tick(60)

    Ohjelman suoritus näyttää nyt tältä:

    Nyt ohjelmassa on uusi muuttuja nopeus, joka määrittää robotin liikkumistavan. Positiivinen nopeus tarkoittaa liikkumista oikealle ja negatiivinen nopeus tarkoittaa liikkumista vasemmalle. Tässä tapauksessa kun nopeus on 1, robotti liikkuu oikealle, ja kun nopeus on –1, robotti liikkuu vasemmalle.

    Seuraavat rivit huolehtivat, että robotti osaa törmätä seinään:

        if nopeus > 0 and x+robo.get_width() >= 640:\n        nopeus = -nopeus\n    if nopeus < 0 and x <= 0:\n        nopeus = -nopeus

    Jos nopeus on positiivinen eli robotti liikkuu oikealle ja sen oikea reuna menee ikkunan oikean reunan ulkopuolelle, robotin suunta muuttuu käänteiseksi eli se alkaa liikkua vasemmalle. Vastaavasti jos nopeus on negatiivinen ja robotin vasen reuna menee ikkunan vasemman reunan ulkopuolelle, suunta muuttuu taas käänteiseksi eli robotti alkaa liikkua oikealle.

    Tämän koodin ansiosta robotti jatkaa loputtomasti rataa, jossa se liikkuu ensin koko ikkunan verran oikealle, sitten takaisin vasemmalle, sitten taas oikealle, jne.

    Pyörivä animaatio

    Tehdään vielä animaatio, jossa robotti pyörii ikkunan keskipisteen ympärillä:

    import pygame\nimport math\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nkulma = 0\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    x = 320+math.cos(kulma)*100-robo.get_width()/2\n    y = 240+math.sin(kulma)*100-robo.get_height()/2\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n\n    kulma += 0.01\n    kello.tick(60)

    Ohjelman suoritus näyttää tältä:

    Pyörimisanimaatio saadaan toteutettua trigonometrian avulla: muuttujassa kulma on radiaaneina robotin sijainnin kulma suhteessa ikkunan keskipisteeseen. Tästä saadaan laskettua sini- ja kosinifunktioilla robotin sijainti:

            x = 320+math.cos(kulma)*100-robo.get_width()/2\n        y = 240+math.sin(kulma)*100-robo.get_height()/2

    Tämä tarkoittaa, että robotin sijainti on ympyrällä, jonka säde on 100. Kosini antaa x-suuntaisen sijainnin ja sini puolestaan y-suuntaisen sijainnin. Jotta animaatio näyttää hyvältä, robotti lisäksi keskitetään niin, että sen keskipiste on ympyrällä.

    Joka kierroksella muuttujan kulma arvo kasvaa 0.01:llä. Koska radiaaneissa täysi ympyrä on 2π eli noin 6.28, robotti pyörii suunnilleen kierroksen verran 10 sekunnissa.

    Tee animaatio, jossa robotti liikkuu vuorotellen ylös ja alas. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa robotti kiertää ympäri ikkunan reunaa. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa kaksi robottia kulkee näytöllä vuorotellen oikealle ja vasemmalle. Alempi robotti kulkee tuplavauhtia. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa on kymmenen robottia piirileikissä. Ohjelman suorituksen tulee näyttää tältä:

    Tee animaatio, jossa pallo kimpoaa ikkunan reunoilta. Ohjelman suorituksen tulee näyttää tältä:

    Tehtäväpohjassa on palloa varten kuvatiedosto pallo.png.

    Tee animaatio, jossa taivaalta tippuu satunnaisesti robotteja. Kun robotti laskeutuu maahan, se lähtee joko vasemmalle tai oikealle ja katoaa lopuksi ruudulta. Ohjelman suorituksen tulee näyttää tältä:

    ","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/2-animaatio.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-13/3-tapahtumat/page-data.json b/page-data/osa-13/3-tapahtumat/page-data.json index 0496c7ab0..9e0c1d71f 100644 --- a/page-data/osa-13/3-tapahtumat/page-data.json +++ b/page-data/osa-13/3-tapahtumat/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-13/3-tapahtumat", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Olet tutustunut Pygamen tapahtumiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tehdä ohjelman, joka lukee näppäimistön painalluksia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tehdä ohjelman, joka lukee hiiren tapahtumia"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän asti olemme toteuttaneet Pygame-ohjelman pääsilmukan niin, että se käy läpi tapahtumat ja tunnistaa tapahtuman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.QUIT"}]},{"type":"text","value":", mutta ei käsittele muita tapahtumia. Nyt on aika tutustua tarkemmin tapahtumien käsittelyyn."}]},{"type":"element","tagName":"h2","properties":{"id":"tapahtumien-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Tapahtumien käsittely"},{"type":"element","tagName":"a","properties":{"href":"#tapahtumien-kasittely","ariaLabel":"tapahtumien kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi näyttää, mitä tapahtumia syntyy ohjelman suorituksen aikana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelmaa käytetään hetki, se voi tulostaa esimerkiksi seuraavanlaisia tapahtumia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ensimmäiset tapahtumat liittyvät hiiren käyttämiseen, seuraavat tapahtumat näppäimistön käyttämiseen ja viimeinen tapahtuma sulkee ohjelman. Jokaisella tapahtumalla on tyyppi ja mahdollisesti lisätietoa, josta voi päätellä esimerkiksi hiiren sijainnin tai painetun näppäimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tapahtumia voi etsiä Pygamen dokumentaatiosta mutta usein tehokas tapa löytää sopiva tapahtuma on käyttää yllä olevaa koodia ja tutkia, millainen tapahtuma syntyy, kun ohjelmassa tapahtuu haluttu asia."}]},{"type":"element","tagName":"h2","properties":{"id":"nappaimiston-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Näppäimistön käsittely"},{"type":"element","tagName":"a","properties":{"href":"#nappaimiston-kasittely","ariaLabel":"nappaimiston kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma tunnistaa tapahtumat, joissa käyttäjä painaa oikealle tai vasemmalle nuolinäppäintä. Ohjelma tulostaa testiksi tiedon näppäimen painamisesta."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vasemmalle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"oikealle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä vakiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.K_LEFT"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.K_RIGHT"}]},{"type":"text","value":" tarkoittavat nuolinäppäimiä vasemmalle ja oikealle. Näppäimistön eri näppäimiä vastaavat vakiot on listattu "},{"type":"element","tagName":"a","properties":{"href":"https://www.pygame.org/docs/ref/key.html#key-constants-label","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pygamen dokumentaatiossa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kun käyttäjä painaa ensin kahdesti oikealle, sitten kerran vasemmalle ja lopuksi kerran oikealle, ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"oikealle\noikealle\nvasemmalle\noikealle"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme nyt tehdä ohjelman, jossa käyttäjä pystyy liikuttamaan hahmoa oikealle ja vasemmalle nuolinäppäimillä. Tämä onnistuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/aac8387e39d3bb4adbfc1c36cae57345/pygame_liikutus.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":" sisältävät hahmon sijainnin. Käyttäjä pystyy muuttamaan muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":", ja muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":" on asetettu niin, että hahmo on ikkunan alalaidassa. Kun käyttäjä painaa vasemmalle tai oikealle nuolinäppäintä, hahmo liikkuu vastaavasti 10 pikseliä oikealle tai vasemmalle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä oleva ohjelma toimii muuten hyvin, mutta pelikokemuksessa on puutteena, että näppäintä pitää painaa uudestaan aina, kun haluaa liikkua askeleen oikealle tai vasemmalle. Olisi parempi, että voi pitää näppäintä pohjassa ja hahmo liikkuu niin kauan, kuin näppäin on pohjassa. Seuraava koodi mahdollistaa tämän:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\noikealle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\nvasemmalle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vasemmalle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n oikealle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYUP"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vasemmalle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n oikealle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" oikealle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vasemmalle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa on nyt muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oikealle"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vasemmalle"}]},{"type":"text","value":", joissa pidetään tietoa siitä, kuuluuko hahmon liikkua tällä hetkellä oikealle tai vasemmalle. Kun käyttäjä painaa alas nuolinäppäimen, vastaava muuttuja saa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", ja kun käyttäjä nostaa alas nuolinäppäimen, vastaava muuttuja saa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hahmon liike on tahdistettu kellon avulla niin, että liikkumista tapahtuu 60 kertaa sekunnissa. Jos nuolinäppäin on alhaalla, hahmo liikkuu 2 pikseliä oikealle tai vasemmalle. Tämän seurauksena hahmo liikkuu 120 pikseliä sekunnissa, jos nuolinäppäin on painettuna."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neljä suuntaa","tmcname":"osa13-11_nelja_suuntaa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa pelaaja pystyy ohjaamaan robottia neljään suuntaan nuolinäppäimillä. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/0461dfa5cb7291b279185dba96dfd819/pygame_nelja_suuntaa.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neljä seinää","tmcname":"osa13-12_nelja_seinaa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Paranna edellistä ohjelmaa niin, että robotti ei pysty menemään ikkunan ulkopuolelle mistään reunasta. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/bddcb9af6c636563eea121e3360b7b37/pygame_nelja_seinaa.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaksi pelaajaa","tmcname":"osa13-13_kaksi_pelaajaa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa kaksi pelaajaa voi ohjata omia robottejaan. Toinen pelaaja käyttää nuolinäppäimiä ja toinen esimerkiksi w-s-a-d. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/57101a815ad1b5363307bc90dc112da6/pygame_kaksi_pelaajaa.gif"},"children":[]}]},{"type":"element","tagName":"h2","properties":{"id":"hiiren-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Hiiren käsittely"},{"type":"element","tagName":"a","properties":{"href":"#hiiren-kasittely","ariaLabel":"hiiren kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi tunnistaa tapahtumat, jossa käyttäjä painaa hiiren nappia ikkunan alueella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"MOUSEBUTTONDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"painoit nappia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"button"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohdassa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"painoit nappia 1 kohdassa (82, 135)\npainoit nappia 1 kohdassa (369, 135)\npainoit nappia 1 kohdassa (269, 297)\npainoit nappia 3 kohdassa (515, 324)"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä nappi 1 tarkoittaa hiiren vasenta nappia ja nappi 3 tarkoittaa hiiren oikeaa nappia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma yhdistää hiiren käsittelyn ja kuvan piirtämisen. Kun käyttäjä painaa hiirellä ikkunan alueella, robotti piirretään hiiren kohtaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"MOUSEBUTTONDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/a41511bd13655f68553cc7e34de61edf/pygame_hiiri.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma puolestaan toteuttaa animaation, jossa robotti seuraa hiirtä. Robotin sijainti on muuttujissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo_x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo_y"}]},{"type":"text","value":", ja kun hiiri liikkuu, sen sijainti merkitään muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde_x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde_y"}]},{"type":"text","value":". Jos robotti ei ole hiiren kohdalla, se liikkuu sopivaan suuntaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nrobo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkohde_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkohde_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"MOUSEMOTION"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kohde_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n kohde_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" kohde_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" kohde_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" kohde_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" kohde_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" robo_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/cd4d53df2a1564c181f38b7a2d45e7c9/pygame_hiiri2.gif"},"children":[]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotti ja hiiri","tmcname":"osa13-14_robotti_ja_hiiri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa robotti seuraa hiirtä niin, että robotin keskikohta on aina hiiren kohdalla. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/58d3b2e994913c8089688bcde5e4ed86/pygame_robotti_hiiri.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotin paikka","tmcname":"osa13-15_robotin_paikka"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa robotti on satunnaisessa paikassa ikkunassa. Kun pelaaja painaa hiirellä robotista, se siirtyy aina uuteen paikkaan. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/93991031970283be78df3ba4341a7362/pygame_robotti_paikka.gif"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Olet tutustunut Pygamen tapahtumiin
    • \n
    • Osaat tehdä ohjelman, joka lukee näppäimistön painalluksia
    • \n
    • Osaat tehdä ohjelman, joka lukee hiiren tapahtumia
    • \n

    Tähän asti olemme toteuttaneet Pygame-ohjelman pääsilmukan niin, että se käy läpi tapahtumat ja tunnistaa tapahtuman pygame.QUIT, mutta ei käsittele muita tapahtumia. Nyt on aika tutustua tarkemmin tapahtumien käsittelyyn.

    Tapahtumien käsittely

    Seuraava koodi näyttää, mitä tapahtumia syntyy ohjelman suorituksen aikana:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        print(tapahtuma)\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Kun ohjelmaa käytetään hetki, se voi tulostaa esimerkiksi seuraavanlaisia tapahtumia:

    <Event(4-MouseMotion {'pos': (495, 274), 'rel': (495, 274), 'buttons': (0, 0, 0), 'window': None})>\n<Event(4-MouseMotion {'pos': (494, 274), 'rel': (-1, 0), 'buttons': (0, 0, 0), 'window': None})>\n<Event(4-MouseMotion {'pos': (492, 274), 'rel': (-2, 0), 'buttons': (0, 0, 0), 'window': None})>\n<Event(4-MouseMotion {'pos': (491, 274), 'rel': (-1, 0), 'buttons': (0, 0, 0), 'window': None})>\n<Event(5-MouseButtonDown {'pos': (491, 274), 'button': 1, 'window': None})>\n<Event(6-MouseButtonUp {'pos': (491, 274), 'button': 1, 'window': None})>\n<Event(2-KeyDown {'unicode': 'a', 'key': 97, 'mod': 0, 'scancode': 38, 'window': None})>\n<Event(3-KeyUp {'key': 97, 'mod': 0, 'scancode': 38, 'window': None})>\n<Event(2-KeyDown {'unicode': 'b', 'key': 98, 'mod': 0, 'scancode': 56, 'window': None})>\n<Event(3-KeyUp {'key': 98, 'mod': 0, 'scancode': 56, 'window': None})>\n<Event(2-KeyDown {'unicode': 'c', 'key': 99, 'mod': 0, 'scancode': 54, 'window': None})>\n<Event(3-KeyUp {'key': 99, 'mod': 0, 'scancode': 54, 'window': None})>\n<Event(12-Quit {})>

    Tässä ensimmäiset tapahtumat liittyvät hiiren käyttämiseen, seuraavat tapahtumat näppäimistön käyttämiseen ja viimeinen tapahtuma sulkee ohjelman. Jokaisella tapahtumalla on tyyppi ja mahdollisesti lisätietoa, josta voi päätellä esimerkiksi hiiren sijainnin tai painetun näppäimen.

    Tapahtumia voi etsiä Pygamen dokumentaatiosta mutta usein tehokas tapa löytää sopiva tapahtuma on käyttää yllä olevaa koodia ja tutkia, millainen tapahtuma syntyy, kun ohjelmassa tapahtuu haluttu asia.

    Näppäimistön käsittely

    Seuraava ohjelma tunnistaa tapahtumat, joissa käyttäjä painaa oikealle tai vasemmalle nuolinäppäintä. Ohjelma tulostaa testiksi tiedon näppäimen painamisesta.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.KEYDOWN:\n            if tapahtuma.key == pygame.K_LEFT:\n                print(\"vasemmalle\")\n            if tapahtuma.key == pygame.K_RIGHT:\n                print(\"oikealle\")\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Tässä vakiot pygame.K_LEFT ja pygame.K_RIGHT tarkoittavat nuolinäppäimiä vasemmalle ja oikealle. Näppäimistön eri näppäimiä vastaavat vakiot on listattu Pygamen dokumentaatiossa.

    Esimerkiksi kun käyttäjä painaa ensin kahdesti oikealle, sitten kerran vasemmalle ja lopuksi kerran oikealle, ohjelman tulostus on seuraava:

    oikealle\noikealle\nvasemmalle\noikealle

    Voimme nyt tehdä ohjelman, jossa käyttäjä pystyy liikuttamaan hahmoa oikealle ja vasemmalle nuolinäppäimillä. Tämä onnistuu seuraavasti:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\nx = 0\ny = 480-robo.get_height()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.KEYDOWN:\n            if tapahtuma.key == pygame.K_LEFT:\n                x -= 10\n            if tapahtuma.key == pygame.K_RIGHT:\n                x += 10\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()

    Ohjelman suoritus voi näyttää seuraavalta:

    Tässä muuttujat x ja y sisältävät hahmon sijainnin. Käyttäjä pystyy muuttamaan muuttujaa x, ja muuttuja y on asetettu niin, että hahmo on ikkunan alalaidassa. Kun käyttäjä painaa vasemmalle tai oikealle nuolinäppäintä, hahmo liikkuu vastaavasti 10 pikseliä oikealle tai vasemmalle.

    Yllä oleva ohjelma toimii muuten hyvin, mutta pelikokemuksessa on puutteena, että näppäintä pitää painaa uudestaan aina, kun haluaa liikkua askeleen oikealle tai vasemmalle. Olisi parempi, että voi pitää näppäintä pohjassa ja hahmo liikkuu niin kauan, kuin näppäin on pohjassa. Seuraava koodi mahdollistaa tämän:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\nx = 0\ny = 480-robo.get_height()\n\noikealle = False\nvasemmalle = False\n\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.KEYDOWN:\n            if tapahtuma.key == pygame.K_LEFT:\n                vasemmalle = True\n            if tapahtuma.key == pygame.K_RIGHT:\n                oikealle = True\n\n        if tapahtuma.type == pygame.KEYUP:\n            if tapahtuma.key == pygame.K_LEFT:\n                vasemmalle = False\n            if tapahtuma.key == pygame.K_RIGHT:\n                oikealle = False\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    if oikealle:\n        x += 2\n    if vasemmalle:\n        x -= 2\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n\n    kello.tick(60)

    Koodissa on nyt muuttujat oikealle ja vasemmalle, joissa pidetään tietoa siitä, kuuluuko hahmon liikkua tällä hetkellä oikealle tai vasemmalle. Kun käyttäjä painaa alas nuolinäppäimen, vastaava muuttuja saa arvon True, ja kun käyttäjä nostaa alas nuolinäppäimen, vastaava muuttuja saa arvon False.

    Hahmon liike on tahdistettu kellon avulla niin, että liikkumista tapahtuu 60 kertaa sekunnissa. Jos nuolinäppäin on alhaalla, hahmo liikkuu 2 pikseliä oikealle tai vasemmalle. Tämän seurauksena hahmo liikkuu 120 pikseliä sekunnissa, jos nuolinäppäin on painettuna.

    Tee ohjelma, jossa pelaaja pystyy ohjaamaan robottia neljään suuntaan nuolinäppäimillä. Ohjelman suorituksen tulee näyttää tältä:

    Paranna edellistä ohjelmaa niin, että robotti ei pysty menemään ikkunan ulkopuolelle mistään reunasta. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, jossa kaksi pelaajaa voi ohjata omia robottejaan. Toinen pelaaja käyttää nuolinäppäimiä ja toinen esimerkiksi w-s-a-d. Ohjelman suorituksen tulee näyttää tältä:

    Hiiren käsittely

    Seuraava koodi tunnistaa tapahtumat, jossa käyttäjä painaa hiiren nappia ikkunan alueella:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.MOUSEBUTTONDOWN:\n            print(\"painoit nappia\", tapahtuma.button, \"kohdassa\", tapahtuma.pos)\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman suoritus voi näyttää tältä:

    painoit nappia 1 kohdassa (82, 135)\npainoit nappia 1 kohdassa (369, 135)\npainoit nappia 1 kohdassa (269, 297)\npainoit nappia 3 kohdassa (515, 324)

    Tässä nappi 1 tarkoittaa hiiren vasenta nappia ja nappi 3 tarkoittaa hiiren oikeaa nappia.

    Seuraava ohjelma yhdistää hiiren käsittelyn ja kuvan piirtämisen. Kun käyttäjä painaa hiirellä ikkunan alueella, robotti piirretään hiiren kohtaan.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.MOUSEBUTTONDOWN:\n            x = tapahtuma.pos[0]-robo.get_width()/2\n            y = tapahtuma.pos[1]-robo.get_height()/2\n\n            naytto.fill((0, 0, 0))\n            naytto.blit(robo, (x, y))\n            pygame.display.flip()\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman suoritus voi näyttää tältä:

    Seuraava ohjelma puolestaan toteuttaa animaation, jossa robotti seuraa hiirtä. Robotin sijainti on muuttujissa robo_x ja robo_y, ja kun hiiri liikkuu, sen sijainti merkitään muuttujiin kohde_x ja kohde_y. Jos robotti ei ole hiiren kohdalla, se liikkuu sopivaan suuntaan.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nrobo_x = 0\nrobo_y = 0\nkohde_x = 0\nkohde_y = 0\n\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.MOUSEMOTION:\n            kohde_x = tapahtuma.pos[0]-robo.get_width()/2\n            kohde_y = tapahtuma.pos[1]-robo.get_height()/2\n\n        if tapahtuma.type == pygame.QUIT:\n            exit(0)\n\n    if robo_x > kohde_x:\n        robo_x -= 1\n    if robo_x < kohde_x:\n        robo_x += 1\n    if robo_y > kohde_y:\n        robo_y -= 1\n    if robo_y < kohde_y:\n        robo_y += 1\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (robo_x, robo_y))\n    pygame.display.flip()\n\n    kello.tick(60)

    Ohjelman suoritus voi näyttää tältä:

    Tee ohjelma, jossa robotti seuraa hiirtä niin, että robotin keskikohta on aina hiiren kohdalla. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, jossa robotti on satunnaisessa paikassa ikkunassa. Kun pelaaja painaa hiirellä robotista, se siirtyy aina uuteen paikkaan. Ohjelman suorituksen tulee näyttää tältä:

    ","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/3-tapahtumat.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Olet tutustunut Pygamen tapahtumiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tehdä ohjelman, joka lukee näppäimistön painalluksia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tehdä ohjelman, joka lukee hiiren tapahtumia"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän asti olemme toteuttaneet Pygame-ohjelman pääsilmukan niin, että se käy läpi tapahtumat ja tunnistaa tapahtuman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.QUIT"}]},{"type":"text","value":", mutta ei käsittele muita tapahtumia. Nyt on aika tutustua tarkemmin tapahtumien käsittelyyn."}]},{"type":"element","tagName":"h2","properties":{"id":"tapahtumien-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Tapahtumien käsittely"},{"type":"element","tagName":"a","properties":{"href":"#tapahtumien-kasittely","ariaLabel":"tapahtumien kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi näyttää, mitä tapahtumia syntyy ohjelman suorituksen aikana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelmaa käytetään hetki, se voi tulostaa esimerkiksi seuraavanlaisia tapahtumia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ensimmäiset tapahtumat liittyvät hiiren käyttämiseen, seuraavat tapahtumat näppäimistön käyttämiseen ja viimeinen tapahtuma sulkee ohjelman. Jokaisella tapahtumalla on tyyppi ja mahdollisesti lisätietoa, josta voi päätellä esimerkiksi hiiren sijainnin tai painetun näppäimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tapahtumia voi etsiä Pygamen dokumentaatiosta mutta usein tehokas tapa löytää sopiva tapahtuma on käyttää yllä olevaa koodia ja tutkia, millainen tapahtuma syntyy, kun ohjelmassa tapahtuu haluttu asia."}]},{"type":"element","tagName":"h2","properties":{"id":"nappaimiston-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Näppäimistön käsittely"},{"type":"element","tagName":"a","properties":{"href":"#nappaimiston-kasittely","ariaLabel":"nappaimiston kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma tunnistaa tapahtumat, joissa käyttäjä painaa oikealle tai vasemmalle nuolinäppäintä. Ohjelma tulostaa testiksi tiedon näppäimen painamisesta."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vasemmalle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"oikealle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä vakiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.K_LEFT"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.K_RIGHT"}]},{"type":"text","value":" tarkoittavat nuolinäppäimiä vasemmalle ja oikealle. Näppäimistön eri näppäimiä vastaavat vakiot on listattu "},{"type":"element","tagName":"a","properties":{"href":"https://www.pygame.org/docs/ref/key.html#key-constants-label","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pygamen dokumentaatiossa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kun käyttäjä painaa ensin kahdesti oikealle, sitten kerran vasemmalle ja lopuksi kerran oikealle, ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"oikealle\noikealle\nvasemmalle\noikealle"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme nyt tehdä ohjelman, jossa käyttäjä pystyy liikuttamaan hahmoa oikealle ja vasemmalle nuolinäppäimillä. Tämä onnistuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/aac8387e39d3bb4adbfc1c36cae57345/pygame_liikutus.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":" sisältävät hahmon sijainnin. Käyttäjä pystyy muuttamaan muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":", ja muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":" on asetettu niin, että hahmo on ikkunan alalaidassa. Kun käyttäjä painaa vasemmalle tai oikealle nuolinäppäintä, hahmo liikkuu vastaavasti 10 pikseliä oikealle tai vasemmalle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä oleva ohjelma toimii muuten hyvin, mutta pelikokemuksessa on puutteena, että näppäintä pitää painaa uudestaan aina, kun haluaa liikkua askeleen oikealle tai vasemmalle. Olisi parempi, että voi pitää näppäintä pohjassa ja hahmo liikkuu niin kauan, kuin näppäin on pohjassa. Seuraava koodi mahdollistaa tämän:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\noikealle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\nvasemmalle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vasemmalle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n oikealle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYUP"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vasemmalle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n oikealle "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" oikealle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vasemmalle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa on nyt muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oikealle"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vasemmalle"}]},{"type":"text","value":", joissa pidetään tietoa siitä, kuuluuko hahmon liikkua tällä hetkellä oikealle tai vasemmalle. Kun käyttäjä painaa alas nuolinäppäimen, vastaava muuttuja saa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", ja kun käyttäjä nostaa alas nuolinäppäimen, vastaava muuttuja saa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hahmon liike on tahdistettu kellon avulla niin, että liikkumista tapahtuu 60 kertaa sekunnissa. Jos nuolinäppäin on alhaalla, hahmo liikkuu 2 pikseliä oikealle tai vasemmalle. Tämän seurauksena hahmo liikkuu 120 pikseliä sekunnissa, jos nuolinäppäin on painettuna."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neljä suuntaa","tmcname":"osa13-11_nelja_suuntaa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa pelaaja pystyy ohjaamaan robottia neljään suuntaan nuolinäppäimillä. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/0461dfa5cb7291b279185dba96dfd819/pygame_nelja_suuntaa.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neljä seinää","tmcname":"osa13-12_nelja_seinaa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Paranna edellistä ohjelmaa niin, että robotti ei pysty menemään ikkunan ulkopuolelle mistään reunasta. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/bddcb9af6c636563eea121e3360b7b37/pygame_nelja_seinaa.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaksi pelaajaa","tmcname":"osa13-13_kaksi_pelaajaa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa kaksi pelaajaa voi ohjata omia robottejaan. Toinen pelaaja käyttää nuolinäppäimiä ja toinen esimerkiksi w-s-a-d. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/57101a815ad1b5363307bc90dc112da6/pygame_kaksi_pelaajaa.gif"},"children":[]}]},{"type":"element","tagName":"h2","properties":{"id":"hiiren-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Hiiren käsittely"},{"type":"element","tagName":"a","properties":{"href":"#hiiren-kasittely","ariaLabel":"hiiren kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi tunnistaa tapahtumat, jossa käyttäjä painaa hiiren nappia ikkunan alueella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"MOUSEBUTTONDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"painoit nappia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"button"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohdassa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"painoit nappia 1 kohdassa (82, 135)\npainoit nappia 1 kohdassa (369, 135)\npainoit nappia 1 kohdassa (269, 297)\npainoit nappia 3 kohdassa (515, 324)"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä nappi 1 tarkoittaa hiiren vasenta nappia ja nappi 3 tarkoittaa hiiren oikeaa nappia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma yhdistää hiiren käsittelyn ja kuvan piirtämisen. Kun käyttäjä painaa hiirellä ikkunan alueella, robotti piirretään hiiren kohtaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"MOUSEBUTTONDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/a41511bd13655f68553cc7e34de61edf/pygame_hiiri.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma puolestaan toteuttaa animaation, jossa robotti seuraa hiirtä. Robotin sijainti on muuttujissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo_x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo_y"}]},{"type":"text","value":", ja kun hiiri liikkuu, sen sijainti merkitään muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde_x"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde_y"}]},{"type":"text","value":". Jos robotti ei ole hiiren kohdalla, se liikkuu sopivaan suuntaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo.png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nrobo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nrobo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkohde_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nkohde_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\nkello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"time"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"Clock"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"MOUSEMOTION"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kohde_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n kohde_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" kohde_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" kohde_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" kohde_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" kohde_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robo_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"robo_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" robo_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus voi näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/cd4d53df2a1564c181f38b7a2d45e7c9/pygame_hiiri2.gif"},"children":[]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotti ja hiiri","tmcname":"osa13-14_robotti_ja_hiiri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa robotti seuraa hiirtä niin, että robotin keskikohta on aina hiiren kohdalla. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/58d3b2e994913c8089688bcde5e4ed86/pygame_robotti_hiiri.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Robotin paikka","tmcname":"osa13-15_robotin_paikka"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, jossa robotti on satunnaisessa paikassa ikkunassa. Kun pelaaja painaa hiirellä robotista, se siirtyy aina uuteen paikkaan. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/93991031970283be78df3ba4341a7362/pygame_robotti_paikka.gif"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Olet tutustunut Pygamen tapahtumiin
    • \n
    • Osaat tehdä ohjelman, joka lukee näppäimistön painalluksia
    • \n
    • Osaat tehdä ohjelman, joka lukee hiiren tapahtumia
    • \n

    Tähän asti olemme toteuttaneet Pygame-ohjelman pääsilmukan niin, että se käy läpi tapahtumat ja tunnistaa tapahtuman pygame.QUIT, mutta ei käsittele muita tapahtumia. Nyt on aika tutustua tarkemmin tapahtumien käsittelyyn.

    Tapahtumien käsittely

    Seuraava koodi näyttää, mitä tapahtumia syntyy ohjelman suorituksen aikana:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        print(tapahtuma)\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Kun ohjelmaa käytetään hetki, se voi tulostaa esimerkiksi seuraavanlaisia tapahtumia:

    <Event(4-MouseMotion {'pos': (495, 274), 'rel': (495, 274), 'buttons': (0, 0, 0), 'window': None})>\n<Event(4-MouseMotion {'pos': (494, 274), 'rel': (-1, 0), 'buttons': (0, 0, 0), 'window': None})>\n<Event(4-MouseMotion {'pos': (492, 274), 'rel': (-2, 0), 'buttons': (0, 0, 0), 'window': None})>\n<Event(4-MouseMotion {'pos': (491, 274), 'rel': (-1, 0), 'buttons': (0, 0, 0), 'window': None})>\n<Event(5-MouseButtonDown {'pos': (491, 274), 'button': 1, 'window': None})>\n<Event(6-MouseButtonUp {'pos': (491, 274), 'button': 1, 'window': None})>\n<Event(2-KeyDown {'unicode': 'a', 'key': 97, 'mod': 0, 'scancode': 38, 'window': None})>\n<Event(3-KeyUp {'key': 97, 'mod': 0, 'scancode': 38, 'window': None})>\n<Event(2-KeyDown {'unicode': 'b', 'key': 98, 'mod': 0, 'scancode': 56, 'window': None})>\n<Event(3-KeyUp {'key': 98, 'mod': 0, 'scancode': 56, 'window': None})>\n<Event(2-KeyDown {'unicode': 'c', 'key': 99, 'mod': 0, 'scancode': 54, 'window': None})>\n<Event(3-KeyUp {'key': 99, 'mod': 0, 'scancode': 54, 'window': None})>\n<Event(12-Quit {})>

    Tässä ensimmäiset tapahtumat liittyvät hiiren käyttämiseen, seuraavat tapahtumat näppäimistön käyttämiseen ja viimeinen tapahtuma sulkee ohjelman. Jokaisella tapahtumalla on tyyppi ja mahdollisesti lisätietoa, josta voi päätellä esimerkiksi hiiren sijainnin tai painetun näppäimen.

    Tapahtumia voi etsiä Pygamen dokumentaatiosta mutta usein tehokas tapa löytää sopiva tapahtuma on käyttää yllä olevaa koodia ja tutkia, millainen tapahtuma syntyy, kun ohjelmassa tapahtuu haluttu asia.

    Näppäimistön käsittely

    Seuraava ohjelma tunnistaa tapahtumat, joissa käyttäjä painaa oikealle tai vasemmalle nuolinäppäintä. Ohjelma tulostaa testiksi tiedon näppäimen painamisesta.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.KEYDOWN:\n            if tapahtuma.key == pygame.K_LEFT:\n                print(\"vasemmalle\")\n            if tapahtuma.key == pygame.K_RIGHT:\n                print(\"oikealle\")\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Tässä vakiot pygame.K_LEFT ja pygame.K_RIGHT tarkoittavat nuolinäppäimiä vasemmalle ja oikealle. Näppäimistön eri näppäimiä vastaavat vakiot on listattu Pygamen dokumentaatiossa.

    Esimerkiksi kun käyttäjä painaa ensin kahdesti oikealle, sitten kerran vasemmalle ja lopuksi kerran oikealle, ohjelman tulostus on seuraava:

    oikealle\noikealle\nvasemmalle\noikealle

    Voimme nyt tehdä ohjelman, jossa käyttäjä pystyy liikuttamaan hahmoa oikealle ja vasemmalle nuolinäppäimillä. Tämä onnistuu seuraavasti:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\nx = 0\ny = 480-robo.get_height()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.KEYDOWN:\n            if tapahtuma.key == pygame.K_LEFT:\n                x -= 10\n            if tapahtuma.key == pygame.K_RIGHT:\n                x += 10\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()

    Ohjelman suoritus voi näyttää seuraavalta:

    Tässä muuttujat x ja y sisältävät hahmon sijainnin. Käyttäjä pystyy muuttamaan muuttujaa x, ja muuttuja y on asetettu niin, että hahmo on ikkunan alalaidassa. Kun käyttäjä painaa vasemmalle tai oikealle nuolinäppäintä, hahmo liikkuu vastaavasti 10 pikseliä oikealle tai vasemmalle.

    Yllä oleva ohjelma toimii muuten hyvin, mutta pelikokemuksessa on puutteena, että näppäintä pitää painaa uudestaan aina, kun haluaa liikkua askeleen oikealle tai vasemmalle. Olisi parempi, että voi pitää näppäintä pohjassa ja hahmo liikkuu niin kauan, kuin näppäin on pohjassa. Seuraava koodi mahdollistaa tämän:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\nx = 0\ny = 480-robo.get_height()\n\noikealle = False\nvasemmalle = False\n\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.KEYDOWN:\n            if tapahtuma.key == pygame.K_LEFT:\n                vasemmalle = True\n            if tapahtuma.key == pygame.K_RIGHT:\n                oikealle = True\n\n        if tapahtuma.type == pygame.KEYUP:\n            if tapahtuma.key == pygame.K_LEFT:\n                vasemmalle = False\n            if tapahtuma.key == pygame.K_RIGHT:\n                oikealle = False\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()\n\n    if oikealle:\n        x += 2\n    if vasemmalle:\n        x -= 2\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (x, y))\n    pygame.display.flip()\n\n    kello.tick(60)

    Koodissa on nyt muuttujat oikealle ja vasemmalle, joissa pidetään tietoa siitä, kuuluuko hahmon liikkua tällä hetkellä oikealle tai vasemmalle. Kun käyttäjä painaa alas nuolinäppäimen, vastaava muuttuja saa arvon True, ja kun käyttäjä nostaa alas nuolinäppäimen, vastaava muuttuja saa arvon False.

    Hahmon liike on tahdistettu kellon avulla niin, että liikkumista tapahtuu 60 kertaa sekunnissa. Jos nuolinäppäin on alhaalla, hahmo liikkuu 2 pikseliä oikealle tai vasemmalle. Tämän seurauksena hahmo liikkuu 120 pikseliä sekunnissa, jos nuolinäppäin on painettuna.

    Tee ohjelma, jossa pelaaja pystyy ohjaamaan robottia neljään suuntaan nuolinäppäimillä. Ohjelman suorituksen tulee näyttää tältä:

    Paranna edellistä ohjelmaa niin, että robotti ei pysty menemään ikkunan ulkopuolelle mistään reunasta. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, jossa kaksi pelaajaa voi ohjata omia robottejaan. Toinen pelaaja käyttää nuolinäppäimiä ja toinen esimerkiksi w-s-a-d. Ohjelman suorituksen tulee näyttää tältä:

    Hiiren käsittely

    Seuraava koodi tunnistaa tapahtumat, jossa käyttäjä painaa hiiren nappia ikkunan alueella:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.MOUSEBUTTONDOWN:\n            print(\"painoit nappia\", tapahtuma.button, \"kohdassa\", tapahtuma.pos)\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman suoritus voi näyttää tältä:

    painoit nappia 1 kohdassa (82, 135)\npainoit nappia 1 kohdassa (369, 135)\npainoit nappia 1 kohdassa (269, 297)\npainoit nappia 3 kohdassa (515, 324)

    Tässä nappi 1 tarkoittaa hiiren vasenta nappia ja nappi 3 tarkoittaa hiiren oikeaa nappia.

    Seuraava ohjelma yhdistää hiiren käsittelyn ja kuvan piirtämisen. Kun käyttäjä painaa hiirellä ikkunan alueella, robotti piirretään hiiren kohtaan.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.MOUSEBUTTONDOWN:\n            x = tapahtuma.pos[0]-robo.get_width()/2\n            y = tapahtuma.pos[1]-robo.get_height()/2\n\n            naytto.fill((0, 0, 0))\n            naytto.blit(robo, (x, y))\n            pygame.display.flip()\n\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman suoritus voi näyttää tältä:

    Seuraava ohjelma puolestaan toteuttaa animaation, jossa robotti seuraa hiirtä. Robotin sijainti on muuttujissa robo_x ja robo_y, ja kun hiiri liikkuu, sen sijainti merkitään muuttujiin kohde_x ja kohde_y. Jos robotti ei ole hiiren kohdalla, se liikkuu sopivaan suuntaan.

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\n\nrobo = pygame.image.load(\"robo.png\")\n\nrobo_x = 0\nrobo_y = 0\nkohde_x = 0\nkohde_y = 0\n\nkello = pygame.time.Clock()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.MOUSEMOTION:\n            kohde_x = tapahtuma.pos[0]-robo.get_width()/2\n            kohde_y = tapahtuma.pos[1]-robo.get_height()/2\n\n        if tapahtuma.type == pygame.QUIT:\n            exit(0)\n\n    if robo_x > kohde_x:\n        robo_x -= 1\n    if robo_x < kohde_x:\n        robo_x += 1\n    if robo_y > kohde_y:\n        robo_y -= 1\n    if robo_y < kohde_y:\n        robo_y += 1\n\n    naytto.fill((0, 0, 0))\n    naytto.blit(robo, (robo_x, robo_y))\n    pygame.display.flip()\n\n    kello.tick(60)

    Ohjelman suoritus voi näyttää tältä:

    Tee ohjelma, jossa robotti seuraa hiirtä niin, että robotin keskikohta on aina hiiren kohdalla. Ohjelman suorituksen tulee näyttää tältä:

    Tee ohjelma, jossa robotti on satunnaisessa paikassa ikkunassa. Kun pelaaja painaa hiirellä robotista, se siirtyy aina uuteen paikkaan. Ohjelman suorituksen tulee näyttää tältä:

    ","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/3-tapahtumat.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-13/4-lisaa-tekniikoita/page-data.json b/page-data/osa-13/4-lisaa-tekniikoita/page-data.json index b8990dfa5..b6119be1e 100644 --- a/page-data/osa-13/4-lisaa-tekniikoita/page-data.json +++ b/page-data/osa-13/4-lisaa-tekniikoita/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-13/4-lisaa-tekniikoita", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten ikkunan otsikkoa voi muuttaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat piirtää kuvioita Pygamessa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat piirtää ikkunaan myös tekstiä"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"ikkunan-otsikko","style":"position:relative;"},"children":[{"type":"text","value":"Ikkunan otsikko"},{"type":"element","tagName":"a","properties":{"href":"#ikkunan-otsikko","ariaLabel":"ikkunan otsikko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma näyttää ammattimaisemmalta, jos ikkunan otsikkopalkissa ei lue \"pygame window\" vaan ohjelman todellinen nimi. Tämä onnistuu näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_caption"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suuri seikkailu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"kuvioiden-piirtaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kuvioiden piirtäminen"},{"type":"element","tagName":"a","properties":{"href":"#kuvioiden-piirtaminen","ariaLabel":"kuvioiden piirtaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma luo kuvan, jossa on suorakulmio, ympyrä ja viiva:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rect"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"250"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"circle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"150"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"line"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"80"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"120"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"300"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"160"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulos näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/9a7380e2e818c94a080d41344f073d5a/pygame_kuviot.gif"},"children":[]},{"type":"element","tagName":"h2","properties":{"id":"tekstin-piirtaminen","style":"position:relative;"},"children":[{"type":"text","value":"Tekstin piirtäminen"},{"type":"element","tagName":"a","properties":{"href":"#tekstin-piirtaminen","ariaLabel":"tekstin piirtaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tekstin piirtäminen tapahtuu Pygame-kirjastossa niin, että ensin luodaan tekstiä vastaava kuva ja sen jälkeen piirretään kuva näytölle. Seuraava ohjelma esittelee asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nfontti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"font"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"SysFont"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arial\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nteksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/ff536f08ddabdda8d522cc90c967ca8e/pygame_teksti.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.font.SysFont"}]},{"type":"text","value":" luo fonttiolion, joka käyttää järjestelmän fonttia Arial kokona 24. Tämän jälkeen olion metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"render"}]},{"type":"text","value":" luo kuvan, jossa lukee teksti \"Moikka!\" punaisella värillä, ja tämä kuva piirretään ikkunaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että eri järjestelmissä on saatavilla eri fontit. Jos järjestelmässä ei ole fonttia Arial (mikä tosin on yleinen fontti), yllä oleva koodi käyttää sen sijasta järjestelmän oletusfonttia. Toinen mahdollisuus on käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.font.Font"}]},{"type":"text","value":", jolle annetaan hakemistossa olevan fonttitiedoston nimi."}]},{"type":"element","tagName":"h2","properties":{"id":"tehtavat","style":"position:relative;"},"children":[{"type":"text","value":"Tehtävät"},{"type":"element","tagName":"a","properties":{"href":"#tehtavat","ariaLabel":"tehtavat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on pari vaikeampaa tehtävää, joiden avulla voit harjoitella lisää tämän luvun asioita."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kello","tmcname":"osa13-16_kello"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka näyttää graafisesti kellonajan. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/0e95a9664e02d0dd939be3ebfd4725d5/pygame_kello.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Asteroidit","tmcname":"osa13-17_asteroidit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee peli, jossa pelaaja ohjaa robottia vasemmalle ja oikealle ja tavoitteena on kerätä taivaalta putoavia asteroideja. Pelaaja saa pisteen jokaisesta kerätystä asteroidista, ja pistemäärä näytetään ikkunan ylälaidassa. Peli päättyy, kun pelaaja ei saa kiinni asteroidia. Pelin tulisi näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/589bb5f7fafc7f948dfab758f0bd6273/pygame_asteroidit.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on asteroidia varten kuvatiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kivi.png"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten ikkunan otsikkoa voi muuttaa
    • \n
    • Osaat piirtää kuvioita Pygamessa
    • \n
    • Osaat piirtää ikkunaan myös tekstiä
    • \n

    Ikkunan otsikko

    Ohjelma näyttää ammattimaisemmalta, jos ikkunan otsikkopalkissa ei lue \"pygame window\" vaan ohjelman todellinen nimi. Tämä onnistuu näin:

    pygame.display.set_caption(\"Suuri seikkailu\")

    Kuvioiden piirtäminen

    Seuraava ohjelma luo kuvan, jossa on suorakulmio, ympyrä ja viiva:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\nnaytto.fill((0, 0, 0))\n\npygame.draw.rect(naytto, (0, 255, 0), (50, 100, 200, 250))\npygame.draw.circle(naytto, (255, 0, 0), (200, 150), 40)\npygame.draw.line(naytto, (0, 0, 255), (80, 120), (300, 160), 2)\n\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman tulos näyttää tältä:

    Tekstin piirtäminen

    Tekstin piirtäminen tapahtuu Pygame-kirjastossa niin, että ensin luodaan tekstiä vastaava kuva ja sen jälkeen piirretään kuva näytölle. Seuraava ohjelma esittelee asiaa:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\nnaytto.fill((0, 0, 0))\n\nfontti = pygame.font.SysFont(\"Arial\", 24)\nteksti = fontti.render(\"Moikka!\", True, (255, 0, 0))\nnaytto.blit(teksti, (100, 50))\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman suoritus näyttää seuraavalta:

    Tässä metodi pygame.font.SysFont luo fonttiolion, joka käyttää järjestelmän fonttia Arial kokona 24. Tämän jälkeen olion metodi render luo kuvan, jossa lukee teksti \"Moikka!\" punaisella värillä, ja tämä kuva piirretään ikkunaan.

    Huomaa, että eri järjestelmissä on saatavilla eri fontit. Jos järjestelmässä ei ole fonttia Arial (mikä tosin on yleinen fontti), yllä oleva koodi käyttää sen sijasta järjestelmän oletusfonttia. Toinen mahdollisuus on käyttää metodia pygame.font.Font, jolle annetaan hakemistossa olevan fonttitiedoston nimi.

    Tehtävät

    Tässä on pari vaikeampaa tehtävää, joiden avulla voit harjoitella lisää tämän luvun asioita.

    Tee ohjelma, joka näyttää graafisesti kellonajan. Ohjelman suorituksen tulee näyttää tältä:

    Tee peli, jossa pelaaja ohjaa robottia vasemmalle ja oikealle ja tavoitteena on kerätä taivaalta putoavia asteroideja. Pelaaja saa pisteen jokaisesta kerätystä asteroidista, ja pistemäärä näytetään ikkunan ylälaidassa. Peli päättyy, kun pelaaja ei saa kiinni asteroidia. Pelin tulisi näyttää tältä:

    Tehtäväpohjassa on asteroidia varten kuvatiedosto kivi.png.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/4-lisaa-tekniikoita.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten ikkunan otsikkoa voi muuttaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat piirtää kuvioita Pygamessa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat piirtää ikkunaan myös tekstiä"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"ikkunan-otsikko","style":"position:relative;"},"children":[{"type":"text","value":"Ikkunan otsikko"},{"type":"element","tagName":"a","properties":{"href":"#ikkunan-otsikko","ariaLabel":"ikkunan otsikko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma näyttää ammattimaisemmalta, jos ikkunan otsikkopalkissa ei lue \"pygame window\" vaan ohjelman todellinen nimi. Tämä onnistuu näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_caption"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suuri seikkailu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"kuvioiden-piirtaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kuvioiden piirtäminen"},{"type":"element","tagName":"a","properties":{"href":"#kuvioiden-piirtaminen","ariaLabel":"kuvioiden piirtaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma luo kuvan, jossa on suorakulmio, ympyrä ja viiva:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rect"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"250"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"circle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"150"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"line"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"80"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"120"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"300"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"160"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulos näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/9a7380e2e818c94a080d41344f073d5a/pygame_kuviot.gif"},"children":[]},{"type":"element","tagName":"h2","properties":{"id":"tekstin-piirtaminen","style":"position:relative;"},"children":[{"type":"text","value":"Tekstin piirtäminen"},{"type":"element","tagName":"a","properties":{"href":"#tekstin-piirtaminen","ariaLabel":"tekstin piirtaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tekstin piirtäminen tapahtuu Pygame-kirjastossa niin, että ensin luodaan tekstiä vastaava kuva ja sen jälkeen piirretään kuva näytölle. Seuraava ohjelma esittelee asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"640"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"480"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nfontti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"font"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"SysFont"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arial\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nteksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnaytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää seuraavalta:"}]},{"type":"element","tagName":"img","properties":{"src":"/ff536f08ddabdda8d522cc90c967ca8e/pygame_teksti.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.font.SysFont"}]},{"type":"text","value":" luo fonttiolion, joka käyttää järjestelmän fonttia Arial kokona 24. Tämän jälkeen olion metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"render"}]},{"type":"text","value":" luo kuvan, jossa lukee teksti \"Moikka!\" punaisella värillä, ja tämä kuva piirretään ikkunaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että eri järjestelmissä on saatavilla eri fontit. Jos järjestelmässä ei ole fonttia Arial (mikä tosin on yleinen fontti), yllä oleva koodi käyttää sen sijasta järjestelmän oletusfonttia. Toinen mahdollisuus on käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pygame.font.Font"}]},{"type":"text","value":", jolle annetaan hakemistossa olevan fonttitiedoston nimi."}]},{"type":"element","tagName":"h2","properties":{"id":"tehtavat","style":"position:relative;"},"children":[{"type":"text","value":"Tehtävät"},{"type":"element","tagName":"a","properties":{"href":"#tehtavat","ariaLabel":"tehtavat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on pari vaikeampaa tehtävää, joiden avulla voit harjoitella lisää tämän luvun asioita."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kello","tmcname":"osa13-16_kello"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka näyttää graafisesti kellonajan. Ohjelman suorituksen tulee näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/0e95a9664e02d0dd939be3ebfd4725d5/pygame_kello.gif"},"children":[]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Asteroidit","tmcname":"osa13-17_asteroidit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee peli, jossa pelaaja ohjaa robottia vasemmalle ja oikealle ja tavoitteena on kerätä taivaalta putoavia asteroideja. Pelaaja saa pisteen jokaisesta kerätystä asteroidista, ja pistemäärä näytetään ikkunan ylälaidassa. Peli päättyy, kun pelaaja ei saa kiinni asteroidia. Pelin tulisi näyttää tältä:"}]},{"type":"element","tagName":"img","properties":{"src":"/589bb5f7fafc7f948dfab758f0bd6273/pygame_asteroidit.gif"},"children":[]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on asteroidia varten kuvatiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kivi.png"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten ikkunan otsikkoa voi muuttaa
    • \n
    • Osaat piirtää kuvioita Pygamessa
    • \n
    • Osaat piirtää ikkunaan myös tekstiä
    • \n

    Ikkunan otsikko

    Ohjelma näyttää ammattimaisemmalta, jos ikkunan otsikkopalkissa ei lue \"pygame window\" vaan ohjelman todellinen nimi. Tämä onnistuu näin:

    pygame.display.set_caption(\"Suuri seikkailu\")

    Kuvioiden piirtäminen

    Seuraava ohjelma luo kuvan, jossa on suorakulmio, ympyrä ja viiva:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\nnaytto.fill((0, 0, 0))\n\npygame.draw.rect(naytto, (0, 255, 0), (50, 100, 200, 250))\npygame.draw.circle(naytto, (255, 0, 0), (200, 150), 40)\npygame.draw.line(naytto, (0, 0, 255), (80, 120), (300, 160), 2)\n\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman tulos näyttää tältä:

    Tekstin piirtäminen

    Tekstin piirtäminen tapahtuu Pygame-kirjastossa niin, että ensin luodaan tekstiä vastaava kuva ja sen jälkeen piirretään kuva näytölle. Seuraava ohjelma esittelee asiaa:

    import pygame\n\npygame.init()\nnaytto = pygame.display.set_mode((640, 480))\nnaytto.fill((0, 0, 0))\n\nfontti = pygame.font.SysFont(\"Arial\", 24)\nteksti = fontti.render(\"Moikka!\", True, (255, 0, 0))\nnaytto.blit(teksti, (100, 50))\npygame.display.flip()\n\nwhile True:\n    for tapahtuma in pygame.event.get():\n        if tapahtuma.type == pygame.QUIT:\n            exit()

    Ohjelman suoritus näyttää seuraavalta:

    Tässä metodi pygame.font.SysFont luo fonttiolion, joka käyttää järjestelmän fonttia Arial kokona 24. Tämän jälkeen olion metodi render luo kuvan, jossa lukee teksti \"Moikka!\" punaisella värillä, ja tämä kuva piirretään ikkunaan.

    Huomaa, että eri järjestelmissä on saatavilla eri fontit. Jos järjestelmässä ei ole fonttia Arial (mikä tosin on yleinen fontti), yllä oleva koodi käyttää sen sijasta järjestelmän oletusfonttia. Toinen mahdollisuus on käyttää metodia pygame.font.Font, jolle annetaan hakemistossa olevan fonttitiedoston nimi.

    Tehtävät

    Tässä on pari vaikeampaa tehtävää, joiden avulla voit harjoitella lisää tämän luvun asioita.

    Tee ohjelma, joka näyttää graafisesti kellonajan. Ohjelman suorituksen tulee näyttää tältä:

    Tee peli, jossa pelaaja ohjaa robottia vasemmalle ja oikealle ja tavoitteena on kerätä taivaalta putoavia asteroideja. Pelaaja saa pisteen jokaisesta kerätystä asteroidista, ja pistemäärä näytetään ikkunan ylälaidassa. Peli päättyy, kun pelaaja ei saa kiinni asteroidia. Pelin tulisi näyttää tältä:

    Tehtäväpohjassa on asteroidia varten kuvatiedosto kivi.png.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/4-lisaa-tekniikoita.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-13/page-data.json b/page-data/osa-13/page-data.json index ba1d99150..f8614e4dd 100644 --- a/page-data/osa-13/page-data.json +++ b/page-data/osa-13/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-13", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-13","title":"Osa 13"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-13","title":"Osa 13"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-13/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-14/1-peliprojekti/page-data.json b/page-data/osa-14/1-peliprojekti/page-data.json index 4bff4edca..c97393e43 100644 --- a/page-data/osa-14/1-peliprojekti/page-data.json +++ b/page-data/osa-14/1-peliprojekti/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-14/1-peliprojekti", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä osassa tehdään Pygamen avulla hieman laajempi peli, joka on muunnelma perinteisestä Sokoban-pelistä. Pelaaja ohjaa ruudukossa olevaa robottia, jonka tehtävänä on työntää laatikot oikeille paikoille käyttäen mahdollisimman vähän siirtoja."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopullinen peli tulee näyttämään tältä:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 852px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e334a0f0fea9438564e48d0bba7cbbc4/47ff6/peli.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 44.34782608695652%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAACGUlEQVQozyWO0UsaAQCH73RHlgm10ztbJUEvkkIzzrsHxRPShx56LUYRkqVPC2rhqZ2iKGiEiFDsdAX2T0SshxhGk/J9hG+tWlIRBA41xm+4fY+/7+H7EbFYLBQKybKcSqWi0agkSfF4PJlMbm5urq9vJBIJeWtLkqRYLJZOpyVJikQi4XBYluVMJkOYzWaP12u323t6epxOp9frHR4eHhkZmZ6eFkVRq9VOcdzMzMz4+Pjg4KAoim632+PxGI1GjuOIvb09ALVajef5x8dHAH6/f2lpCUCj0TCZTOfn5wD29/dnZ2cBtNttAKurq1arlSgmk/fV6tfT09/N5sPzM4AVv39hcRHAz+vr0bGx7+Xyj8vL6sVFs9l8eXl5enoCEAgEbDYbkd/ZAfCtUnGL4kOlUj07q9Zqv66u7iuV45OTer3euLn58/paKpXm5+dbrdb/dz6fr1tWFAXA8dHRu6Gh57s7AJ8V5UuxCOD29vbTxka9XgeQz+c5jgPQ6XQABIPByclJ4sPCwu7u7sry8qjJlM5my4eHgiBwdnvp4CC7va3T6T6urZXL5bm5OYvFUigUcrmcoigul0sQBEJDUQRBUG+6qMku/RpNf19fd1Srdb29lEqlJkmKojQazT9PqlQqkiR5niem9HoLy7IGg4GmLQxjZVlerx+laRPLvmcYM00LDDPBsm+7nmZZlmEYo9E4MDDgcDj+AisL8KSDCe9vAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e334a0f0fea9438564e48d0bba7cbbc4/a0b58/peli.webp 230w","/static/e334a0f0fea9438564e48d0bba7cbbc4/bc10c/peli.webp 460w","/static/e334a0f0fea9438564e48d0bba7cbbc4/39392/peli.webp 852w"],"sizes":"(max-width: 852px) 100vw, 852px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e334a0f0fea9438564e48d0bba7cbbc4/81c8e/peli.png 230w","/static/e334a0f0fea9438564e48d0bba7cbbc4/08a84/peli.png 460w","/static/e334a0f0fea9438564e48d0bba7cbbc4/47ff6/peli.png 852w"],"sizes":"(max-width: 852px) 100vw, 852px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e334a0f0fea9438564e48d0bba7cbbc4/47ff6/peli.png","alt":"peli","title":"peli","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"pelin-pohja","style":"position:relative;"},"children":[{"type":"text","value":"Pelin pohja"},{"type":"element","tagName":"a","properties":{"href":"#pelin-pohja","ariaLabel":"pelin pohja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aloitetaan tekemällä pelille pohja, joka piirtää näkyviin pelin aloitustilanteen. Toteutamme pelin luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sokoban"}]},{"type":"text","value":", jonka sisällä on pelissä tarvittavat toiminnot. Ensimmäisessä vaiheessa luokan sisältö on seuraava:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sokoban"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"uusi_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n nayton_korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus\n nayton_leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nayton_leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nayton_korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_caption"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sokoban\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"silmukka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lattia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohde\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"laatikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"valmis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohderobo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"silmukka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tutki_tapahtumat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"piirra_naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"ruutu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n Sokoban"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä saa aikaan ikkunan, jossa on pelin aloitustilanne. Katsotaan seuraavaksi tarkemmin luokassa olevaa koodia."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"konstruktori","style":"position:relative;"},"children":[{"type":"text","value":"Konstruktori"},{"type":"element","tagName":"a","properties":{"href":"#konstruktori","ariaLabel":"konstruktori permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan konstruktori aloittaa Pygamen käyttämisen, alustaa pelissä tarvittavia muuttujia ja tietorakenteita sekä lopuksi kutsuu metodia, jossa on pelin pääsilmukka."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"uusi_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n nayton_korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus\n nayton_leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nayton_leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nayton_korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_caption"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sokoban\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"silmukka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"text","value":" lataa listaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kuvat"}]},{"type":"text","value":" pelin käyttämät kuvat ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"text","value":" luo kaksiulotteisen listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kartta"}]},{"type":"text","value":", jossa on kuvattu ruudukon sisältö alussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"korkeus"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"leveys"}]},{"type":"text","value":" laitetaan ruudukon korkeus ja leveys ja muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"skaala"}]},{"type":"text","value":" laitetaan yhden ruudun koko. Koska jokainen kuva on neliön muotoinen ja yhtä suuri, ruudun koko saadaan hakemalla ensimmäisen kuvan leveys. Tämän avulla saadaan laskettua näytön korkeus ja leveys, minkä avulla voidaan luoda sopivan kokoinen ikkuna pelille."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"kuvien-lataaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kuvien lataaminen"},{"type":"element","tagName":"a","properties":{"href":"#kuvien-lataaminen","ariaLabel":"kuvien lataaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"text","value":" lataa pelin tarvitsemat kuvat:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lattia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohde\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"laatikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"valmis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohderobo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelissä on käytössä seuraavat kuvat:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"lattiaruutu","style":"position:relative;"},"children":[{"type":"text","value":"Lattiaruutu"},{"type":"element","tagName":"a","properties":{"href":"#lattiaruutu","ariaLabel":"lattiaruutu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9aefcdf4192b60fb3bf21288d49a0bd5/a1812/lattia.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAO0lEQVQ4y2M4dOjQ/7Nnz1IFg8xiADGoBUBmwQ389+8fRZh+BpIKRg0cNXDUwMFp4OAtbahWwFK7CgAAGH0Lv64YzdcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9aefcdf4192b60fb3bf21288d49a0bd5/6ac13/lattia.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9aefcdf4192b60fb3bf21288d49a0bd5/a1812/lattia.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9aefcdf4192b60fb3bf21288d49a0bd5/a1812/lattia.png","alt":"lattia","title":"lattia","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lattia.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 0"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"seinaruutu","style":"position:relative;"},"children":[{"type":"text","value":"Seinäruutu"},{"type":"element","tagName":"a","properties":{"href":"#seinaruutu","ariaLabel":"seinaruutu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/73ec5a44eba6d09dfe097ba346137a94/a1812/seina.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAASElEQVQ4y+3VMQoAMAgDwPhX/YSft0RwLrQZHQI6eGNEZpa7V0R8hQYtcAAgSVvUuZjZMzS3bQ2oyIILLrjgHZTVl7xg1S/gAHx86WTsjKFcAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73ec5a44eba6d09dfe097ba346137a94/6ac13/seina.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73ec5a44eba6d09dfe097ba346137a94/a1812/seina.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/73ec5a44eba6d09dfe097ba346137a94/a1812/seina.png","alt":"seina","title":"seina","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"seina.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 1"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"kohderuutu","style":"position:relative;"},"children":[{"type":"text","value":"Kohderuutu"},{"type":"element","tagName":"a","properties":{"href":"#kohderuutu","ariaLabel":"kohderuutu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/a1812/kohde.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABHElEQVQ4y7WVPQ6CUAzHWRw0yBG8gfEK3oCJlRNwB2/gBZzZPAU7I0zsbmiigQjav6nlgS+CUyVp0lfa3+vH4+EkSYI0TVWEWQ4rWg+zeiAR2fJ8gu53EL8z0ragpvn2JfoBZP3xGCBsK0vQ5WLbeMOPuHEgK00j+Z9OwG4HrNfAbAYsFoDvA3E81Gg2ngS2rThmGbBcAo4j4nmA6w7rIOiZ70xHgd1uyHPJhgPDUNa3G3C9AscjsNlY0OmSDXC7lYD9fnqcBhrHUnLXJhvIUhTiuFoBVSXB3AbOgKWuxcaZsp/v99O3gaa5h4M4RpEEmgEZYFfau3zu6XwOOp9BX+dQHahe8l+Gon5s1A/2Xz499ctB8/pSu2C1fwEvukCRvM6VtZAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/6ac13/kohde.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/a1812/kohde.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/a1812/kohde.png","alt":"kohde","title":"kohde","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Robotin tulee siirtää jokin laatikko tähän ruutuun"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"laatikko","style":"position:relative;"},"children":[{"type":"text","value":"Laatikko"},{"type":"element","tagName":"a","properties":{"href":"#laatikko","ariaLabel":"laatikko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/6e7afd4acd3f9b214a5c43273b23c834/a1812/laatikko.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAzElEQVQ4y+2VPQqEMBCFvZxVjqAWAVN4CH8KtfEQQfAk9h5DC09go295Abcx7sIyWyzswIPATL6ZgckkGMcR0zSJiKyABykj6wnc9/0jyHEcThcgbds2zPOMZVneinHruvqBZ3XDMCAMQ2itEUUR4jj2ir4kSaCUctBLyyfQWossy9B1Heq6RtM0XtHHGEJZ6S2w73ukaeouFUVxqzzPHZSVsv2XQGMM2rZFWZaoqsorQpmU7f+BvwgUHRvxwRZ7euLL4WvrS2TBSn8BD7avDfrO6ztPAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e7afd4acd3f9b214a5c43273b23c834/6ac13/laatikko.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e7afd4acd3f9b214a5c43273b23c834/a1812/laatikko.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/6e7afd4acd3f9b214a5c43273b23c834/a1812/laatikko.png","alt":"laatikko","title":"laatikko","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laatikko.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 3"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"robotti","style":"position:relative;"},"children":[{"type":"text","value":"Robotti"},{"type":"element","tagName":"a","properties":{"href":"#robotti","ariaLabel":"robotti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5fb4f02fac6c4d361c9057099bc9f890/a1812/robo.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB/klEQVQ4y5VV0WraYBjttbe+QR+iF32KXvdOWOeckVEGveqtF71qi6CusDFW6sSQJcwNklFHEcHZGfsAjdFCQCiFQew6qugZ58OUIqY1Hxw8nnP+w5+QP1mp1+uwbTsUlmWh1WoJyJ/KsmuFJGxG9/d4oyjo93oCcmphw66Hwul0KphMJvLf8zx8Oj5G/uQEFVUVkFOjx2E2WPdsYdd18S6Xw/v1dXwtlwXk1OhFLnT7fXw4OsLHjQ2Yug7TMIRToxe50HEcfC6XYZ2f47tpCsip0Ytc2Lu6QuHwEJl4HMlYDK9iMSjxuGj0ol8y72GhgNzuLrKKIiCn5i57D4MQZ+j70DQNVdNEMpMRkFOj9zj75A7l+RuNkM1mUSwW8a1axRdNE5BTo8fM/LrQQt/3kUgkUKlU5ITwBBDk1Oj5s10uVTgcDpFKpVAqldBoNFCr1QTk1OgxE6nwxdYWVFVFs9l82CE5NXqRCv/e3iKztob8/j5+np1B13UBef7gQDxmlioMzGvPww/LQjqdhmEYAnJq17OzPL8mdIfBL+d1MonBYCAgD+ZxdulCPhgvd3bkZUCQj6IWBua/8Ri/9vbwdnUV7uWlgJwavWcveX7uxmOcbm/jdHMTf25uBOTU7maFC1+wiz4B7XYbHdtGx3Hwu9tF5+JCINxxxGNm0SfgP7rpf7Qvj0ecAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5fb4f02fac6c4d361c9057099bc9f890/6ac13/robo.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5fb4f02fac6c4d361c9057099bc9f890/a1812/robo.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5fb4f02fac6c4d361c9057099bc9f890/a1812/robo.png","alt":"robo","title":"robo","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 4"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"laatikko-kohderuudussa","style":"position:relative;"},"children":[{"type":"text","value":"Laatikko kohderuudussa"},{"type":"element","tagName":"a","properties":{"href":"#laatikko-kohderuudussa","ariaLabel":"laatikko kohderuudussa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/15225a12ccfe0e42a543bea73f4ff889/a1812/valmis.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABk0lEQVQ4y7WVPWsCQRCG7UTEX5Em/0IQbLS18gM80MLOIpgYb/fOu9mNcpD8g4hglzZtCNjbpkqrhV0IITb6hllivrzEDy4LL7dwew8zs+/MxcbjMSaTSSRiVow3US1mfQCXy+VBkNVqZbQB5LVYLDCdTjGbzbaKz83n83DgOrrRaIRsNgvLslAqlVAul0PF7yqVCvL5vIFupLwGDgYDNBoNBEEAIoJS6pu075unT2TOMJQj/RU4HA5Rq9XMR1LKTzkOHCFwphRs14UUwkA5Uk7/T2C9XofWGo7jwGWQ66IrJU57PdzmcrjLZNAmgiYy6e8FZJAnhIGNikU8J5O4ajbR8bzDgB0inCuFfquFp1QK15aFVr8PVwhTlt2BXCvPw6BahW638XB8jPt0GidBYCLmmu4FvFAKZ1rj8egIr/G4Adq+b2rK4ovaC9gjMsCbQgEviQQuuW5EpqZ8SXsBv9rGkRJd24bd7Zq9fI9OCGF8utU2YcYmraF+mJx2NXZo64W04NbWi3w4/Nv4imTARv0LeAO8hwm47qNppgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/15225a12ccfe0e42a543bea73f4ff889/6ac13/valmis.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/15225a12ccfe0e42a543bea73f4ff889/a1812/valmis.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/15225a12ccfe0e42a543bea73f4ff889/a1812/valmis.png","alt":"valmis","title":"valmis","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"valmis.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Laatikko on saatu siirrettyä kohderuutuun"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"kohderuutu-ja-robotti","style":"position:relative;"},"children":[{"type":"text","value":"Kohderuutu ja robotti"},{"type":"element","tagName":"a","properties":{"href":"#kohderuutu-ja-robotti","ariaLabel":"kohderuutu ja robotti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/70f904da050def3ee01b9b01b0b50b16/a1812/kohderobo.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC2klEQVQ4y41VXUsiURiemyANL7wRgm4q6D9U0B+IgrroIvrAqDVNWWKLrK66qD9gVEOrbF9axvSlSxq2hS1tVtoH1NWoSwlLdhEkFY3ps5wz4/bl2B54Zp55z/s+877nnHeG8fv9CAaDsvB6vQgEAhSE5/IlWgwhckN4fMRnoxG/o1EKwolNbhCtf4LpdJoilUrR59jlJaZnZjA2Nwfn4iIF4cQWi8WoD/HNxH0oGL64ADs6Cmt5Odbm5ymsFRVgLRaEef4/BYmTVFLk5AS28XF8q6uDZ3kZnpUVym0si0g8LgomkzRGXjCZBM3v+Bh8SQkcHAfv/j6+ezwU3oMDOBwO8DqdKEjipCzfCz49iRmenwN5eYgqFBi3WmFSq6FTKtGpVMKoVlNblGGA2lpRULbkjGBVFcAwiJhMYB0OWMxmDBuNFJaBAbBTU4gUFVGf1OysWLIgZBEkF55Hiry9tBSJeBzc6ipc6+vQmUwULrcbnM+HhNUqCtbUiLHJ5BtBKbv05CR1FDo7McyymLBY4Ha5sMRxFO61NUx8/YrhwUEI+flAQQHSNzdiMrkEb1tboe3thdNupx1COoAgsLcH59IStPX1uCWVqFQyglLJaXK+GAYJjQZ6rRb2hQX83NnB5uYmBeF2pxP65mYkiGB1tRj3ruQXm4LKSurc3tSERY7Dr91d+Le3KQgntvaWFlFwejrHpmQEz85wp1LBpNFgzG7Hj60tLHu9FIST9jMpFLhraHjVYbIHm06FQoiXlWGjvx9dej1WhoYougwGbPT1IW40Pi+T7MGWWg+CIN6vroCeHhg6OvCnsJDC0NYG2GzPxyyzmbk+Di/PFVmZT2YzwqenFIQL0o6SJfq45BeTD4KAvZERfCkuRiQSoSCc2B6kF76NeSX4dtwnk/B1d8PX2Iib62sKwontXhLM+oHN9gs4PDxEKBhEiOdxEA4jdHREQTnP0znik+0X8BeOmjrCN4yzpAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/70f904da050def3ee01b9b01b0b50b16/6ac13/kohderobo.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/70f904da050def3ee01b9b01b0b50b16/a1812/kohderobo.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/70f904da050def3ee01b9b01b0b50b16/a1812/kohderobo.png","alt":"kohderobo","title":"kohderobo","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohderobo.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Robotti voi myös olla kohderuudussa"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"ruudukon-luonti","style":"position:relative;"},"children":[{"type":"text","value":"Ruudukon luonti"},{"type":"element","tagName":"a","properties":{"href":"#ruudukon-luonti","ariaLabel":"ruudukon luonti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"text","value":" muodostaa ruudukon aloitustilanteen:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi luo kaksiulotteisen listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kartta"}]},{"type":"text","value":", jossa käytetään kuvien tunnuksia samassa järjestyksessä kuin kuvat on ladattu listaan. Tämän avulla pelin muistissa on tieto siitä, mikä on ruudukon tilanne tällä hetkellä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jokainen ruudukon luku on alussa välillä 0–4. Missään ruudussa ei ole lukua 5 tai 6, koska mikään laatikko tai robotti ei ole alussa kohderuudussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"pelisilmukka","style":"position:relative;"},"children":[{"type":"text","value":"Pelisilmukka"},{"type":"element","tagName":"a","properties":{"href":"#pelisilmukka","ariaLabel":"pelisilmukka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelisilmukka kutsuu joka kierroksella kahta metodia: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"text","value":" käy läpi viime kierroksen jälkeen syntyneet tapahtumat ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"text","value":" päivittää näytön sisällön."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"silmukka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tutki_tapahtumat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"piirra_naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"ruutu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä hetkellä ainoa pelin tunnistama tapahtuma on pelin sulkeminen (esimerkiksi pelaaja painaa ikkunassa olevaa raksia). Tässä tilanteessa peli sulkee itsensä kutsumalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":"-funktiota."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näytön piirtäminen toteutetaan käymällä ruudukon sisältö ja piirtämällä jokaista ruutua vastaava kuva oikeaan paikkaan."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että koordinaatteja x ja y käytetään eri päin eri tilanteissa. Kaksiulotteisen listan indeksoinnissa on luontevaa antaa ensin y ja sitten x, koska ensimmäinen indeksi tarkoittaa riviä ja toinen indeksi tarkoittaa saraketta. Kuitenkin Pygamen metodeissa annetaan ensin x ja y, kuten grafiikassa on yleensä tapana."}]}],"data":{"quirksMode":false}},"html":"

    Tässä osassa tehdään Pygamen avulla hieman laajempi peli, joka on muunnelma perinteisestä Sokoban-pelistä. Pelaaja ohjaa ruudukossa olevaa robottia, jonka tehtävänä on työntää laatikot oikeille paikoille käyttäen mahdollisimman vähän siirtoja.

    \n

    Lopullinen peli tulee näyttämään tältä:

    \n\n \n \n \n \n \n \"peli\"\n \n \n \n

    Pelin pohja

    \n

    Aloitetaan tekemällä pelille pohja, joka piirtää näkyviin pelin aloitustilanteen. Toteutamme pelin luokkaan Sokoban, jonka sisällä on pelissä tarvittavat toiminnot. Ensimmäisessä vaiheessa luokan sisältö on seuraava:

    \n
    import pygame\n\nclass Sokoban:\n    def __init__(self):\n        pygame.init()\n        \n        self.lataa_kuvat()\n        self.uusi_peli()\n        \n        self.korkeus = len(self.kartta)\n        self.leveys = len(self.kartta[0])\n        self.skaala = self.kuvat[0].get_width()\n\n        nayton_korkeus = self.skaala * self.korkeus\n        nayton_leveys = self.skaala * self.leveys\n        self.naytto = pygame.display.set_mode((nayton_leveys, nayton_korkeus))\n\n        pygame.display.set_caption(\"Sokoban\")\n\n        self.silmukka()\n\n    def lataa_kuvat(self):\n        self.kuvat = []\n        for nimi in [\"lattia\", \"seina\", \"kohde\", \"laatikko\", \"robo\", \"valmis\", \"kohderobo\"]:\n            self.kuvat.append(pygame.image.load(nimi + \".png\"))\n\n    def uusi_peli(self):\n        self.kartta = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n                       [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 2, 3, 0, 0, 0, 1, 0, 0, 1, 2, 3, 0, 0, 0, 0, 1],\n                       [1, 0, 0, 1, 2, 3, 0, 2, 3, 0, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 0, 4, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]\n\n    def silmukka(self):\n        while True:\n            self.tutki_tapahtumat()\n            self.piirra_naytto()\n\n    def tutki_tapahtumat(self):\n        for tapahtuma in pygame.event.get():\n            if tapahtuma.type == pygame.QUIT:\n                exit()\n\n    def piirra_naytto(self):\n        self.naytto.fill((0, 0, 0))\n\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                ruutu = self.kartta[y][x]\n                self.naytto.blit(self.kuvat[ruutu], (x * self.skaala, y * self.skaala))\n\n        pygame.display.flip()\n\nif __name__ == \"__main__\":\n    Sokoban()
    \n

    Tämä saa aikaan ikkunan, jossa on pelin aloitustilanne. Katsotaan seuraavaksi tarkemmin luokassa olevaa koodia.

    \n

    Konstruktori

    \n

    Luokan konstruktori aloittaa Pygamen käyttämisen, alustaa pelissä tarvittavia muuttujia ja tietorakenteita sekä lopuksi kutsuu metodia, jossa on pelin pääsilmukka.

    \n
        def __init__(self):\n        pygame.init()\n        \n        self.lataa_kuvat()\n        self.uusi_peli()\n        \n        self.korkeus = len(self.kartta)\n        self.leveys = len(self.kartta[0])\n        self.skaala = self.kuvat[0].get_width()\n\n        nayton_korkeus = self.skaala * self.korkeus\n        nayton_leveys = self.skaala * self.leveys\n        self.naytto = pygame.display.set_mode((nayton_leveys, nayton_korkeus))\n\n        pygame.display.set_caption(\"Sokoban\")\n\n        self.silmukka()
    \n

    Metodi lataa_kuvat lataa listaan kuvat pelin käyttämät kuvat ja metodi uusi_peli luo kaksiulotteisen listan kartta, jossa on kuvattu ruudukon sisältö alussa.

    \n

    Tämän jälkeen muuttujiin korkeus ja leveys laitetaan ruudukon korkeus ja leveys ja muuttujaan skaala laitetaan yhden ruudun koko. Koska jokainen kuva on neliön muotoinen ja yhtä suuri, ruudun koko saadaan hakemalla ensimmäisen kuvan leveys. Tämän avulla saadaan laskettua näytön korkeus ja leveys, minkä avulla voidaan luoda sopivan kokoinen ikkuna pelille.

    \n

    Kuvien lataaminen

    \n

    Metodi lataa_kuvat lataa pelin tarvitsemat kuvat:

    \n
        def lataa_kuvat(self):\n        self.kuvat = []\n        for nimi in [\"lattia\", \"seina\", \"kohde\", \"laatikko\", \"robo\", \"valmis\", \"kohderobo\"]:\n            self.kuvat.append(pygame.image.load(nimi + \".png\"))
    \n

    Pelissä on käytössä seuraavat kuvat:

    \n

    Lattiaruutu

    \n\n \n \n \n \n \n \"seina\"\n \n \n \n
      \n
    • Tiedoston nimi seina.png
    • \n
    • Sijainti listalla 1
    • \n
    \n

    Kohderuutu

    \n\n \n \n \n \n \n \"laatikko\"\n \n \n \n
      \n
    • Tiedoston nimi laatikko.png
    • \n
    • Sijainti listalla 3
    • \n
    \n

    Robotti

    \n\n \n \n \n \n \n \"robo\"\n \n \n \n
      \n
    • Tiedoston nimi robo.png
    • \n
    • Sijainti listalla 4
    • \n
    \n

    Laatikko kohderuudussa

    \n\n \n \n \n \n \n \"valmis\"\n \n \n \n
      \n
    • Tiedoston nimi valmis.png
    • \n
    • Sijainti listalla 5
    • \n
    • Laatikko on saatu siirrettyä kohderuutuun
    • \n
    \n

    Kohderuutu ja robotti

    \n\n \n \n \n \n \n \"kohderobo\"\n \n \n \n
      \n
    • Tiedoston nimi kohderobo.png
    • \n
    • Sijainti listalla 6
    • \n
    • Robotti voi myös olla kohderuudussa
    • \n
    \n

    Ruudukon luonti

    \n

    Metodi uusi_peli muodostaa ruudukon aloitustilanteen:

    \n
        def uusi_peli(self):\n        self.kartta = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n                       [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 2, 3, 0, 0, 0, 1, 0, 0, 1, 2, 3, 0, 0, 0, 0, 1],\n                       [1, 0, 0, 1, 2, 3, 0, 2, 3, 0, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 0, 4, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
    \n

    Metodi luo kaksiulotteisen listan kartta, jossa käytetään kuvien tunnuksia samassa järjestyksessä kuin kuvat on ladattu listaan. Tämän avulla pelin muistissa on tieto siitä, mikä on ruudukon tilanne tällä hetkellä.

    \n

    Huomaa, että jokainen ruudukon luku on alussa välillä 0–4. Missään ruudussa ei ole lukua 5 tai 6, koska mikään laatikko tai robotti ei ole alussa kohderuudussa.

    \n

    Pelisilmukka

    \n

    Pelisilmukka kutsuu joka kierroksella kahta metodia: tutki_tapahtumat käy läpi viime kierroksen jälkeen syntyneet tapahtumat ja piirra_naytto päivittää näytön sisällön.

    \n
        def silmukka(self):\n        while True:\n            self.tutki_tapahtumat()\n            self.piirra_naytto()\n\n    def tutki_tapahtumat(self):\n        for tapahtuma in pygame.event.get():\n            if tapahtuma.type == pygame.QUIT:\n                exit()\n\n    def piirra_naytto(self):\n        self.naytto.fill((0, 0, 0))\n\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                ruutu = self.kartta[y][x]\n                self.naytto.blit(self.kuvat[ruutu], (x * self.skaala, y * self.skaala))\n\n        pygame.display.flip()
    \n

    Tällä hetkellä ainoa pelin tunnistama tapahtuma on pelin sulkeminen (esimerkiksi pelaaja painaa ikkunassa olevaa raksia). Tässä tilanteessa peli sulkee itsensä kutsumalla exit-funktiota.

    \n

    Näytön piirtäminen toteutetaan käymällä ruudukon sisältö ja piirtämällä jokaista ruutua vastaava kuva oikeaan paikkaan.

    \n

    Huomaa, että koordinaatteja x ja y käytetään eri päin eri tilanteissa. Kaksiulotteisen listan indeksoinnissa on luontevaa antaa ensin y ja sitten x, koska ensimmäinen indeksi tarkoittaa riviä ja toinen indeksi tarkoittaa saraketta. Kuitenkin Pygamen metodeissa annetaan ensin x ja y, kuten grafiikassa on yleensä tapana.

    ","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/1-peliprojekti.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä osassa tehdään Pygamen avulla hieman laajempi peli, joka on muunnelma perinteisestä Sokoban-pelistä. Pelaaja ohjaa ruudukossa olevaa robottia, jonka tehtävänä on työntää laatikot oikeille paikoille käyttäen mahdollisimman vähän siirtoja."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopullinen peli tulee näyttämään tältä:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 852px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e334a0f0fea9438564e48d0bba7cbbc4/47ff6/peli.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 44.34782608695652%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAACGUlEQVQozyWO0UsaAQCH73RHlgm10ztbJUEvkkIzzrsHxRPShx56LUYRkqVPC2rhqZ2iKGiEiFDsdAX2T0SshxhGk/J9hG+tWlIRBA41xm+4fY+/7+H7EbFYLBQKybKcSqWi0agkSfF4PJlMbm5urq9vJBIJeWtLkqRYLJZOpyVJikQi4XBYluVMJkOYzWaP12u323t6epxOp9frHR4eHhkZmZ6eFkVRq9VOcdzMzMz4+Pjg4KAoim632+PxGI1GjuOIvb09ALVajef5x8dHAH6/f2lpCUCj0TCZTOfn5wD29/dnZ2cBtNttAKurq1arlSgmk/fV6tfT09/N5sPzM4AVv39hcRHAz+vr0bGx7+Xyj8vL6sVFs9l8eXl5enoCEAgEbDYbkd/ZAfCtUnGL4kOlUj07q9Zqv66u7iuV45OTer3euLn58/paKpXm5+dbrdb/dz6fr1tWFAXA8dHRu6Gh57s7AJ8V5UuxCOD29vbTxka9XgeQz+c5jgPQ6XQABIPByclJ4sPCwu7u7sry8qjJlM5my4eHgiBwdnvp4CC7va3T6T6urZXL5bm5OYvFUigUcrmcoigul0sQBEJDUQRBUG+6qMku/RpNf19fd1Srdb29lEqlJkmKojQazT9PqlQqkiR5niem9HoLy7IGg4GmLQxjZVlerx+laRPLvmcYM00LDDPBsm+7nmZZlmEYo9E4MDDgcDj+AisL8KSDCe9vAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e334a0f0fea9438564e48d0bba7cbbc4/a0b58/peli.webp 230w","/static/e334a0f0fea9438564e48d0bba7cbbc4/bc10c/peli.webp 460w","/static/e334a0f0fea9438564e48d0bba7cbbc4/39392/peli.webp 852w"],"sizes":"(max-width: 852px) 100vw, 852px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e334a0f0fea9438564e48d0bba7cbbc4/81c8e/peli.png 230w","/static/e334a0f0fea9438564e48d0bba7cbbc4/08a84/peli.png 460w","/static/e334a0f0fea9438564e48d0bba7cbbc4/47ff6/peli.png 852w"],"sizes":"(max-width: 852px) 100vw, 852px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e334a0f0fea9438564e48d0bba7cbbc4/47ff6/peli.png","alt":"peli","title":"peli","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"pelin-pohja","style":"position:relative;"},"children":[{"type":"text","value":"Pelin pohja"},{"type":"element","tagName":"a","properties":{"href":"#pelin-pohja","ariaLabel":"pelin pohja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aloitetaan tekemällä pelille pohja, joka piirtää näkyviin pelin aloitustilanteen. Toteutamme pelin luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sokoban"}]},{"type":"text","value":", jonka sisällä on pelissä tarvittavat toiminnot. Ensimmäisessä vaiheessa luokan sisältö on seuraava:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" pygame\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sokoban"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"uusi_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n nayton_korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus\n nayton_leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nayton_leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nayton_korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_caption"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sokoban\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"silmukka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lattia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohde\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"laatikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"valmis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohderobo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"silmukka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tutki_tapahtumat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"piirra_naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"ruutu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n Sokoban"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä saa aikaan ikkunan, jossa on pelin aloitustilanne. Katsotaan seuraavaksi tarkemmin luokassa olevaa koodia."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"konstruktori","style":"position:relative;"},"children":[{"type":"text","value":"Konstruktori"},{"type":"element","tagName":"a","properties":{"href":"#konstruktori","ariaLabel":"konstruktori permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan konstruktori aloittaa Pygamen käyttämisen, alustaa pelissä tarvittavia muuttujia ja tietorakenteita sekä lopuksi kutsuu metodia, jossa on pelin pääsilmukka."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"init"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"uusi_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n \n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n nayton_korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus\n nayton_leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nayton_leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nayton_korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_caption"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sokoban\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"silmukka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"text","value":" lataa listaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kuvat"}]},{"type":"text","value":" pelin käyttämät kuvat ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"text","value":" luo kaksiulotteisen listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kartta"}]},{"type":"text","value":", jossa on kuvattu ruudukon sisältö alussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"korkeus"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"leveys"}]},{"type":"text","value":" laitetaan ruudukon korkeus ja leveys ja muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"skaala"}]},{"type":"text","value":" laitetaan yhden ruudun koko. Koska jokainen kuva on neliön muotoinen ja yhtä suuri, ruudun koko saadaan hakemalla ensimmäisen kuvan leveys. Tämän avulla saadaan laskettua näytön korkeus ja leveys, minkä avulla voidaan luoda sopivan kokoinen ikkuna pelille."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"kuvien-lataaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kuvien lataaminen"},{"type":"element","tagName":"a","properties":{"href":"#kuvien-lataaminen","ariaLabel":"kuvien lataaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"text","value":" lataa pelin tarvitsemat kuvat:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_kuvat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lattia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohde\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"laatikko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"robo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"valmis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kohderobo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"image"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"load"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".png\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelissä on käytössä seuraavat kuvat:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"lattiaruutu","style":"position:relative;"},"children":[{"type":"text","value":"Lattiaruutu"},{"type":"element","tagName":"a","properties":{"href":"#lattiaruutu","ariaLabel":"lattiaruutu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9aefcdf4192b60fb3bf21288d49a0bd5/a1812/lattia.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAO0lEQVQ4y2M4dOjQ/7Nnz1IFg8xiADGoBUBmwQ389+8fRZh+BpIKRg0cNXDUwMFp4OAtbahWwFK7CgAAGH0Lv64YzdcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9aefcdf4192b60fb3bf21288d49a0bd5/6ac13/lattia.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9aefcdf4192b60fb3bf21288d49a0bd5/a1812/lattia.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9aefcdf4192b60fb3bf21288d49a0bd5/a1812/lattia.png","alt":"lattia","title":"lattia","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lattia.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 0"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"seinaruutu","style":"position:relative;"},"children":[{"type":"text","value":"Seinäruutu"},{"type":"element","tagName":"a","properties":{"href":"#seinaruutu","ariaLabel":"seinaruutu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/73ec5a44eba6d09dfe097ba346137a94/a1812/seina.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAASElEQVQ4y+3VMQoAMAgDwPhX/YSft0RwLrQZHQI6eGNEZpa7V0R8hQYtcAAgSVvUuZjZMzS3bQ2oyIILLrjgHZTVl7xg1S/gAHx86WTsjKFcAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73ec5a44eba6d09dfe097ba346137a94/6ac13/seina.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73ec5a44eba6d09dfe097ba346137a94/a1812/seina.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/73ec5a44eba6d09dfe097ba346137a94/a1812/seina.png","alt":"seina","title":"seina","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"seina.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 1"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"kohderuutu","style":"position:relative;"},"children":[{"type":"text","value":"Kohderuutu"},{"type":"element","tagName":"a","properties":{"href":"#kohderuutu","ariaLabel":"kohderuutu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/a1812/kohde.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABHElEQVQ4y7WVPQ6CUAzHWRw0yBG8gfEK3oCJlRNwB2/gBZzZPAU7I0zsbmiigQjav6nlgS+CUyVp0lfa3+vH4+EkSYI0TVWEWQ4rWg+zeiAR2fJ8gu53EL8z0ragpvn2JfoBZP3xGCBsK0vQ5WLbeMOPuHEgK00j+Z9OwG4HrNfAbAYsFoDvA3E81Gg2ngS2rThmGbBcAo4j4nmA6w7rIOiZ70xHgd1uyHPJhgPDUNa3G3C9AscjsNlY0OmSDXC7lYD9fnqcBhrHUnLXJhvIUhTiuFoBVSXB3AbOgKWuxcaZsp/v99O3gaa5h4M4RpEEmgEZYFfau3zu6XwOOp9BX+dQHahe8l+Gon5s1A/2Xz499ctB8/pSu2C1fwEvukCRvM6VtZAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/6ac13/kohde.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/a1812/kohde.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/36b1cacabf9fb62e1c67fc5e6cfa50e3/a1812/kohde.png","alt":"kohde","title":"kohde","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Robotin tulee siirtää jokin laatikko tähän ruutuun"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"laatikko","style":"position:relative;"},"children":[{"type":"text","value":"Laatikko"},{"type":"element","tagName":"a","properties":{"href":"#laatikko","ariaLabel":"laatikko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/6e7afd4acd3f9b214a5c43273b23c834/a1812/laatikko.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAzElEQVQ4y+2VPQqEMBCFvZxVjqAWAVN4CH8KtfEQQfAk9h5DC09go295Abcx7sIyWyzswIPATL6ZgckkGMcR0zSJiKyABykj6wnc9/0jyHEcThcgbds2zPOMZVneinHruvqBZ3XDMCAMQ2itEUUR4jj2ir4kSaCUctBLyyfQWossy9B1Heq6RtM0XtHHGEJZ6S2w73ukaeouFUVxqzzPHZSVsv2XQGMM2rZFWZaoqsorQpmU7f+BvwgUHRvxwRZ7euLL4WvrS2TBSn8BD7avDfrO6ztPAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e7afd4acd3f9b214a5c43273b23c834/6ac13/laatikko.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e7afd4acd3f9b214a5c43273b23c834/a1812/laatikko.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/6e7afd4acd3f9b214a5c43273b23c834/a1812/laatikko.png","alt":"laatikko","title":"laatikko","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laatikko.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 3"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"robotti","style":"position:relative;"},"children":[{"type":"text","value":"Robotti"},{"type":"element","tagName":"a","properties":{"href":"#robotti","ariaLabel":"robotti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5fb4f02fac6c4d361c9057099bc9f890/a1812/robo.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB/klEQVQ4y5VV0WraYBjttbe+QR+iF32KXvdOWOeckVEGveqtF71qi6CusDFW6sSQJcwNklFHEcHZGfsAjdFCQCiFQew6qugZ58OUIqY1Hxw8nnP+w5+QP1mp1+uwbTsUlmWh1WoJyJ/KsmuFJGxG9/d4oyjo93oCcmphw66Hwul0KphMJvLf8zx8Oj5G/uQEFVUVkFOjx2E2WPdsYdd18S6Xw/v1dXwtlwXk1OhFLnT7fXw4OsLHjQ2Yug7TMIRToxe50HEcfC6XYZ2f47tpCsip0Ytc2Lu6QuHwEJl4HMlYDK9iMSjxuGj0ol8y72GhgNzuLrKKIiCn5i57D4MQZ+j70DQNVdNEMpMRkFOj9zj75A7l+RuNkM1mUSwW8a1axRdNE5BTo8fM/LrQQt/3kUgkUKlU5ITwBBDk1Oj5s10uVTgcDpFKpVAqldBoNFCr1QTk1OgxE6nwxdYWVFVFs9l82CE5NXqRCv/e3iKztob8/j5+np1B13UBef7gQDxmlioMzGvPww/LQjqdhmEYAnJq17OzPL8mdIfBL+d1MonBYCAgD+ZxdulCPhgvd3bkZUCQj6IWBua/8Ri/9vbwdnUV7uWlgJwavWcveX7uxmOcbm/jdHMTf25uBOTU7maFC1+wiz4B7XYbHdtGx3Hwu9tF5+JCINxxxGNm0SfgP7rpf7Qvj0ecAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5fb4f02fac6c4d361c9057099bc9f890/6ac13/robo.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5fb4f02fac6c4d361c9057099bc9f890/a1812/robo.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5fb4f02fac6c4d361c9057099bc9f890/a1812/robo.png","alt":"robo","title":"robo","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robo.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 4"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"laatikko-kohderuudussa","style":"position:relative;"},"children":[{"type":"text","value":"Laatikko kohderuudussa"},{"type":"element","tagName":"a","properties":{"href":"#laatikko-kohderuudussa","ariaLabel":"laatikko kohderuudussa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/15225a12ccfe0e42a543bea73f4ff889/a1812/valmis.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABk0lEQVQ4y7WVPWsCQRCG7UTEX5Em/0IQbLS18gM80MLOIpgYb/fOu9mNcpD8g4hglzZtCNjbpkqrhV0IITb6hllivrzEDy4LL7dwew8zs+/MxcbjMSaTSSRiVow3US1mfQCXy+VBkNVqZbQB5LVYLDCdTjGbzbaKz83n83DgOrrRaIRsNgvLslAqlVAul0PF7yqVCvL5vIFupLwGDgYDNBoNBEEAIoJS6pu075unT2TOMJQj/RU4HA5Rq9XMR1LKTzkOHCFwphRs14UUwkA5Uk7/T2C9XofWGo7jwGWQ66IrJU57PdzmcrjLZNAmgiYy6e8FZJAnhIGNikU8J5O4ajbR8bzDgB0inCuFfquFp1QK15aFVr8PVwhTlt2BXCvPw6BahW638XB8jPt0GidBYCLmmu4FvFAKZ1rj8egIr/G4Adq+b2rK4ovaC9gjMsCbQgEviQQuuW5EpqZ8SXsBv9rGkRJd24bd7Zq9fI9OCGF8utU2YcYmraF+mJx2NXZo64W04NbWi3w4/Nv4imTARv0LeAO8hwm47qNppgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/15225a12ccfe0e42a543bea73f4ff889/6ac13/valmis.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/15225a12ccfe0e42a543bea73f4ff889/a1812/valmis.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/15225a12ccfe0e42a543bea73f4ff889/a1812/valmis.png","alt":"valmis","title":"valmis","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"valmis.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Laatikko on saatu siirrettyä kohderuutuun"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"kohderuutu-ja-robotti","style":"position:relative;"},"children":[{"type":"text","value":"Kohderuutu ja robotti"},{"type":"element","tagName":"a","properties":{"href":"#kohderuutu-ja-robotti","ariaLabel":"kohderuutu ja robotti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 50px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/70f904da050def3ee01b9b01b0b50b16/a1812/kohderobo.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC2klEQVQ4y41VXUsiURiemyANL7wRgm4q6D9U0B+IgrroIvrAqDVNWWKLrK66qD9gVEOrbF9axvSlSxq2hS1tVtoH1NWoSwlLdhEkFY3ps5wz4/bl2B54Zp55z/s+877nnHeG8fv9CAaDsvB6vQgEAhSE5/IlWgwhckN4fMRnoxG/o1EKwolNbhCtf4LpdJoilUrR59jlJaZnZjA2Nwfn4iIF4cQWi8WoD/HNxH0oGL64ADs6Cmt5Odbm5ymsFRVgLRaEef4/BYmTVFLk5AS28XF8q6uDZ3kZnpUVym0si0g8LgomkzRGXjCZBM3v+Bh8SQkcHAfv/j6+ezwU3oMDOBwO8DqdKEjipCzfCz49iRmenwN5eYgqFBi3WmFSq6FTKtGpVMKoVlNblGGA2lpRULbkjGBVFcAwiJhMYB0OWMxmDBuNFJaBAbBTU4gUFVGf1OysWLIgZBEkF55Hiry9tBSJeBzc6ipc6+vQmUwULrcbnM+HhNUqCtbUiLHJ5BtBKbv05CR1FDo7McyymLBY4Ha5sMRxFO61NUx8/YrhwUEI+flAQQHSNzdiMrkEb1tboe3thdNupx1COoAgsLcH59IStPX1uCWVqFQyglLJaXK+GAYJjQZ6rRb2hQX83NnB5uYmBeF2pxP65mYkiGB1tRj3ruQXm4LKSurc3tSERY7Dr91d+Le3KQgntvaWFlFwejrHpmQEz85wp1LBpNFgzG7Hj60tLHu9FIST9jMpFLhraHjVYbIHm06FQoiXlWGjvx9dej1WhoYougwGbPT1IW40Pi+T7MGWWg+CIN6vroCeHhg6OvCnsJDC0NYG2GzPxyyzmbk+Di/PFVmZT2YzwqenFIQL0o6SJfq45BeTD4KAvZERfCkuRiQSoSCc2B6kF76NeSX4dtwnk/B1d8PX2Iib62sKwontXhLM+oHN9gs4PDxEKBhEiOdxEA4jdHREQTnP0znik+0X8BeOmjrCN4yzpAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/70f904da050def3ee01b9b01b0b50b16/6ac13/kohderobo.webp 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/70f904da050def3ee01b9b01b0b50b16/a1812/kohderobo.png 50w"],"sizes":"(max-width: 50px) 100vw, 50px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/70f904da050def3ee01b9b01b0b50b16/a1812/kohderobo.png","alt":"kohderobo","title":"kohderobo","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedoston nimi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohderobo.png"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Sijainti listalla 6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Robotti voi myös olla kohderuudussa"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"ruudukon-luonti","style":"position:relative;"},"children":[{"type":"text","value":"Ruudukon luonti"},{"type":"element","tagName":"a","properties":{"href":"#ruudukon-luonti","ariaLabel":"ruudukon luonti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"text","value":" muodostaa ruudukon aloitustilanteen:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi luo kaksiulotteisen listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kartta"}]},{"type":"text","value":", jossa käytetään kuvien tunnuksia samassa järjestyksessä kuin kuvat on ladattu listaan. Tämän avulla pelin muistissa on tieto siitä, mikä on ruudukon tilanne tällä hetkellä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jokainen ruudukon luku on alussa välillä 0–4. Missään ruudussa ei ole lukua 5 tai 6, koska mikään laatikko tai robotti ei ole alussa kohderuudussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"pelisilmukka","style":"position:relative;"},"children":[{"type":"text","value":"Pelisilmukka"},{"type":"element","tagName":"a","properties":{"href":"#pelisilmukka","ariaLabel":"pelisilmukka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelisilmukka kutsuu joka kierroksella kahta metodia: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"text","value":" käy läpi viime kierroksen jälkeen syntyneet tapahtumat ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"text","value":" päivittää näytön sisällön."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"silmukka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tutki_tapahtumat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"piirra_naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fill"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"ruutu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"flip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä hetkellä ainoa pelin tunnistama tapahtuma on pelin sulkeminen (esimerkiksi pelaaja painaa ikkunassa olevaa raksia). Tässä tilanteessa peli sulkee itsensä kutsumalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":"-funktiota."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näytön piirtäminen toteutetaan käymällä ruudukon sisältö ja piirtämällä jokaista ruutua vastaava kuva oikeaan paikkaan."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että koordinaatteja x ja y käytetään eri päin eri tilanteissa. Kaksiulotteisen listan indeksoinnissa on luontevaa antaa ensin y ja sitten x, koska ensimmäinen indeksi tarkoittaa riviä ja toinen indeksi tarkoittaa saraketta. Kuitenkin Pygamen metodeissa annetaan ensin x ja y, kuten grafiikassa on yleensä tapana."}]}],"data":{"quirksMode":false}},"html":"

    Tässä osassa tehdään Pygamen avulla hieman laajempi peli, joka on muunnelma perinteisestä Sokoban-pelistä. Pelaaja ohjaa ruudukossa olevaa robottia, jonka tehtävänä on työntää laatikot oikeille paikoille käyttäen mahdollisimman vähän siirtoja.

    \n

    Lopullinen peli tulee näyttämään tältä:

    \n\n \n \n \n \n \n \"peli\"\n \n \n \n

    Pelin pohja

    \n

    Aloitetaan tekemällä pelille pohja, joka piirtää näkyviin pelin aloitustilanteen. Toteutamme pelin luokkaan Sokoban, jonka sisällä on pelissä tarvittavat toiminnot. Ensimmäisessä vaiheessa luokan sisältö on seuraava:

    \n
    import pygame\n\nclass Sokoban:\n    def __init__(self):\n        pygame.init()\n        \n        self.lataa_kuvat()\n        self.uusi_peli()\n        \n        self.korkeus = len(self.kartta)\n        self.leveys = len(self.kartta[0])\n        self.skaala = self.kuvat[0].get_width()\n\n        nayton_korkeus = self.skaala * self.korkeus\n        nayton_leveys = self.skaala * self.leveys\n        self.naytto = pygame.display.set_mode((nayton_leveys, nayton_korkeus))\n\n        pygame.display.set_caption(\"Sokoban\")\n\n        self.silmukka()\n\n    def lataa_kuvat(self):\n        self.kuvat = []\n        for nimi in [\"lattia\", \"seina\", \"kohde\", \"laatikko\", \"robo\", \"valmis\", \"kohderobo\"]:\n            self.kuvat.append(pygame.image.load(nimi + \".png\"))\n\n    def uusi_peli(self):\n        self.kartta = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n                       [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 2, 3, 0, 0, 0, 1, 0, 0, 1, 2, 3, 0, 0, 0, 0, 1],\n                       [1, 0, 0, 1, 2, 3, 0, 2, 3, 0, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 0, 4, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]\n\n    def silmukka(self):\n        while True:\n            self.tutki_tapahtumat()\n            self.piirra_naytto()\n\n    def tutki_tapahtumat(self):\n        for tapahtuma in pygame.event.get():\n            if tapahtuma.type == pygame.QUIT:\n                exit()\n\n    def piirra_naytto(self):\n        self.naytto.fill((0, 0, 0))\n\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                ruutu = self.kartta[y][x]\n                self.naytto.blit(self.kuvat[ruutu], (x * self.skaala, y * self.skaala))\n\n        pygame.display.flip()\n\nif __name__ == \"__main__\":\n    Sokoban()
    \n

    Tämä saa aikaan ikkunan, jossa on pelin aloitustilanne. Katsotaan seuraavaksi tarkemmin luokassa olevaa koodia.

    \n

    Konstruktori

    \n

    Luokan konstruktori aloittaa Pygamen käyttämisen, alustaa pelissä tarvittavia muuttujia ja tietorakenteita sekä lopuksi kutsuu metodia, jossa on pelin pääsilmukka.

    \n
        def __init__(self):\n        pygame.init()\n        \n        self.lataa_kuvat()\n        self.uusi_peli()\n        \n        self.korkeus = len(self.kartta)\n        self.leveys = len(self.kartta[0])\n        self.skaala = self.kuvat[0].get_width()\n\n        nayton_korkeus = self.skaala * self.korkeus\n        nayton_leveys = self.skaala * self.leveys\n        self.naytto = pygame.display.set_mode((nayton_leveys, nayton_korkeus))\n\n        pygame.display.set_caption(\"Sokoban\")\n\n        self.silmukka()
    \n

    Metodi lataa_kuvat lataa listaan kuvat pelin käyttämät kuvat ja metodi uusi_peli luo kaksiulotteisen listan kartta, jossa on kuvattu ruudukon sisältö alussa.

    \n

    Tämän jälkeen muuttujiin korkeus ja leveys laitetaan ruudukon korkeus ja leveys ja muuttujaan skaala laitetaan yhden ruudun koko. Koska jokainen kuva on neliön muotoinen ja yhtä suuri, ruudun koko saadaan hakemalla ensimmäisen kuvan leveys. Tämän avulla saadaan laskettua näytön korkeus ja leveys, minkä avulla voidaan luoda sopivan kokoinen ikkuna pelille.

    \n

    Kuvien lataaminen

    \n

    Metodi lataa_kuvat lataa pelin tarvitsemat kuvat:

    \n
        def lataa_kuvat(self):\n        self.kuvat = []\n        for nimi in [\"lattia\", \"seina\", \"kohde\", \"laatikko\", \"robo\", \"valmis\", \"kohderobo\"]:\n            self.kuvat.append(pygame.image.load(nimi + \".png\"))
    \n

    Pelissä on käytössä seuraavat kuvat:

    \n

    Lattiaruutu

    \n\n \n \n \n \n \n \"seina\"\n \n \n \n
      \n
    • Tiedoston nimi seina.png
    • \n
    • Sijainti listalla 1
    • \n
    \n

    Kohderuutu

    \n\n \n \n \n \n \n \"laatikko\"\n \n \n \n
      \n
    • Tiedoston nimi laatikko.png
    • \n
    • Sijainti listalla 3
    • \n
    \n

    Robotti

    \n\n \n \n \n \n \n \"robo\"\n \n \n \n
      \n
    • Tiedoston nimi robo.png
    • \n
    • Sijainti listalla 4
    • \n
    \n

    Laatikko kohderuudussa

    \n\n \n \n \n \n \n \"valmis\"\n \n \n \n
      \n
    • Tiedoston nimi valmis.png
    • \n
    • Sijainti listalla 5
    • \n
    • Laatikko on saatu siirrettyä kohderuutuun
    • \n
    \n

    Kohderuutu ja robotti

    \n\n \n \n \n \n \n \"kohderobo\"\n \n \n \n
      \n
    • Tiedoston nimi kohderobo.png
    • \n
    • Sijainti listalla 6
    • \n
    • Robotti voi myös olla kohderuudussa
    • \n
    \n

    Ruudukon luonti

    \n

    Metodi uusi_peli muodostaa ruudukon aloitustilanteen:

    \n
        def uusi_peli(self):\n        self.kartta = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n                       [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 2, 3, 0, 0, 0, 1, 0, 0, 1, 2, 3, 0, 0, 0, 0, 1],\n                       [1, 0, 0, 1, 2, 3, 0, 2, 3, 0, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 0, 4, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],\n                       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
    \n

    Metodi luo kaksiulotteisen listan kartta, jossa käytetään kuvien tunnuksia samassa järjestyksessä kuin kuvat on ladattu listaan. Tämän avulla pelin muistissa on tieto siitä, mikä on ruudukon tilanne tällä hetkellä.

    \n

    Huomaa, että jokainen ruudukon luku on alussa välillä 0–4. Missään ruudussa ei ole lukua 5 tai 6, koska mikään laatikko tai robotti ei ole alussa kohderuudussa.

    \n

    Pelisilmukka

    \n

    Pelisilmukka kutsuu joka kierroksella kahta metodia: tutki_tapahtumat käy läpi viime kierroksen jälkeen syntyneet tapahtumat ja piirra_naytto päivittää näytön sisällön.

    \n
        def silmukka(self):\n        while True:\n            self.tutki_tapahtumat()\n            self.piirra_naytto()\n\n    def tutki_tapahtumat(self):\n        for tapahtuma in pygame.event.get():\n            if tapahtuma.type == pygame.QUIT:\n                exit()\n\n    def piirra_naytto(self):\n        self.naytto.fill((0, 0, 0))\n\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                ruutu = self.kartta[y][x]\n                self.naytto.blit(self.kuvat[ruutu], (x * self.skaala, y * self.skaala))\n\n        pygame.display.flip()
    \n

    Tällä hetkellä ainoa pelin tunnistama tapahtuma on pelin sulkeminen (esimerkiksi pelaaja painaa ikkunassa olevaa raksia). Tässä tilanteessa peli sulkee itsensä kutsumalla exit-funktiota.

    \n

    Näytön piirtäminen toteutetaan käymällä ruudukon sisältö ja piirtämällä jokaista ruutua vastaava kuva oikeaan paikkaan.

    \n

    Huomaa, että koordinaatteja x ja y käytetään eri päin eri tilanteissa. Kaksiulotteisen listan indeksoinnissa on luontevaa antaa ensin y ja sitten x, koska ensimmäinen indeksi tarkoittaa riviä ja toinen indeksi tarkoittaa saraketta. Kuitenkin Pygamen metodeissa annetaan ensin x ja y, kuten grafiikassa on yleensä tapana.

    ","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/1-peliprojekti.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-14/2-robo-ja-laatikot/page-data.json b/page-data/osa-14/2-robo-ja-laatikot/page-data.json index 171644870..b96a96079 100644 --- a/page-data/osa-14/2-robo-ja-laatikot/page-data.json +++ b/page-data/osa-14/2-robo-ja-laatikot/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-14/2-robo-ja-laatikot", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikein asia Sokoban-pelin toteutuksessa on saada robotti liikkumaan niin, että se pystyy työntämään laatikoita halutulla tavalla. Pelin pitää tunnistaa, milloin robotti pystyy siirtymään pelaajan haluamaan suuntiin, sekä käsitellä oikein tilanteet, joissa robotti työntää laatikkoa. Nyt on aika tarttua tähän haasteeseen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"nappaimiston-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Näppäimistön käsittely"},{"type":"element","tagName":"a","properties":{"href":"#nappaimiston-kasittely","ariaLabel":"nappaimiston kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelaaja ohjaa robottia nuolinäppäimillä, joten tapahtumien käsittelyä täytyy laajentaa niin, että se tarkkailee myös näppäimistön tapahtumia:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_UP"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_DOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kun pelaaja painaa nuolinäppäintä, kutsutaan metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"liiku"}]},{"type":"text","value":" sopivilla parametreilla. Ensimmäinen parametri ilmaisee liikkeen määrän pystysuunnassa ja toinen parametri puolestaan ilmaisee liikkeen määrän vaakasuunnassa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"robotin-etsiminen","style":"position:relative;"},"children":[{"type":"text","value":"Robotin etsiminen"},{"type":"element","tagName":"a","properties":{"href":"#robotin-etsiminen","ariaLabel":"robotin etsiminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin täytyy tietää robotin sijainti, jotta sitä pystyy siirtämään oikealla tavalla. Seuraava metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_robo"}]},{"type":"text","value":" selvittää robotin sijainnin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_robo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi käy läpi kaikki ruudukon ruudut ja palauttaa ruudun koordinaatit, jos ruudussa on luku 4 (robotti yksinään) tai luku 6 (robotti kohderuudun päällä)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ideana on, että aina kun käyttäjä painaa nuolinäppäintä, selvitetään ensin robotin sijainti käymällä läpi ruudukon ruudut. Tämä voi tuntua vähän hitaalta, koska vaihtoehtoisesti voisi myös pitää yllä tietoa robotin sijainnista omissa muuttujissa. Tämän toteutuksen etuna on kuitenkin, että robotin sijainti ei ole tallessa kahdessa paikassa (ruudukossa ja erillisissä muuttujissa) vaan vain yhdessä paikassa, eli muistissa oleva pelin tila on yksinkertaisempi."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"muutokset-ruudukossa","style":"position:relative;"},"children":[{"type":"text","value":"Muutokset ruudukossa"},{"type":"element","tagName":"a","properties":{"href":"#muutokset-ruudukossa","ariaLabel":"muutokset ruudukossa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"liiku"}]},{"type":"text","value":" saa parametreina suunnan, johon pelaaja haluaa robotin liikkuvan, ja metodi joko päivittää ruudukkoa sopivasti tai toteaa, että liikkuminen ei ole mahdollista eikä muuta ruudukon sisältöä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"liiku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi_robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n laatikon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n laatikon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi on melko monimutkainen, joten katsotaan tarkemmin metodin osia:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"robotin-vanha-ja-uusi-sijainti","style":"position:relative;"},"children":[{"type":"text","value":"Robotin vanha ja uusi sijainti"},{"type":"element","tagName":"a","properties":{"href":"#robotin-vanha-ja-uusi-sijainti","ariaLabel":"robotin vanha ja uusi sijainti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi_robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi kutsuu ensin metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_robo"}]},{"type":"text","value":", joka selvittää robotin vanhan sijainnin ennen siirtoa. Tämä sijainti tallennetaan muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_vanha_y"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_vanha_x"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_uusi_y"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_uusi_x"}]},{"type":"text","value":" lasketaan robotin haluttu uusi sijainti. Tämä saadaan laskettua kätevästi, kun tiedossa on vanha sijainti sekä haluttu sijainnin muutos pysty- ja vaakasuunnassa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"tormaako-robotti-seinaan","style":"position:relative;"},"children":[{"type":"text","value":"Törmääkö robotti seinään?"},{"type":"element","tagName":"a","properties":{"href":"#tormaako-robotti-seinaan","ariaLabel":"tormaako robotti seinaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavaksi käsitellään tapaus, jossa pelaaja yrittää ohjata robottia seinään (luku 1 tarkoittaa seinää). Tämä ei ole sallittua, joten tässä tilanteessa ei tapahdu mitään ja metodin suoritus vain loppuu."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"laatikon-siirtyminen","style":"position:relative;"},"children":[{"type":"text","value":"Laatikon siirtyminen"},{"type":"element","tagName":"a","properties":{"href":"#laatikon-siirtyminen","ariaLabel":"laatikon siirtyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n laatikon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n laatikon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos robotin uudessa sijainnissa on luku 3 (laatikko) tai 5 (laatikko kohderuudussa), robotti työntää laatikkoa liikkuessaan. Tätä varten lasketaan muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laatikon_uusi_y"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laatikon_uusi_x"}]},{"type":"text","value":" laatikon uusi sijainti työntämisen jälkeen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laatikko ei voi siirtyä, jos uudessa kohdassa on luku 1 (seinäruutu), luku 3 (toinen laatikko) tai luku 5 (toinen laatikko kohderuudussa). Näissä tapauksissa metodi sulkee itsensä eikä tee mitään."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muissa tapauksissa kuitenkin laatikkoa pystyy siirtämään, jolloin laatikon nykyisen ruudun luvusta vähennetään 3 ja uuden ruudun lukuun lisätään 3. Tämä päivittää ruudukkoa oikealla tavalla sekä silloin, kun laatikko on tavallisessa lattiaruudussa tai kohderuudussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"robotin-siirtyminen","style":"position:relative;"},"children":[{"type":"text","value":"Robotin siirtyminen"},{"type":"element","tagName":"a","properties":{"href":"#robotin-siirtyminen","ariaLabel":"robotin siirtyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos metodin suoritus etenee loppuun asti, myös robotin tulee vielä siirtyä. Tämä toteutetaan samalla tavalla kuin laatikon siirtyminen, paitsi että vähennettävä ja lisättävä arvo on 4. Tässäkin tapauksessa ruudukon sisältö muuttuu oikein tilanteissa, joissa robotti on tavallisessa lattiaruudussa tai kohderuudussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"refaktorointia","style":"position:relative;"},"children":[{"type":"text","value":"Refaktorointia?"},{"type":"element","tagName":"a","properties":{"href":"#refaktorointia","ariaLabel":"refaktorointia permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä käytetty tapa tallentaa ruudukon tilanne on siinä mielessä kätevä, että yksi ruudukko kuvaa pelin koko tilanteen tiiviissä muodossa ja ruudukkoa on melko helppoa päivittää vähentämällä ja poistamalla sopivasti lukuja."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteutuksen huonona puolena on kuitenkin, että pelin koodin ymmärtäminen voi olla vaikeaa. Esimerkiksi jos ulkopuolinen koodari näkee seuraavan rivin, se näyttää luultavasti mystiseltä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on käytetty "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"taikalukuja"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"magic numbers"}]},{"type":"text","value":") ruutujen esittämiseen, ja koodin lukijan täytyy tietää, että 1 tarkoittaa seinää, 3 tarkoittaa laatikkoa ja 5 tarkoittaa kohderuudussa olevaa laatikkoa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vielä mystisempiä ovat rivit tyyliin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"koska nyt laatikkoa tarkoittava luku 3 vähennetään ruudun luvusta. Tämä toimii, koska tämä muuttaa tavallisen laatikon lattiaksi ja kohderuudussa olevan laatikon kohderuuduksi, mutta asian ymmärtäminen vaatii huolellista perehtymistä ruutujen numerointiin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin koodin lukijan työtä voisi helpottaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"refaktoroimalla"}]},{"type":"text","value":" koodia eli muuttamalla koodin rakennetta paremmaksi ja selkeämmäksi. Tässä tapauksessa helppo muutos olisi käyttää lukujen 0–6 sijasta kuvaavampia ruutujen nimiä, mutta tämä ei selittäisi sitä, miksi lukuja voi vähentää ja lisätä ja ruudukko muuttuu oikealla tavalla."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin koodin saaminen todella helposti luettavaksi vaatisikin luultavasti paljon suurempaa refaktorointia, kuten ruudukon pysyvän rakenteen tallentamista erillään ja robotin ja laatikoiden sijaintien tallentamista omissa tietorakenteissaan. Toisaalta tämän kääntöpuolena olisi, että koodia voisi tulla paljon lisää ja pelin sisäinen toiminta muuttuisi monimutkaisemmaksi."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Refaktorointiin ja koodin laatuun liittyviin asioihin tutustutaan lisää tulevilla kursseilla, kuten "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ohjelmistotekniikka"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ohjelmistotuotanto"}]},{"type":"text","value":"."}]}],"data":{"quirksMode":false}},"html":"

    Vaikein asia Sokoban-pelin toteutuksessa on saada robotti liikkumaan niin, että se pystyy työntämään laatikoita halutulla tavalla. Pelin pitää tunnistaa, milloin robotti pystyy siirtymään pelaajan haluamaan suuntiin, sekä käsitellä oikein tilanteet, joissa robotti työntää laatikkoa. Nyt on aika tarttua tähän haasteeseen.

    \n

    Näppäimistön käsittely

    \n

    Pelaaja ohjaa robottia nuolinäppäimillä, joten tapahtumien käsittelyä täytyy laajentaa niin, että se tarkkailee myös näppäimistön tapahtumia:

    \n
        def tutki_tapahtumat(self):\n        for tapahtuma in pygame.event.get():\n            if tapahtuma.type == pygame.KEYDOWN:\n                if tapahtuma.key == pygame.K_LEFT:\n                    self.liiku(0, -1)\n                if tapahtuma.key == pygame.K_RIGHT:\n                    self.liiku(0, 1)\n                if tapahtuma.key == pygame.K_UP:\n                    self.liiku(-1, 0)\n                if tapahtuma.key == pygame.K_DOWN:\n                    self.liiku(1, 0)\n\n            if tapahtuma.type == pygame.QUIT:\n                exit()
    \n

    Nyt kun pelaaja painaa nuolinäppäintä, kutsutaan metodia liiku sopivilla parametreilla. Ensimmäinen parametri ilmaisee liikkeen määrän pystysuunnassa ja toinen parametri puolestaan ilmaisee liikkeen määrän vaakasuunnassa.

    \n

    Robotin etsiminen

    \n

    Pelin täytyy tietää robotin sijainti, jotta sitä pystyy siirtämään oikealla tavalla. Seuraava metodi etsi_robo selvittää robotin sijainnin:

    \n
        def etsi_robo(self):\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                if self.kartta[y][x] in [4, 6]:\n                    return (y, x)
    \n

    Metodi käy läpi kaikki ruudukon ruudut ja palauttaa ruudun koordinaatit, jos ruudussa on luku 4 (robotti yksinään) tai luku 6 (robotti kohderuudun päällä).

    \n

    Ideana on, että aina kun käyttäjä painaa nuolinäppäintä, selvitetään ensin robotin sijainti käymällä läpi ruudukon ruudut. Tämä voi tuntua vähän hitaalta, koska vaihtoehtoisesti voisi myös pitää yllä tietoa robotin sijainnista omissa muuttujissa. Tämän toteutuksen etuna on kuitenkin, että robotin sijainti ei ole tallessa kahdessa paikassa (ruudukossa ja erillisissä muuttujissa) vaan vain yhdessä paikassa, eli muistissa oleva pelin tila on yksinkertaisempi.

    \n

    Muutokset ruudukossa

    \n

    Metodi liiku saa parametreina suunnan, johon pelaaja haluaa robotin liikkuvan, ja metodi joko päivittää ruudukkoa sopivasti tai toteaa, että liikkuminen ei ole mahdollista eikä muuta ruudukon sisältöä.

    \n
        def liiku(self, liike_y, liike_x):\n        robon_vanha_y, robon_vanha_x = self.etsi_robo()\n        robon_uusi_y = robon_vanha_y + liike_y\n        robon_uusi_x = robon_vanha_x + liike_x\n\n        if self.kartta[robon_uusi_y][robon_uusi_x] == 1:\n            return\n\n        if self.kartta[robon_uusi_y][robon_uusi_x] in [3, 5]:\n            laatikon_uusi_y = robon_uusi_y + liike_y\n            laatikon_uusi_x = robon_uusi_x + liike_x\n\n            if self.kartta[laatikon_uusi_y][laatikon_uusi_x] in [1, 3, 5]:\n                return\n\n            self.kartta[robon_uusi_y][robon_uusi_x] -= 3\n            self.kartta[laatikon_uusi_y][laatikon_uusi_x] += 3\n\n        self.kartta[robon_vanha_y][robon_vanha_x] -= 4\n        self.kartta[robon_uusi_y][robon_uusi_x] += 4
    \n

    Metodi on melko monimutkainen, joten katsotaan tarkemmin metodin osia:

    \n

    Robotin vanha ja uusi sijainti

    \n
            robon_vanha_y, robon_vanha_x = self.etsi_robo()\n        robon_uusi_y = robon_vanha_y + liike_y\n        robon_uusi_x = robon_vanha_x + liike_x
    \n

    Metodi kutsuu ensin metodia etsi_robo, joka selvittää robotin vanhan sijainnin ennen siirtoa. Tämä sijainti tallennetaan muuttujiin robon_vanha_y ja robon_vanha_x.

    \n

    Tämän jälkeen muuttujiin robon_uusi_y ja robon_uusi_x lasketaan robotin haluttu uusi sijainti. Tämä saadaan laskettua kätevästi, kun tiedossa on vanha sijainti sekä haluttu sijainnin muutos pysty- ja vaakasuunnassa.

    \n

    Törmääkö robotti seinään?

    \n
            if self.kartta[robon_uusi_y][robon_uusi_x] == 1:\n            return
    \n

    Seuraavaksi käsitellään tapaus, jossa pelaaja yrittää ohjata robottia seinään (luku 1 tarkoittaa seinää). Tämä ei ole sallittua, joten tässä tilanteessa ei tapahdu mitään ja metodin suoritus vain loppuu.

    \n

    Laatikon siirtyminen

    \n
            if self.kartta[robon_uusi_y][robon_uusi_x] in [3, 5]:\n            laatikon_uusi_y = robon_uusi_y + liike_y\n            laatikon_uusi_x = robon_uusi_x + liike_x\n\n            if self.kartta[laatikon_uusi_y][laatikon_uusi_x] in [1, 3, 5]:\n                return\n\n            self.kartta[robon_uusi_y][robon_uusi_x] -= 3\n            self.kartta[laatikon_uusi_y][laatikon_uusi_x] += 3
    \n

    Jos robotin uudessa sijainnissa on luku 3 (laatikko) tai 5 (laatikko kohderuudussa), robotti työntää laatikkoa liikkuessaan. Tätä varten lasketaan muuttujiin laatikon_uusi_y ja laatikon_uusi_x laatikon uusi sijainti työntämisen jälkeen.

    \n

    Laatikko ei voi siirtyä, jos uudessa kohdassa on luku 1 (seinäruutu), luku 3 (toinen laatikko) tai luku 5 (toinen laatikko kohderuudussa). Näissä tapauksissa metodi sulkee itsensä eikä tee mitään.

    \n

    Muissa tapauksissa kuitenkin laatikkoa pystyy siirtämään, jolloin laatikon nykyisen ruudun luvusta vähennetään 3 ja uuden ruudun lukuun lisätään 3. Tämä päivittää ruudukkoa oikealla tavalla sekä silloin, kun laatikko on tavallisessa lattiaruudussa tai kohderuudussa.

    \n

    Robotin siirtyminen

    \n
            self.kartta[robon_vanha_y][robon_vanha_x] -= 4\n        self.kartta[robon_uusi_y][robon_uusi_x] += 4
    \n

    Jos metodin suoritus etenee loppuun asti, myös robotin tulee vielä siirtyä. Tämä toteutetaan samalla tavalla kuin laatikon siirtyminen, paitsi että vähennettävä ja lisättävä arvo on 4. Tässäkin tapauksessa ruudukon sisältö muuttuu oikein tilanteissa, joissa robotti on tavallisessa lattiaruudussa tai kohderuudussa.

    \n

    Refaktorointia?

    \n

    Tässä käytetty tapa tallentaa ruudukon tilanne on siinä mielessä kätevä, että yksi ruudukko kuvaa pelin koko tilanteen tiiviissä muodossa ja ruudukkoa on melko helppoa päivittää vähentämällä ja poistamalla sopivasti lukuja.

    \n

    Toteutuksen huonona puolena on kuitenkin, että pelin koodin ymmärtäminen voi olla vaikeaa. Esimerkiksi jos ulkopuolinen koodari näkee seuraavan rivin, se näyttää luultavasti mystiseltä.

    \n
                if self.kartta[laatikon_uusi_y][laatikon_uusi_x] in [1, 3, 5]:
    \n

    Tässä on käytetty taikalukuja (magic numbers) ruutujen esittämiseen, ja koodin lukijan täytyy tietää, että 1 tarkoittaa seinää, 3 tarkoittaa laatikkoa ja 5 tarkoittaa kohderuudussa olevaa laatikkoa.

    \n

    Vielä mystisempiä ovat rivit tyyliin

    \n
                self.kartta[robon_uusi_y][robon_uusi_x] -= 3
    \n

    koska nyt laatikkoa tarkoittava luku 3 vähennetään ruudun luvusta. Tämä toimii, koska tämä muuttaa tavallisen laatikon lattiaksi ja kohderuudussa olevan laatikon kohderuuduksi, mutta asian ymmärtäminen vaatii huolellista perehtymistä ruutujen numerointiin.

    \n

    Pelin koodin lukijan työtä voisi helpottaa refaktoroimalla koodia eli muuttamalla koodin rakennetta paremmaksi ja selkeämmäksi. Tässä tapauksessa helppo muutos olisi käyttää lukujen 0–6 sijasta kuvaavampia ruutujen nimiä, mutta tämä ei selittäisi sitä, miksi lukuja voi vähentää ja lisätä ja ruudukko muuttuu oikealla tavalla.

    \n

    Pelin koodin saaminen todella helposti luettavaksi vaatisikin luultavasti paljon suurempaa refaktorointia, kuten ruudukon pysyvän rakenteen tallentamista erillään ja robotin ja laatikoiden sijaintien tallentamista omissa tietorakenteissaan. Toisaalta tämän kääntöpuolena olisi, että koodia voisi tulla paljon lisää ja pelin sisäinen toiminta muuttuisi monimutkaisemmaksi.

    \n

    Refaktorointiin ja koodin laatuun liittyviin asioihin tutustutaan lisää tulevilla kursseilla, kuten Ohjelmistotekniikka ja Ohjelmistotuotanto.

    ","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/2-robo-ja-laatikot.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikein asia Sokoban-pelin toteutuksessa on saada robotti liikkumaan niin, että se pystyy työntämään laatikoita halutulla tavalla. Pelin pitää tunnistaa, milloin robotti pystyy siirtymään pelaajan haluamaan suuntiin, sekä käsitellä oikein tilanteet, joissa robotti työntää laatikkoa. Nyt on aika tarttua tähän haasteeseen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"nappaimiston-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Näppäimistön käsittely"},{"type":"element","tagName":"a","properties":{"href":"#nappaimiston-kasittely","ariaLabel":"nappaimiston kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelaaja ohjaa robottia nuolinäppäimillä, joten tapahtumien käsittelyä täytyy laajentaa niin, että se tarkkailee myös näppäimistön tapahtumia:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" tapahtuma "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"event"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"KEYDOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_LEFT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_RIGHT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_UP"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_DOWN"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"liiku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"QUIT"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kun pelaaja painaa nuolinäppäintä, kutsutaan metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"liiku"}]},{"type":"text","value":" sopivilla parametreilla. Ensimmäinen parametri ilmaisee liikkeen määrän pystysuunnassa ja toinen parametri puolestaan ilmaisee liikkeen määrän vaakasuunnassa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"robotin-etsiminen","style":"position:relative;"},"children":[{"type":"text","value":"Robotin etsiminen"},{"type":"element","tagName":"a","properties":{"href":"#robotin-etsiminen","ariaLabel":"robotin etsiminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin täytyy tietää robotin sijainti, jotta sitä pystyy siirtämään oikealla tavalla. Seuraava metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_robo"}]},{"type":"text","value":" selvittää robotin sijainnin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi_robo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi käy läpi kaikki ruudukon ruudut ja palauttaa ruudun koordinaatit, jos ruudussa on luku 4 (robotti yksinään) tai luku 6 (robotti kohderuudun päällä)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ideana on, että aina kun käyttäjä painaa nuolinäppäintä, selvitetään ensin robotin sijainti käymällä läpi ruudukon ruudut. Tämä voi tuntua vähän hitaalta, koska vaihtoehtoisesti voisi myös pitää yllä tietoa robotin sijainnista omissa muuttujissa. Tämän toteutuksen etuna on kuitenkin, että robotin sijainti ei ole tallessa kahdessa paikassa (ruudukossa ja erillisissä muuttujissa) vaan vain yhdessä paikassa, eli muistissa oleva pelin tila on yksinkertaisempi."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"muutokset-ruudukossa","style":"position:relative;"},"children":[{"type":"text","value":"Muutokset ruudukossa"},{"type":"element","tagName":"a","properties":{"href":"#muutokset-ruudukossa","ariaLabel":"muutokset ruudukossa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"liiku"}]},{"type":"text","value":" saa parametreina suunnan, johon pelaaja haluaa robotin liikkuvan, ja metodi joko päivittää ruudukkoa sopivasti tai toteaa, että liikkuminen ei ole mahdollista eikä muuta ruudukon sisältöä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"liiku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi_robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n laatikon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n laatikon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi on melko monimutkainen, joten katsotaan tarkemmin metodin osia:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"robotin-vanha-ja-uusi-sijainti","style":"position:relative;"},"children":[{"type":"text","value":"Robotin vanha ja uusi sijainti"},{"type":"element","tagName":"a","properties":{"href":"#robotin-vanha-ja-uusi-sijainti","ariaLabel":"robotin vanha ja uusi sijainti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi_robo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_vanha_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi kutsuu ensin metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_robo"}]},{"type":"text","value":", joka selvittää robotin vanhan sijainnin ennen siirtoa. Tämä sijainti tallennetaan muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_vanha_y"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_vanha_x"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_uusi_y"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"robon_uusi_x"}]},{"type":"text","value":" lasketaan robotin haluttu uusi sijainti. Tämä saadaan laskettua kätevästi, kun tiedossa on vanha sijainti sekä haluttu sijainnin muutos pysty- ja vaakasuunnassa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"tormaako-robotti-seinaan","style":"position:relative;"},"children":[{"type":"text","value":"Törmääkö robotti seinään?"},{"type":"element","tagName":"a","properties":{"href":"#tormaako-robotti-seinaan","ariaLabel":"tormaako robotti seinaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavaksi käsitellään tapaus, jossa pelaaja yrittää ohjata robottia seinään (luku 1 tarkoittaa seinää). Tämä ei ole sallittua, joten tässä tilanteessa ei tapahdu mitään ja metodin suoritus vain loppuu."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"laatikon-siirtyminen","style":"position:relative;"},"children":[{"type":"text","value":"Laatikon siirtyminen"},{"type":"element","tagName":"a","properties":{"href":"#laatikon-siirtyminen","ariaLabel":"laatikon siirtyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n laatikon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_y\n laatikon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" robon_uusi_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" liike_x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos robotin uudessa sijainnissa on luku 3 (laatikko) tai 5 (laatikko kohderuudussa), robotti työntää laatikkoa liikkuessaan. Tätä varten lasketaan muuttujiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laatikon_uusi_y"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laatikon_uusi_x"}]},{"type":"text","value":" laatikon uusi sijainti työntämisen jälkeen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laatikko ei voi siirtyä, jos uudessa kohdassa on luku 1 (seinäruutu), luku 3 (toinen laatikko) tai luku 5 (toinen laatikko kohderuudussa). Näissä tapauksissa metodi sulkee itsensä eikä tee mitään."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muissa tapauksissa kuitenkin laatikkoa pystyy siirtämään, jolloin laatikon nykyisen ruudun luvusta vähennetään 3 ja uuden ruudun lukuun lisätään 3. Tämä päivittää ruudukkoa oikealla tavalla sekä silloin, kun laatikko on tavallisessa lattiaruudussa tai kohderuudussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"robotin-siirtyminen","style":"position:relative;"},"children":[{"type":"text","value":"Robotin siirtyminen"},{"type":"element","tagName":"a","properties":{"href":"#robotin-siirtyminen","ariaLabel":"robotin siirtyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_vanha_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos metodin suoritus etenee loppuun asti, myös robotin tulee vielä siirtyä. Tämä toteutetaan samalla tavalla kuin laatikon siirtyminen, paitsi että vähennettävä ja lisättävä arvo on 4. Tässäkin tapauksessa ruudukon sisältö muuttuu oikein tilanteissa, joissa robotti on tavallisessa lattiaruudussa tai kohderuudussa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"refaktorointia","style":"position:relative;"},"children":[{"type":"text","value":"Refaktorointia?"},{"type":"element","tagName":"a","properties":{"href":"#refaktorointia","ariaLabel":"refaktorointia permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä käytetty tapa tallentaa ruudukon tilanne on siinä mielessä kätevä, että yksi ruudukko kuvaa pelin koko tilanteen tiiviissä muodossa ja ruudukkoa on melko helppoa päivittää vähentämällä ja poistamalla sopivasti lukuja."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteutuksen huonona puolena on kuitenkin, että pelin koodin ymmärtäminen voi olla vaikeaa. Esimerkiksi jos ulkopuolinen koodari näkee seuraavan rivin, se näyttää luultavasti mystiseltä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"laatikon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on käytetty "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"taikalukuja"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"magic numbers"}]},{"type":"text","value":") ruutujen esittämiseen, ja koodin lukijan täytyy tietää, että 1 tarkoittaa seinää, 3 tarkoittaa laatikkoa ja 5 tarkoittaa kohderuudussa olevaa laatikkoa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vielä mystisempiä ovat rivit tyyliin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"robon_uusi_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"koska nyt laatikkoa tarkoittava luku 3 vähennetään ruudun luvusta. Tämä toimii, koska tämä muuttaa tavallisen laatikon lattiaksi ja kohderuudussa olevan laatikon kohderuuduksi, mutta asian ymmärtäminen vaatii huolellista perehtymistä ruutujen numerointiin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin koodin lukijan työtä voisi helpottaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"refaktoroimalla"}]},{"type":"text","value":" koodia eli muuttamalla koodin rakennetta paremmaksi ja selkeämmäksi. Tässä tapauksessa helppo muutos olisi käyttää lukujen 0–6 sijasta kuvaavampia ruutujen nimiä, mutta tämä ei selittäisi sitä, miksi lukuja voi vähentää ja lisätä ja ruudukko muuttuu oikealla tavalla."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin koodin saaminen todella helposti luettavaksi vaatisikin luultavasti paljon suurempaa refaktorointia, kuten ruudukon pysyvän rakenteen tallentamista erillään ja robotin ja laatikoiden sijaintien tallentamista omissa tietorakenteissaan. Toisaalta tämän kääntöpuolena olisi, että koodia voisi tulla paljon lisää ja pelin sisäinen toiminta muuttuisi monimutkaisemmaksi."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Refaktorointiin ja koodin laatuun liittyviin asioihin tutustutaan lisää tulevilla kursseilla, kuten "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ohjelmistotekniikka"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ohjelmistotuotanto"}]},{"type":"text","value":"."}]}],"data":{"quirksMode":false}},"html":"

    Vaikein asia Sokoban-pelin toteutuksessa on saada robotti liikkumaan niin, että se pystyy työntämään laatikoita halutulla tavalla. Pelin pitää tunnistaa, milloin robotti pystyy siirtymään pelaajan haluamaan suuntiin, sekä käsitellä oikein tilanteet, joissa robotti työntää laatikkoa. Nyt on aika tarttua tähän haasteeseen.

    \n

    Näppäimistön käsittely

    \n

    Pelaaja ohjaa robottia nuolinäppäimillä, joten tapahtumien käsittelyä täytyy laajentaa niin, että se tarkkailee myös näppäimistön tapahtumia:

    \n
        def tutki_tapahtumat(self):\n        for tapahtuma in pygame.event.get():\n            if tapahtuma.type == pygame.KEYDOWN:\n                if tapahtuma.key == pygame.K_LEFT:\n                    self.liiku(0, -1)\n                if tapahtuma.key == pygame.K_RIGHT:\n                    self.liiku(0, 1)\n                if tapahtuma.key == pygame.K_UP:\n                    self.liiku(-1, 0)\n                if tapahtuma.key == pygame.K_DOWN:\n                    self.liiku(1, 0)\n\n            if tapahtuma.type == pygame.QUIT:\n                exit()
    \n

    Nyt kun pelaaja painaa nuolinäppäintä, kutsutaan metodia liiku sopivilla parametreilla. Ensimmäinen parametri ilmaisee liikkeen määrän pystysuunnassa ja toinen parametri puolestaan ilmaisee liikkeen määrän vaakasuunnassa.

    \n

    Robotin etsiminen

    \n

    Pelin täytyy tietää robotin sijainti, jotta sitä pystyy siirtämään oikealla tavalla. Seuraava metodi etsi_robo selvittää robotin sijainnin:

    \n
        def etsi_robo(self):\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                if self.kartta[y][x] in [4, 6]:\n                    return (y, x)
    \n

    Metodi käy läpi kaikki ruudukon ruudut ja palauttaa ruudun koordinaatit, jos ruudussa on luku 4 (robotti yksinään) tai luku 6 (robotti kohderuudun päällä).

    \n

    Ideana on, että aina kun käyttäjä painaa nuolinäppäintä, selvitetään ensin robotin sijainti käymällä läpi ruudukon ruudut. Tämä voi tuntua vähän hitaalta, koska vaihtoehtoisesti voisi myös pitää yllä tietoa robotin sijainnista omissa muuttujissa. Tämän toteutuksen etuna on kuitenkin, että robotin sijainti ei ole tallessa kahdessa paikassa (ruudukossa ja erillisissä muuttujissa) vaan vain yhdessä paikassa, eli muistissa oleva pelin tila on yksinkertaisempi.

    \n

    Muutokset ruudukossa

    \n

    Metodi liiku saa parametreina suunnan, johon pelaaja haluaa robotin liikkuvan, ja metodi joko päivittää ruudukkoa sopivasti tai toteaa, että liikkuminen ei ole mahdollista eikä muuta ruudukon sisältöä.

    \n
        def liiku(self, liike_y, liike_x):\n        robon_vanha_y, robon_vanha_x = self.etsi_robo()\n        robon_uusi_y = robon_vanha_y + liike_y\n        robon_uusi_x = robon_vanha_x + liike_x\n\n        if self.kartta[robon_uusi_y][robon_uusi_x] == 1:\n            return\n\n        if self.kartta[robon_uusi_y][robon_uusi_x] in [3, 5]:\n            laatikon_uusi_y = robon_uusi_y + liike_y\n            laatikon_uusi_x = robon_uusi_x + liike_x\n\n            if self.kartta[laatikon_uusi_y][laatikon_uusi_x] in [1, 3, 5]:\n                return\n\n            self.kartta[robon_uusi_y][robon_uusi_x] -= 3\n            self.kartta[laatikon_uusi_y][laatikon_uusi_x] += 3\n\n        self.kartta[robon_vanha_y][robon_vanha_x] -= 4\n        self.kartta[robon_uusi_y][robon_uusi_x] += 4
    \n

    Metodi on melko monimutkainen, joten katsotaan tarkemmin metodin osia:

    \n

    Robotin vanha ja uusi sijainti

    \n
            robon_vanha_y, robon_vanha_x = self.etsi_robo()\n        robon_uusi_y = robon_vanha_y + liike_y\n        robon_uusi_x = robon_vanha_x + liike_x
    \n

    Metodi kutsuu ensin metodia etsi_robo, joka selvittää robotin vanhan sijainnin ennen siirtoa. Tämä sijainti tallennetaan muuttujiin robon_vanha_y ja robon_vanha_x.

    \n

    Tämän jälkeen muuttujiin robon_uusi_y ja robon_uusi_x lasketaan robotin haluttu uusi sijainti. Tämä saadaan laskettua kätevästi, kun tiedossa on vanha sijainti sekä haluttu sijainnin muutos pysty- ja vaakasuunnassa.

    \n

    Törmääkö robotti seinään?

    \n
            if self.kartta[robon_uusi_y][robon_uusi_x] == 1:\n            return
    \n

    Seuraavaksi käsitellään tapaus, jossa pelaaja yrittää ohjata robottia seinään (luku 1 tarkoittaa seinää). Tämä ei ole sallittua, joten tässä tilanteessa ei tapahdu mitään ja metodin suoritus vain loppuu.

    \n

    Laatikon siirtyminen

    \n
            if self.kartta[robon_uusi_y][robon_uusi_x] in [3, 5]:\n            laatikon_uusi_y = robon_uusi_y + liike_y\n            laatikon_uusi_x = robon_uusi_x + liike_x\n\n            if self.kartta[laatikon_uusi_y][laatikon_uusi_x] in [1, 3, 5]:\n                return\n\n            self.kartta[robon_uusi_y][robon_uusi_x] -= 3\n            self.kartta[laatikon_uusi_y][laatikon_uusi_x] += 3
    \n

    Jos robotin uudessa sijainnissa on luku 3 (laatikko) tai 5 (laatikko kohderuudussa), robotti työntää laatikkoa liikkuessaan. Tätä varten lasketaan muuttujiin laatikon_uusi_y ja laatikon_uusi_x laatikon uusi sijainti työntämisen jälkeen.

    \n

    Laatikko ei voi siirtyä, jos uudessa kohdassa on luku 1 (seinäruutu), luku 3 (toinen laatikko) tai luku 5 (toinen laatikko kohderuudussa). Näissä tapauksissa metodi sulkee itsensä eikä tee mitään.

    \n

    Muissa tapauksissa kuitenkin laatikkoa pystyy siirtämään, jolloin laatikon nykyisen ruudun luvusta vähennetään 3 ja uuden ruudun lukuun lisätään 3. Tämä päivittää ruudukkoa oikealla tavalla sekä silloin, kun laatikko on tavallisessa lattiaruudussa tai kohderuudussa.

    \n

    Robotin siirtyminen

    \n
            self.kartta[robon_vanha_y][robon_vanha_x] -= 4\n        self.kartta[robon_uusi_y][robon_uusi_x] += 4
    \n

    Jos metodin suoritus etenee loppuun asti, myös robotin tulee vielä siirtyä. Tämä toteutetaan samalla tavalla kuin laatikon siirtyminen, paitsi että vähennettävä ja lisättävä arvo on 4. Tässäkin tapauksessa ruudukon sisältö muuttuu oikein tilanteissa, joissa robotti on tavallisessa lattiaruudussa tai kohderuudussa.

    \n

    Refaktorointia?

    \n

    Tässä käytetty tapa tallentaa ruudukon tilanne on siinä mielessä kätevä, että yksi ruudukko kuvaa pelin koko tilanteen tiiviissä muodossa ja ruudukkoa on melko helppoa päivittää vähentämällä ja poistamalla sopivasti lukuja.

    \n

    Toteutuksen huonona puolena on kuitenkin, että pelin koodin ymmärtäminen voi olla vaikeaa. Esimerkiksi jos ulkopuolinen koodari näkee seuraavan rivin, se näyttää luultavasti mystiseltä.

    \n
                if self.kartta[laatikon_uusi_y][laatikon_uusi_x] in [1, 3, 5]:
    \n

    Tässä on käytetty taikalukuja (magic numbers) ruutujen esittämiseen, ja koodin lukijan täytyy tietää, että 1 tarkoittaa seinää, 3 tarkoittaa laatikkoa ja 5 tarkoittaa kohderuudussa olevaa laatikkoa.

    \n

    Vielä mystisempiä ovat rivit tyyliin

    \n
                self.kartta[robon_uusi_y][robon_uusi_x] -= 3
    \n

    koska nyt laatikkoa tarkoittava luku 3 vähennetään ruudun luvusta. Tämä toimii, koska tämä muuttaa tavallisen laatikon lattiaksi ja kohderuudussa olevan laatikon kohderuuduksi, mutta asian ymmärtäminen vaatii huolellista perehtymistä ruutujen numerointiin.

    \n

    Pelin koodin lukijan työtä voisi helpottaa refaktoroimalla koodia eli muuttamalla koodin rakennetta paremmaksi ja selkeämmäksi. Tässä tapauksessa helppo muutos olisi käyttää lukujen 0–6 sijasta kuvaavampia ruutujen nimiä, mutta tämä ei selittäisi sitä, miksi lukuja voi vähentää ja lisätä ja ruudukko muuttuu oikealla tavalla.

    \n

    Pelin koodin saaminen todella helposti luettavaksi vaatisikin luultavasti paljon suurempaa refaktorointia, kuten ruudukon pysyvän rakenteen tallentamista erillään ja robotin ja laatikoiden sijaintien tallentamista omissa tietorakenteissaan. Toisaalta tämän kääntöpuolena olisi, että koodia voisi tulla paljon lisää ja pelin sisäinen toiminta muuttuisi monimutkaisemmaksi.

    \n

    Refaktorointiin ja koodin laatuun liittyviin asioihin tutustutaan lisää tulevilla kursseilla, kuten Ohjelmistotekniikka ja Ohjelmistotuotanto.

    ","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/2-robo-ja-laatikot.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-14/3-pelin-viimeistely/page-data.json b/page-data/osa-14/3-pelin-viimeistely/page-data.json index 7a64f7258..560c83bf3 100644 --- a/page-data/osa-14/3-pelin-viimeistely/page-data.json +++ b/page-data/osa-14/3-pelin-viimeistely/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-14/3-pelin-viimeistely", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Peli on jo hyvässä vaiheessa, joten nyt voimme alkaa viimeistellä pelin toteutusta. Lisäämme peliin laskurin, joka näyttää siirtojen määrän, mahdollisuuden aloittaa uusi peli ja sulkea peli näppäinkomennoilla sekä ilmoituksen, kun pelaaja onnistuu läpäisemään pelin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"siirtolaskuri","style":"position:relative;"},"children":[{"type":"text","value":"Siirtolaskuri"},{"type":"element","tagName":"a","properties":{"href":"#siirtolaskuri","ariaLabel":"siirtolaskuri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siirtolaskuri näyttää pelin ikkunan alalaidassa, montako siirtoa pelaaja on tehnyt tähän mennessä. Tämän avulla voi yrittää etsiä ratkaisua, jossa on mahdollisimman vähän siirtoja."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laskurin tekeminen vaatii joitakin muutoksia koodiin. Muutetaan ensin konstruktoria niin, että ikkunassa on tilaa laskurille ja käytettävissä on fontti tekstin piirtämistä varten:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nayton_leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nayton_korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"font"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"SysFont"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arial\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siirtolaskuri nollataan pelin alussa ja jokainen siirto kasvattaa sitä yhdellä:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirrot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"liiku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirrot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi näytön päivityksen yhteydessä näytetään siirtojen määrä laskurin avulla:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Siirrot: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirrot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"uusi-peli-ja-pelin-sulkeminen","style":"position:relative;"},"children":[{"type":"text","value":"Uusi peli ja pelin sulkeminen"},{"type":"element","tagName":"a","properties":{"href":"#uusi-peli-ja-pelin-sulkeminen","ariaLabel":"uusi peli ja pelin sulkeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään peliin seuraavaksi näppäinkomennot, joiden avulla pelaaja voi aloittaa uuden pelin painamalla F2 sekä sulkea pelin painamalla Esc. Molemmat toiminnot on helppo toteuttaa:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_F2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"uusi_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_ESCAPE"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi piirretään ikkunan alalaitaan pelaajalle tiedoksi, että pelissä on tällaiset toiminnot:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"F2 = uusi peli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Esc = sulje peli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"400"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"pelin-lapaiseminen","style":"position:relative;"},"children":[{"type":"text","value":"Pelin läpäiseminen"},{"type":"element","tagName":"a","properties":{"href":"#pelin-lapaiseminen","ariaLabel":"pelin lapaiseminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelaaja läpäisee pelin, kun jokainen laatikko on jossain kohderuudussa. Tämä voidaan tarkastaa seuraavalla metodilla:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"peli_lapi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi käy läpi kaikki ruudut ja jos jossain ruudussa on luku 2 (tyhjä kohderuutu) tai 6 (robotti kohderuudussa), peli ei ole vielä läpäisty ja metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":". Jos mitään tällaista ruutua ei ole ruudukossa, peli kuitenkin on läpäisty ja metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos pelaaja läpäisee pelin, metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"text","value":" näyttää asiaan kuuluvan viestin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"peli_lapi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onnittelut, läpäisit pelin!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n teksti_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n teksti_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rect"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"liiku"}]},{"type":"text","value":" alkua muutetaan niin, että liikkuminen ei ole enää mahdollista, kun pelaaja on läpäissyt pelin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"liiku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"peli_lapi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tilanteessa kuitenkin pelaaja näkee edelleen ruudukon ja lopullisen pelitilanteen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"vinkki-testauksen","style":"position:relative;"},"children":[{"type":"text","value":"Vinkki testauksen"},{"type":"element","tagName":"a","properties":{"href":"#vinkki-testauksen","ariaLabel":"vinkki testauksen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin kehityksen aikana tulee helposti tarve tarkastaa, mitä tapahtuu jossain vaiheessa myöhemmin pelissä. Esimerkiksi tässä pelissä tällainen tapahtuma on pelin läpäiseminen ja siitä tuleva ilmoitus."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällaisen tapahtuman testaaminen voi olla hankalaa, jos esimerkiksi pitää aina läpäistä koko peli ennen kuin tapahtuman näkee. Kuitenkin pelin ohjelmoija voi helposti tehdä koodiin väliaikaisia muutoksia, jotka helpottavat testausta. Esimerkiksi pelin läpäisyä voi testata muuttamalla koodia näin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"peli_lapi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt metodi palauttaa aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" eli peli on läpäisty heti pelin alkaessa. Tämän avulla voi mukavasti varmistaa, että pelin lopussa tuleva ilmoitus näyttää oikealta eikä pelaaja pysty enää siirtymään ruudukossa. Sitten kun pelin päättyminen toimii oikein, metodin voi jälleen palauttaa ennalleen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"peli-githubiin","style":"position:relative;"},"children":[{"type":"text","value":"Peli GitHubiin"},{"type":"element","tagName":"a","properties":{"href":"#peli-githubiin","ariaLabel":"peli githubiin permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Peli on nyt valmis ja voit hakea pelin lopullisen koodin ja kuvat GitHubista:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://github.com/moocfi/sokoban","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://github.com/moocfi/sokoban"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"GitHub on hyvä paikka omille ohjelmointiprojekteille: sen avulla projektin koodin ja muut tiedostot saa talteen Git-versionhallintaan ja projektin pystyy helposti jakamaan muille. GitHubia käytetään paljon myöhemmillä tietojenkäsittelytieteen kursseilla."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"montako-siirtoa-tarvitaan","style":"position:relative;"},"children":[{"type":"text","value":"Montako siirtoa tarvitaan?"},{"type":"element","tagName":"a","properties":{"href":"#montako-siirtoa-tarvitaan","ariaLabel":"montako siirtoa tarvitaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka pelin ruudukko on melko pieni, peli ei ole helppo. Ensimmäinen haaste on onnistua läpäisemään peli, ja sen jälkeen haasteena on keksiä ratkaisu, jossa siirtojen määrä on mahdollisimman pieni. Kuinka lyhyen ratkaisun onnistut muodostamaan?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lyhimmän mahdollisen ratkaisun etsiminen käsin on hyvin vaikeaa, mutta tässäkin voi käyttää apuna ohjelmointia. Kurssilla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tietorakenteet ja algoritmit"}]},{"type":"text","value":" tutustutaan tekniikoihin, joiden avulla voidaan löytää automaattisesti lyhin mahdollinen ratkaisu peliin."}]}],"data":{"quirksMode":false}},"html":"

    Peli on jo hyvässä vaiheessa, joten nyt voimme alkaa viimeistellä pelin toteutusta. Lisäämme peliin laskurin, joka näyttää siirtojen määrän, mahdollisuuden aloittaa uusi peli ja sulkea peli näppäinkomennoilla sekä ilmoituksen, kun pelaaja onnistuu läpäisemään pelin.

    \n

    Siirtolaskuri

    \n

    Siirtolaskuri näyttää pelin ikkunan alalaidassa, montako siirtoa pelaaja on tehnyt tähän mennessä. Tämän avulla voi yrittää etsiä ratkaisua, jossa on mahdollisimman vähän siirtoja.

    \n

    Laskurin tekeminen vaatii joitakin muutoksia koodiin. Muutetaan ensin konstruktoria niin, että ikkunassa on tilaa laskurille ja käytettävissä on fontti tekstin piirtämistä varten:

    \n
        def __init__(self):\n        ...\n        self.naytto = pygame.display.set_mode((nayton_leveys, nayton_korkeus + self.skaala))\n\n        self.fontti = pygame.font.SysFont(\"Arial\", 24)\n        ...
    \n

    Siirtolaskuri nollataan pelin alussa ja jokainen siirto kasvattaa sitä yhdellä:

    \n
        def uusi_peli(self):\n        ...\n        self.siirrot = 0
    \n
        def liiku(self, liike_y, liike_x):\n        ...\n        self.siirrot += 1\n
    \n

    Lisäksi näytön päivityksen yhteydessä näytetään siirtojen määrä laskurin avulla:

    \n
        def piirra_naytto(self):\n        ...\n        teksti = self.fontti.render(\"Siirrot: \" + str(self.siirrot), True, (255, 0, 0))\n        self.naytto.blit(teksti, (25, self.korkeus * self.skaala + 10))\n        ...
    \n

    Uusi peli ja pelin sulkeminen

    \n

    Lisätään peliin seuraavaksi näppäinkomennot, joiden avulla pelaaja voi aloittaa uuden pelin painamalla F2 sekä sulkea pelin painamalla Esc. Molemmat toiminnot on helppo toteuttaa:

    \n
        def tutki_tapahtumat(self):\n        ...\n                if tapahtuma.key == pygame.K_F2:\n                    self.uusi_peli()\n                if tapahtuma.key == pygame.K_ESCAPE:\n                    exit()\n        ...
    \n

    Lisäksi piirretään ikkunan alalaitaan pelaajalle tiedoksi, että pelissä on tällaiset toiminnot:

    \n
        def piirra_naytto(self):\n        ...\n        teksti = self.fontti.render(\"F2 = uusi peli\", True, (255, 0, 0))\n        self.naytto.blit(teksti, (200, self.korkeus * self.skaala + 10))\n\n        teksti = self.fontti.render(\"Esc = sulje peli\", True, (255, 0, 0))\n        self.naytto.blit(teksti, (400, self.korkeus * self.skaala + 10))\n        ...
    \n

    Pelin läpäiseminen

    \n

    Pelaaja läpäisee pelin, kun jokainen laatikko on jossain kohderuudussa. Tämä voidaan tarkastaa seuraavalla metodilla:

    \n
        def peli_lapi(self):\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                if self.kartta[y][x] in [2, 6]:\n                    return False\n        return True
    \n

    Metodi käy läpi kaikki ruudut ja jos jossain ruudussa on luku 2 (tyhjä kohderuutu) tai 6 (robotti kohderuudussa), peli ei ole vielä läpäisty ja metodi palauttaa False. Jos mitään tällaista ruutua ei ole ruudukossa, peli kuitenkin on läpäisty ja metodi palauttaa True.

    \n

    Jos pelaaja läpäisee pelin, metodi piirra_naytto näyttää asiaan kuuluvan viestin:

    \n
        def piirra_naytto(self):\n        ...\n        if self.peli_lapi():\n            teksti = self.fontti.render(\"Onnittelut, läpäisit pelin!\", True, (255, 0, 0))\n            teksti_x = self.skaala * self.leveys / 2 - teksti.get_width() / 2\n            teksti_y = self.skaala * self.korkeus / 2 - teksti.get_height() / 2\n            pygame.draw.rect(self.naytto, (0, 0, 0), (teksti_x, teksti_y, teksti.get_width(), teksti.get_height()))\n            self.naytto.blit(teksti, (teksti_x, teksti_y))\n        ...
    \n

    Lisäksi metodin liiku alkua muutetaan niin, että liikkuminen ei ole enää mahdollista, kun pelaaja on läpäissyt pelin:

    \n
        def liiku(self, liike_y, liike_x):\n        if self.peli_lapi():\n            return\n        ...
    \n

    Tässä tilanteessa kuitenkin pelaaja näkee edelleen ruudukon ja lopullisen pelitilanteen.

    \n

    Vinkki testauksen

    \n

    Pelin kehityksen aikana tulee helposti tarve tarkastaa, mitä tapahtuu jossain vaiheessa myöhemmin pelissä. Esimerkiksi tässä pelissä tällainen tapahtuma on pelin läpäiseminen ja siitä tuleva ilmoitus.

    \n

    Tällaisen tapahtuman testaaminen voi olla hankalaa, jos esimerkiksi pitää aina läpäistä koko peli ennen kuin tapahtuman näkee. Kuitenkin pelin ohjelmoija voi helposti tehdä koodiin väliaikaisia muutoksia, jotka helpottavat testausta. Esimerkiksi pelin läpäisyä voi testata muuttamalla koodia näin:

    \n
        def peli_lapi(self):\n        return True
    \n

    Nyt metodi palauttaa aina True eli peli on läpäisty heti pelin alkaessa. Tämän avulla voi mukavasti varmistaa, että pelin lopussa tuleva ilmoitus näyttää oikealta eikä pelaaja pysty enää siirtymään ruudukossa. Sitten kun pelin päättyminen toimii oikein, metodin voi jälleen palauttaa ennalleen.

    \n

    Peli GitHubiin

    \n

    Peli on nyt valmis ja voit hakea pelin lopullisen koodin ja kuvat GitHubista:

    \n\n

    GitHub on hyvä paikka omille ohjelmointiprojekteille: sen avulla projektin koodin ja muut tiedostot saa talteen Git-versionhallintaan ja projektin pystyy helposti jakamaan muille. GitHubia käytetään paljon myöhemmillä tietojenkäsittelytieteen kursseilla.

    \n

    Montako siirtoa tarvitaan?

    \n

    Vaikka pelin ruudukko on melko pieni, peli ei ole helppo. Ensimmäinen haaste on onnistua läpäisemään peli, ja sen jälkeen haasteena on keksiä ratkaisu, jossa siirtojen määrä on mahdollisimman pieni. Kuinka lyhyen ratkaisun onnistut muodostamaan?

    \n

    Lyhimmän mahdollisen ratkaisun etsiminen käsin on hyvin vaikeaa, mutta tässäkin voi käyttää apuna ohjelmointia. Kurssilla Tietorakenteet ja algoritmit tutustutaan tekniikoihin, joiden avulla voidaan löytää automaattisesti lyhin mahdollinen ratkaisu peliin.

    ","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/3-pelin-viimeistely.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Peli on jo hyvässä vaiheessa, joten nyt voimme alkaa viimeistellä pelin toteutusta. Lisäämme peliin laskurin, joka näyttää siirtojen määrän, mahdollisuuden aloittaa uusi peli ja sulkea peli näppäinkomennoilla sekä ilmoituksen, kun pelaaja onnistuu läpäisemään pelin."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"siirtolaskuri","style":"position:relative;"},"children":[{"type":"text","value":"Siirtolaskuri"},{"type":"element","tagName":"a","properties":{"href":"#siirtolaskuri","ariaLabel":"siirtolaskuri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siirtolaskuri näyttää pelin ikkunan alalaidassa, montako siirtoa pelaaja on tehnyt tähän mennessä. Tämän avulla voi yrittää etsiä ratkaisua, jossa on mahdollisimman vähän siirtoja."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laskurin tekeminen vaatii joitakin muutoksia koodiin. Muutetaan ensin konstruktoria niin, että ikkunassa on tilaa laskurille ja käytettävissä on fontti tekstin piirtämistä varten:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"display"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"set_mode"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nayton_leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nayton_korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"font"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"SysFont"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arial\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siirtolaskuri nollataan pelin alussa ja jokainen siirto kasvattaa sitä yhdellä:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_peli"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirrot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"liiku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirrot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi näytön päivityksen yhteydessä näytetään siirtojen määrä laskurin avulla:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Siirrot: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirrot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"uusi-peli-ja-pelin-sulkeminen","style":"position:relative;"},"children":[{"type":"text","value":"Uusi peli ja pelin sulkeminen"},{"type":"element","tagName":"a","properties":{"href":"#uusi-peli-ja-pelin-sulkeminen","ariaLabel":"uusi peli ja pelin sulkeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään peliin seuraavaksi näppäinkomennot, joiden avulla pelaaja voi aloittaa uuden pelin painamalla F2 sekä sulkea pelin painamalla Esc. Molemmat toiminnot on helppo toteuttaa:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tutki_tapahtumat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_F2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"uusi_peli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tapahtuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"key "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"K_ESCAPE"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n exit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi piirretään ikkunan alalaitaan pelaajalle tiedoksi, että pelissä on tällaiset toiminnot:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"F2 = uusi peli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Esc = sulje peli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"400"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"pelin-lapaiseminen","style":"position:relative;"},"children":[{"type":"text","value":"Pelin läpäiseminen"},{"type":"element","tagName":"a","properties":{"href":"#pelin-lapaiseminen","ariaLabel":"pelin lapaiseminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelaaja läpäisee pelin, kun jokainen laatikko on jossain kohderuudussa. Tämä voidaan tarkastaa seuraavalla metodilla:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"peli_lapi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kartta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi käy läpi kaikki ruudut ja jos jossain ruudussa on luku 2 (tyhjä kohderuutu) tai 6 (robotti kohderuudussa), peli ei ole vielä läpäisty ja metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":". Jos mitään tällaista ruutua ei ole ruudukossa, peli kuitenkin on läpäisty ja metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos pelaaja läpäisee pelin, metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"text","value":" näyttää asiaan kuuluvan viestin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piirra_naytto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"peli_lapi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"fontti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"render"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onnittelut, läpäisit pelin!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"255"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n teksti_x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n teksti_y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"skaala "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n pygame"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"draw"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rect"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_width"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"get_height"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"naytto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"blit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"teksti_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" teksti_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"liiku"}]},{"type":"text","value":" alkua muutetaan niin, että liikkuminen ei ole enää mahdollista, kun pelaaja on läpäissyt pelin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"liiku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" liike_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"peli_lapi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tilanteessa kuitenkin pelaaja näkee edelleen ruudukon ja lopullisen pelitilanteen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"vinkki-testauksen","style":"position:relative;"},"children":[{"type":"text","value":"Vinkki testauksen"},{"type":"element","tagName":"a","properties":{"href":"#vinkki-testauksen","ariaLabel":"vinkki testauksen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin kehityksen aikana tulee helposti tarve tarkastaa, mitä tapahtuu jossain vaiheessa myöhemmin pelissä. Esimerkiksi tässä pelissä tällainen tapahtuma on pelin läpäiseminen ja siitä tuleva ilmoitus."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällaisen tapahtuman testaaminen voi olla hankalaa, jos esimerkiksi pitää aina läpäistä koko peli ennen kuin tapahtuman näkee. Kuitenkin pelin ohjelmoija voi helposti tehdä koodiin väliaikaisia muutoksia, jotka helpottavat testausta. Esimerkiksi pelin läpäisyä voi testata muuttamalla koodia näin:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"peli_lapi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt metodi palauttaa aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" eli peli on läpäisty heti pelin alkaessa. Tämän avulla voi mukavasti varmistaa, että pelin lopussa tuleva ilmoitus näyttää oikealta eikä pelaaja pysty enää siirtymään ruudukossa. Sitten kun pelin päättyminen toimii oikein, metodin voi jälleen palauttaa ennalleen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"peli-githubiin","style":"position:relative;"},"children":[{"type":"text","value":"Peli GitHubiin"},{"type":"element","tagName":"a","properties":{"href":"#peli-githubiin","ariaLabel":"peli githubiin permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Peli on nyt valmis ja voit hakea pelin lopullisen koodin ja kuvat GitHubista:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://github.com/moocfi/sokoban","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://github.com/moocfi/sokoban"}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"GitHub on hyvä paikka omille ohjelmointiprojekteille: sen avulla projektin koodin ja muut tiedostot saa talteen Git-versionhallintaan ja projektin pystyy helposti jakamaan muille. GitHubia käytetään paljon myöhemmillä tietojenkäsittelytieteen kursseilla."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"montako-siirtoa-tarvitaan","style":"position:relative;"},"children":[{"type":"text","value":"Montako siirtoa tarvitaan?"},{"type":"element","tagName":"a","properties":{"href":"#montako-siirtoa-tarvitaan","ariaLabel":"montako siirtoa tarvitaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka pelin ruudukko on melko pieni, peli ei ole helppo. Ensimmäinen haaste on onnistua läpäisemään peli, ja sen jälkeen haasteena on keksiä ratkaisu, jossa siirtojen määrä on mahdollisimman pieni. Kuinka lyhyen ratkaisun onnistut muodostamaan?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lyhimmän mahdollisen ratkaisun etsiminen käsin on hyvin vaikeaa, mutta tässäkin voi käyttää apuna ohjelmointia. Kurssilla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tietorakenteet ja algoritmit"}]},{"type":"text","value":" tutustutaan tekniikoihin, joiden avulla voidaan löytää automaattisesti lyhin mahdollinen ratkaisu peliin."}]}],"data":{"quirksMode":false}},"html":"

    Peli on jo hyvässä vaiheessa, joten nyt voimme alkaa viimeistellä pelin toteutusta. Lisäämme peliin laskurin, joka näyttää siirtojen määrän, mahdollisuuden aloittaa uusi peli ja sulkea peli näppäinkomennoilla sekä ilmoituksen, kun pelaaja onnistuu läpäisemään pelin.

    \n

    Siirtolaskuri

    \n

    Siirtolaskuri näyttää pelin ikkunan alalaidassa, montako siirtoa pelaaja on tehnyt tähän mennessä. Tämän avulla voi yrittää etsiä ratkaisua, jossa on mahdollisimman vähän siirtoja.

    \n

    Laskurin tekeminen vaatii joitakin muutoksia koodiin. Muutetaan ensin konstruktoria niin, että ikkunassa on tilaa laskurille ja käytettävissä on fontti tekstin piirtämistä varten:

    \n
        def __init__(self):\n        ...\n        self.naytto = pygame.display.set_mode((nayton_leveys, nayton_korkeus + self.skaala))\n\n        self.fontti = pygame.font.SysFont(\"Arial\", 24)\n        ...
    \n

    Siirtolaskuri nollataan pelin alussa ja jokainen siirto kasvattaa sitä yhdellä:

    \n
        def uusi_peli(self):\n        ...\n        self.siirrot = 0
    \n
        def liiku(self, liike_y, liike_x):\n        ...\n        self.siirrot += 1\n
    \n

    Lisäksi näytön päivityksen yhteydessä näytetään siirtojen määrä laskurin avulla:

    \n
        def piirra_naytto(self):\n        ...\n        teksti = self.fontti.render(\"Siirrot: \" + str(self.siirrot), True, (255, 0, 0))\n        self.naytto.blit(teksti, (25, self.korkeus * self.skaala + 10))\n        ...
    \n

    Uusi peli ja pelin sulkeminen

    \n

    Lisätään peliin seuraavaksi näppäinkomennot, joiden avulla pelaaja voi aloittaa uuden pelin painamalla F2 sekä sulkea pelin painamalla Esc. Molemmat toiminnot on helppo toteuttaa:

    \n
        def tutki_tapahtumat(self):\n        ...\n                if tapahtuma.key == pygame.K_F2:\n                    self.uusi_peli()\n                if tapahtuma.key == pygame.K_ESCAPE:\n                    exit()\n        ...
    \n

    Lisäksi piirretään ikkunan alalaitaan pelaajalle tiedoksi, että pelissä on tällaiset toiminnot:

    \n
        def piirra_naytto(self):\n        ...\n        teksti = self.fontti.render(\"F2 = uusi peli\", True, (255, 0, 0))\n        self.naytto.blit(teksti, (200, self.korkeus * self.skaala + 10))\n\n        teksti = self.fontti.render(\"Esc = sulje peli\", True, (255, 0, 0))\n        self.naytto.blit(teksti, (400, self.korkeus * self.skaala + 10))\n        ...
    \n

    Pelin läpäiseminen

    \n

    Pelaaja läpäisee pelin, kun jokainen laatikko on jossain kohderuudussa. Tämä voidaan tarkastaa seuraavalla metodilla:

    \n
        def peli_lapi(self):\n        for y in range(self.korkeus):\n            for x in range(self.leveys):\n                if self.kartta[y][x] in [2, 6]:\n                    return False\n        return True
    \n

    Metodi käy läpi kaikki ruudut ja jos jossain ruudussa on luku 2 (tyhjä kohderuutu) tai 6 (robotti kohderuudussa), peli ei ole vielä läpäisty ja metodi palauttaa False. Jos mitään tällaista ruutua ei ole ruudukossa, peli kuitenkin on läpäisty ja metodi palauttaa True.

    \n

    Jos pelaaja läpäisee pelin, metodi piirra_naytto näyttää asiaan kuuluvan viestin:

    \n
        def piirra_naytto(self):\n        ...\n        if self.peli_lapi():\n            teksti = self.fontti.render(\"Onnittelut, läpäisit pelin!\", True, (255, 0, 0))\n            teksti_x = self.skaala * self.leveys / 2 - teksti.get_width() / 2\n            teksti_y = self.skaala * self.korkeus / 2 - teksti.get_height() / 2\n            pygame.draw.rect(self.naytto, (0, 0, 0), (teksti_x, teksti_y, teksti.get_width(), teksti.get_height()))\n            self.naytto.blit(teksti, (teksti_x, teksti_y))\n        ...
    \n

    Lisäksi metodin liiku alkua muutetaan niin, että liikkuminen ei ole enää mahdollista, kun pelaaja on läpäissyt pelin:

    \n
        def liiku(self, liike_y, liike_x):\n        if self.peli_lapi():\n            return\n        ...
    \n

    Tässä tilanteessa kuitenkin pelaaja näkee edelleen ruudukon ja lopullisen pelitilanteen.

    \n

    Vinkki testauksen

    \n

    Pelin kehityksen aikana tulee helposti tarve tarkastaa, mitä tapahtuu jossain vaiheessa myöhemmin pelissä. Esimerkiksi tässä pelissä tällainen tapahtuma on pelin läpäiseminen ja siitä tuleva ilmoitus.

    \n

    Tällaisen tapahtuman testaaminen voi olla hankalaa, jos esimerkiksi pitää aina läpäistä koko peli ennen kuin tapahtuman näkee. Kuitenkin pelin ohjelmoija voi helposti tehdä koodiin väliaikaisia muutoksia, jotka helpottavat testausta. Esimerkiksi pelin läpäisyä voi testata muuttamalla koodia näin:

    \n
        def peli_lapi(self):\n        return True
    \n

    Nyt metodi palauttaa aina True eli peli on läpäisty heti pelin alkaessa. Tämän avulla voi mukavasti varmistaa, että pelin lopussa tuleva ilmoitus näyttää oikealta eikä pelaaja pysty enää siirtymään ruudukossa. Sitten kun pelin päättyminen toimii oikein, metodin voi jälleen palauttaa ennalleen.

    \n

    Peli GitHubiin

    \n

    Peli on nyt valmis ja voit hakea pelin lopullisen koodin ja kuvat GitHubista:

    \n\n

    GitHub on hyvä paikka omille ohjelmointiprojekteille: sen avulla projektin koodin ja muut tiedostot saa talteen Git-versionhallintaan ja projektin pystyy helposti jakamaan muille. GitHubia käytetään paljon myöhemmillä tietojenkäsittelytieteen kursseilla.

    \n

    Montako siirtoa tarvitaan?

    \n

    Vaikka pelin ruudukko on melko pieni, peli ei ole helppo. Ensimmäinen haaste on onnistua läpäisemään peli, ja sen jälkeen haasteena on keksiä ratkaisu, jossa siirtojen määrä on mahdollisimman pieni. Kuinka lyhyen ratkaisun onnistut muodostamaan?

    \n

    Lyhimmän mahdollisen ratkaisun etsiminen käsin on hyvin vaikeaa, mutta tässäkin voi käyttää apuna ohjelmointia. Kurssilla Tietorakenteet ja algoritmit tutustutaan tekniikoihin, joiden avulla voidaan löytää automaattisesti lyhin mahdollinen ratkaisu peliin.

    ","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/3-pelin-viimeistely.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-14/4-oma-peli/page-data.json b/page-data/osa-14/4-oma-peli/page-data.json index 8036573de..c597d8d6c 100644 --- a/page-data/osa-14/4-oma-peli/page-data.json +++ b/page-data/osa-14/4-oma-peli/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-14/4-oma-peli", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"h2","properties":{"id":"viikon-tehtava","style":"position:relative;"},"children":[{"type":"text","value":"Viikon tehtävä"},{"type":"element","tagName":"a","properties":{"href":"#viikon-tehtava","ariaLabel":"viikon tehtava permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän viikon tehtäväsi on tehdä oma pieni peli Pygamen avulla. Peliä varten tehtäväpohjassa on joukko kuvia, joita voit käyttää pelissä. Älä käytä muita kuvia, jotta muutkin pystyvät kokeilemaan peliä koodin perusteella."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saat päättää pelin aiheen itse, ja pelin tulisi olla suunnilleen saman laajuinen kuin tämän viikon esimerkki. Pelin tulisi noudattaa seuraavia vaatimuksia:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelissä on hahmo, jota pelaaja pystyy liikuttamaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelissä on kerättäviä asioita ja/tai vihollisia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelaajalla on jokin selkeä tavoite"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelissä on laskuri, joka näyttää, miten pelaaminen sujuu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelin koodi on jaettu sopivasti funktioihin tämän viikon esimerkin tyylisesti"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun peli on valmis, lähetä se vertaisarviointiin alla olevan lomakkeen avulla. Tämän jälkeen tutustu vielä kahden muun kurssilaisen peliin ja anna niille mielestäsi sopiva arvosana ja kirjoita lyhyt arvio peleistä. Ota arvioinnissa huomioon sekä pelin kiinnostavuus ja pelattavuus että koodin selkeys."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"pelin-lahettaminen","style":"position:relative;"},"children":[{"type":"text","value":"Pelin lähettäminen"},{"type":"element","tagName":"a","properties":{"href":"#pelin-lahettaminen","ariaLabel":"pelin lahettaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin lähetys onnistuu lähettämällä oma ohjelmakoodi TMC Paste -ominaisuuden avulla palvelimelle ja liittämällä linkki palautuslomakkeeseen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Klikkaa ensin TMC-painiketta (silmän oikealla puolella oleva painike). Tämä avaa valikon, josta löydät oikean ominaisuuden kirjoittamalla hakukenttään sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"send"}]},{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 626px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/6bf3f5cce371044c253dc34c755ee566/af590/tmc_paste_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 10.869565217391305%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAWElEQVQI12PQsfGwDYy38o208Aw1tPcwsHM3tPcwtPfQtXbVwY307b2U1bUZhHXs+c1D+I19hY09lUwc5Y0c5IzslUwdhTUt+NXMBNSxIEF1M1lDeylFNQBUlRfSchJdXQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6bf3f5cce371044c253dc34c755ee566/a0b58/tmc_paste_1.webp 230w","/static/6bf3f5cce371044c253dc34c755ee566/bc10c/tmc_paste_1.webp 460w","/static/6bf3f5cce371044c253dc34c755ee566/63b03/tmc_paste_1.webp 626w"],"sizes":"(max-width: 626px) 100vw, 626px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6bf3f5cce371044c253dc34c755ee566/81c8e/tmc_paste_1.png 230w","/static/6bf3f5cce371044c253dc34c755ee566/08a84/tmc_paste_1.png 460w","/static/6bf3f5cce371044c253dc34c755ee566/af590/tmc_paste_1.png 626w"],"sizes":"(max-width: 626px) 100vw, 626px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/6bf3f5cce371044c253dc34c755ee566/af590/tmc_paste_1.png","alt":"tmc paste 1","title":"tmc paste 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun klikkaat valintaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Send Exercise to TMC Paste"}]},{"type":"text","value":", ruudun oikeaan alakulmaan putkahtaa tieto siitä, että ohjelmakoodi on lähetetty palvelimelle:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 463px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8513d666220a4b7cb4b0fe987d121287/71ce0/tmc_paste_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 26.521739130434778%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA40lEQVQY02XKW3KEIBQEUPeRivLwKggCFy4wTh46TrKG/GQXs4asJFloasxnuk519Uc3nQ7KZevROJwOxidQpuXQyaGTYyugFcMBWK8Y6NGiDcTU3HAdqb68v+2X7bK9btu6Xvf96bxEjBHRe59SSjGlRJnIGtML7t1cIvbaNm0/aqVjooDR++BcQIz3Zy6ZckqZ8rFLrfXkneMTMkPdFDuNDUzhVAgxLsu5llJzrqVmIgAQQkgppRBS/EUKxvjnl7392Nv3w/rRtDCBsr0yoCzo+eg7Mej/eK9YeOb5yml/NPkXc5s2qFqAD9IAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8513d666220a4b7cb4b0fe987d121287/a0b58/tmc_paste_2.webp 230w","/static/8513d666220a4b7cb4b0fe987d121287/bc10c/tmc_paste_2.webp 460w","/static/8513d666220a4b7cb4b0fe987d121287/a7d21/tmc_paste_2.webp 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8513d666220a4b7cb4b0fe987d121287/81c8e/tmc_paste_2.png 230w","/static/8513d666220a4b7cb4b0fe987d121287/08a84/tmc_paste_2.png 460w","/static/8513d666220a4b7cb4b0fe987d121287/71ce0/tmc_paste_2.png 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8513d666220a4b7cb4b0fe987d121287/71ce0/tmc_paste_2.png","alt":"tmc paste 2","title":"tmc paste 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saat linkin kopioitua leikepöydälle klikkaamalla painiketta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Open URL"}]},{"type":"text","value":" ja valitsemalla aukeavasta ikkunasta valihtoehdon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Copy"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 463px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9de4d62e51a1cf0025cc5500310d1edf/71ce0/tmc_paste_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 31.304347826086953%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABHUlEQVQY002Ly07CQBhG+8A+lQuXunGLISyUpAO4oUiAkrbQmfnn2s6FztRSA4nRLydfchYnqfKdrMsiP56KgjE2fMcYuj6GGG//j7v2IYbOex9jnEwmyWwLT0vpXFBtZ1zUJjY2qjYY17e2b13f2Nje6LUJXHXG9dfrMI5jmqbJ4/z88HLyPhDhhL5Q6YV2VFiuPIaWcINpQ7ipaUOFxdy1NgzDb+ycG8fRaCk5tEoqKSRnQIngjAGVQmgpgBJSny8XP973FzPGStBZXu8qWhDJOQcApZSUEgA4F0prxhgAUABCCMaYEGKtnU6nCRD8ecDPb+nrbJluq2N+QAiVZVmVxQItsmyDMc7W6/n7x2q5WiCEUoTSdLP52u/3P8PDR9k+xN7gAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9de4d62e51a1cf0025cc5500310d1edf/a0b58/tmc_paste_3.webp 230w","/static/9de4d62e51a1cf0025cc5500310d1edf/bc10c/tmc_paste_3.webp 460w","/static/9de4d62e51a1cf0025cc5500310d1edf/a7d21/tmc_paste_3.webp 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9de4d62e51a1cf0025cc5500310d1edf/81c8e/tmc_paste_3.png 230w","/static/9de4d62e51a1cf0025cc5500310d1edf/08a84/tmc_paste_3.png 460w","/static/9de4d62e51a1cf0025cc5500310d1edf/71ce0/tmc_paste_3.png 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9de4d62e51a1cf0025cc5500310d1edf/71ce0/tmc_paste_3.png","alt":"tmc paste 3","title":"tmc paste 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä linkki sinun tulee liittää palautuslomakkeeseen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"osan-14-arvioinnista","style":"position:relative;"},"children":[{"type":"text","value":"Osan 14 arvioinnista"},{"type":"element","tagName":"a","properties":{"href":"#osan-14-arvioinnista","ariaLabel":"osan 14 arvioinnista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän viikon tavoitteena on saada aikaan toimiva peli. Koska osassa on vain yksi tehtävä, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"myös yritys hyväksytään"}]},{"type":"text","value":". Voit siis palauttaa pelisi vaikka se ei toimisikaan haluamallasi tavalla."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et saa peliä toimimaan, kirjoita ohjelmakoodin kommentteihin miten pelin (tai jonkin puuttuvan ominaisuuden) olisi tarkoitus toimia."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun arvioit (osittain tai kokonaan) toimimatonta peliä, pyri arviossasi mahdollisuuksien mukaan kertomaan mitä pelin valmiiksi saaminen olisi mielestäsi vaatinut."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"peli-ideoita","style":"position:relative;"},"children":[{"type":"text","value":"Peli-ideoita"},{"type":"element","tagName":"a","properties":{"href":"#peli-ideoita","ariaLabel":"peli ideoita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit valita pelin aiheen vapaasti mutta tässä on joitakin ideoita. Pelin tekemisessä on hyötyä myös viikon 13 materiaalista."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"kerailypeli","style":"position:relative;"},"children":[{"type":"text","value":"Keräilypeli"},{"type":"element","tagName":"a","properties":{"href":"#kerailypeli","ariaLabel":"kerailypeli permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelaaja liikuttaa robottia nuolinäppäimillä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ruudulla on kolikko, joka robotin tulee kerätä. Kun robotti saa kolikon, se siirtyy uuteen paikkaan."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ruudulla liikkuu myös hirviöitä, joita robotin tulee väistellä."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"rahasade","style":"position:relative;"},"children":[{"type":"text","value":"Rahasade"},{"type":"element","tagName":"a","properties":{"href":"#rahasade","ariaLabel":"rahasade permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ruudun alareunassa on robotti, jota pelaaja voi liikuttaa vasemmalle tai oikealle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Taivaalta sataa rahaa, jota robotin tulee kerätä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Taivaalta sataa myös hirviöitä, joita robotin tulee väistellä."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"vertaisarviointi","style":"position:relative;"},"children":[{"type":"text","value":"Vertaisarviointi"},{"type":"element","tagName":"a","properties":{"href":"#vertaisarviointi","ariaLabel":"vertaisarviointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvioi peliä esimerkiksi seuraavien kriteerien mukaan:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Miltä peli näyttää?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Onko peli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pelattava"}]},{"type":"text","value":", ts. onko sen pelaaminen hauskaa ja sujuvaa?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Onko peli-idea kiinnostava?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Miten hyvin peliohjelma on kirjoitettu? Onko pelissä hyödynnetty tarvittavissa kohdin järkevästi funktioita ja luokkia?"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvään arvioon kuuluu yleensä se, että löydät ohjelmasta sekä hyviä puolia että jotain kehitettävää."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"loppukysely","style":"position:relative;"},"children":[{"type":"text","value":"Loppukysely"},{"type":"element","tagName":"a","properties":{"href":"#loppukysely","ariaLabel":"loppukysely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa ensin osion loppukyselyyn..."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...ja sitten vielä koko kurssin loppukyselyyn:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96"},"children":[]}]}],"data":{"quirksMode":false}},"html":"

    Viikon tehtävä

    \n

    Tämän viikon tehtäväsi on tehdä oma pieni peli Pygamen avulla. Peliä varten tehtäväpohjassa on joukko kuvia, joita voit käyttää pelissä. Älä käytä muita kuvia, jotta muutkin pystyvät kokeilemaan peliä koodin perusteella.

    \n

    Saat päättää pelin aiheen itse, ja pelin tulisi olla suunnilleen saman laajuinen kuin tämän viikon esimerkki. Pelin tulisi noudattaa seuraavia vaatimuksia:

    \n
      \n
    • Pelissä on hahmo, jota pelaaja pystyy liikuttamaan
    • \n
    • Pelissä on kerättäviä asioita ja/tai vihollisia
    • \n
    • Pelaajalla on jokin selkeä tavoite
    • \n
    • Pelissä on laskuri, joka näyttää, miten pelaaminen sujuu
    • \n
    • Pelin koodi on jaettu sopivasti funktioihin tämän viikon esimerkin tyylisesti
    • \n
    \n

    Kun peli on valmis, lähetä se vertaisarviointiin alla olevan lomakkeen avulla. Tämän jälkeen tutustu vielä kahden muun kurssilaisen peliin ja anna niille mielestäsi sopiva arvosana ja kirjoita lyhyt arvio peleistä. Ota arvioinnissa huomioon sekä pelin kiinnostavuus ja pelattavuus että koodin selkeys.

    \n

    Pelin lähettäminen

    \n

    Pelin lähetys onnistuu lähettämällä oma ohjelmakoodi TMC Paste -ominaisuuden avulla palvelimelle ja liittämällä linkki palautuslomakkeeseen.

    \n

    Klikkaa ensin TMC-painiketta (silmän oikealla puolella oleva painike). Tämä avaa valikon, josta löydät oikean ominaisuuden kirjoittamalla hakukenttään sanan send:

    \n\n \n \n \n \n \n \"tmc\n \n \n \n

    Kun klikkaat valintaa Send Exercise to TMC Paste, ruudun oikeaan alakulmaan putkahtaa tieto siitä, että ohjelmakoodi on lähetetty palvelimelle:

    \n\n \n \n \n \n \n \"tmc\n \n \n \n

    Tämä linkki sinun tulee liittää palautuslomakkeeseen.

    \n

    Osan 14 arvioinnista

    \n

    Tämän viikon tavoitteena on saada aikaan toimiva peli. Koska osassa on vain yksi tehtävä, myös yritys hyväksytään. Voit siis palauttaa pelisi vaikka se ei toimisikaan haluamallasi tavalla.

    \n

    Jos et saa peliä toimimaan, kirjoita ohjelmakoodin kommentteihin miten pelin (tai jonkin puuttuvan ominaisuuden) olisi tarkoitus toimia.

    \n

    Kun arvioit (osittain tai kokonaan) toimimatonta peliä, pyri arviossasi mahdollisuuksien mukaan kertomaan mitä pelin valmiiksi saaminen olisi mielestäsi vaatinut.

    \n

    Peli-ideoita

    \n

    Voit valita pelin aiheen vapaasti mutta tässä on joitakin ideoita. Pelin tekemisessä on hyötyä myös viikon 13 materiaalista.

    \n

    Keräilypeli

    \n
      \n
    • Pelaaja liikuttaa robottia nuolinäppäimillä
    • \n
    • Ruudulla on kolikko, joka robotin tulee kerätä. Kun robotti saa kolikon, se siirtyy uuteen paikkaan.
    • \n
    • Ruudulla liikkuu myös hirviöitä, joita robotin tulee väistellä.
    • \n
    \n

    Rahasade

    \n
      \n
    • Ruudun alareunassa on robotti, jota pelaaja voi liikuttaa vasemmalle tai oikealle
    • \n
    • Taivaalta sataa rahaa, jota robotin tulee kerätä.
    • \n
    • Taivaalta sataa myös hirviöitä, joita robotin tulee väistellä.
    • \n
    \n

    Vertaisarviointi

    \n

    Arvioi peliä esimerkiksi seuraavien kriteerien mukaan:

    \n
      \n
    • Miltä peli näyttää?
    • \n
    • Onko peli pelattava, ts. onko sen pelaaminen hauskaa ja sujuvaa?
    • \n
    • Onko peli-idea kiinnostava?
    • \n
    • Miten hyvin peliohjelma on kirjoitettu? Onko pelissä hyödynnetty tarvittavissa kohdin järkevästi funktioita ja luokkia?
    • \n
    \n

    Hyvään arvioon kuuluu yleensä se, että löydät ohjelmasta sekä hyviä puolia että jotain kehitettävää.

    \n
    \n

    Loppukysely

    \n

    Vastaa ensin osion loppukyselyyn...

    \n
    \n

    ...ja sitten vielä koko kurssin loppukyselyyn:

    \n
    ","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/4-oma-peli.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"h2","properties":{"id":"viikon-tehtava","style":"position:relative;"},"children":[{"type":"text","value":"Viikon tehtävä"},{"type":"element","tagName":"a","properties":{"href":"#viikon-tehtava","ariaLabel":"viikon tehtava permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän viikon tehtäväsi on tehdä oma pieni peli Pygamen avulla. Peliä varten tehtäväpohjassa on joukko kuvia, joita voit käyttää pelissä. Älä käytä muita kuvia, jotta muutkin pystyvät kokeilemaan peliä koodin perusteella."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saat päättää pelin aiheen itse, ja pelin tulisi olla suunnilleen saman laajuinen kuin tämän viikon esimerkki. Pelin tulisi noudattaa seuraavia vaatimuksia:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelissä on hahmo, jota pelaaja pystyy liikuttamaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelissä on kerättäviä asioita ja/tai vihollisia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelaajalla on jokin selkeä tavoite"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelissä on laskuri, joka näyttää, miten pelaaminen sujuu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelin koodi on jaettu sopivasti funktioihin tämän viikon esimerkin tyylisesti"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun peli on valmis, lähetä se vertaisarviointiin alla olevan lomakkeen avulla. Tämän jälkeen tutustu vielä kahden muun kurssilaisen peliin ja anna niille mielestäsi sopiva arvosana ja kirjoita lyhyt arvio peleistä. Ota arvioinnissa huomioon sekä pelin kiinnostavuus ja pelattavuus että koodin selkeys."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"pelin-lahettaminen","style":"position:relative;"},"children":[{"type":"text","value":"Pelin lähettäminen"},{"type":"element","tagName":"a","properties":{"href":"#pelin-lahettaminen","ariaLabel":"pelin lahettaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelin lähetys onnistuu lähettämällä oma ohjelmakoodi TMC Paste -ominaisuuden avulla palvelimelle ja liittämällä linkki palautuslomakkeeseen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Klikkaa ensin TMC-painiketta (silmän oikealla puolella oleva painike). Tämä avaa valikon, josta löydät oikean ominaisuuden kirjoittamalla hakukenttään sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"send"}]},{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 626px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/6bf3f5cce371044c253dc34c755ee566/af590/tmc_paste_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 10.869565217391305%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAWElEQVQI12PQsfGwDYy38o208Aw1tPcwsHM3tPcwtPfQtXbVwY307b2U1bUZhHXs+c1D+I19hY09lUwc5Y0c5IzslUwdhTUt+NXMBNSxIEF1M1lDeylFNQBUlRfSchJdXQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6bf3f5cce371044c253dc34c755ee566/a0b58/tmc_paste_1.webp 230w","/static/6bf3f5cce371044c253dc34c755ee566/bc10c/tmc_paste_1.webp 460w","/static/6bf3f5cce371044c253dc34c755ee566/63b03/tmc_paste_1.webp 626w"],"sizes":"(max-width: 626px) 100vw, 626px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6bf3f5cce371044c253dc34c755ee566/81c8e/tmc_paste_1.png 230w","/static/6bf3f5cce371044c253dc34c755ee566/08a84/tmc_paste_1.png 460w","/static/6bf3f5cce371044c253dc34c755ee566/af590/tmc_paste_1.png 626w"],"sizes":"(max-width: 626px) 100vw, 626px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/6bf3f5cce371044c253dc34c755ee566/af590/tmc_paste_1.png","alt":"tmc paste 1","title":"tmc paste 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun klikkaat valintaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Send Exercise to TMC Paste"}]},{"type":"text","value":", ruudun oikeaan alakulmaan putkahtaa tieto siitä, että ohjelmakoodi on lähetetty palvelimelle:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 463px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8513d666220a4b7cb4b0fe987d121287/71ce0/tmc_paste_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 26.521739130434778%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA40lEQVQY02XKW3KEIBQEUPeRivLwKggCFy4wTh46TrKG/GQXs4asJFloasxnuk519Uc3nQ7KZevROJwOxidQpuXQyaGTYyugFcMBWK8Y6NGiDcTU3HAdqb68v+2X7bK9btu6Xvf96bxEjBHRe59SSjGlRJnIGtML7t1cIvbaNm0/aqVjooDR++BcQIz3Zy6ZckqZ8rFLrfXkneMTMkPdFDuNDUzhVAgxLsu5llJzrqVmIgAQQkgppRBS/EUKxvjnl7392Nv3w/rRtDCBsr0yoCzo+eg7Mej/eK9YeOb5yml/NPkXc5s2qFqAD9IAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8513d666220a4b7cb4b0fe987d121287/a0b58/tmc_paste_2.webp 230w","/static/8513d666220a4b7cb4b0fe987d121287/bc10c/tmc_paste_2.webp 460w","/static/8513d666220a4b7cb4b0fe987d121287/a7d21/tmc_paste_2.webp 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8513d666220a4b7cb4b0fe987d121287/81c8e/tmc_paste_2.png 230w","/static/8513d666220a4b7cb4b0fe987d121287/08a84/tmc_paste_2.png 460w","/static/8513d666220a4b7cb4b0fe987d121287/71ce0/tmc_paste_2.png 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8513d666220a4b7cb4b0fe987d121287/71ce0/tmc_paste_2.png","alt":"tmc paste 2","title":"tmc paste 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saat linkin kopioitua leikepöydälle klikkaamalla painiketta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Open URL"}]},{"type":"text","value":" ja valitsemalla aukeavasta ikkunasta valihtoehdon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Copy"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 463px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9de4d62e51a1cf0025cc5500310d1edf/71ce0/tmc_paste_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 31.304347826086953%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABHUlEQVQY002Ly07CQBhG+8A+lQuXunGLISyUpAO4oUiAkrbQmfnn2s6FztRSA4nRLydfchYnqfKdrMsiP56KgjE2fMcYuj6GGG//j7v2IYbOex9jnEwmyWwLT0vpXFBtZ1zUJjY2qjYY17e2b13f2Nje6LUJXHXG9dfrMI5jmqbJ4/z88HLyPhDhhL5Q6YV2VFiuPIaWcINpQ7ipaUOFxdy1NgzDb+ycG8fRaCk5tEoqKSRnQIngjAGVQmgpgBJSny8XP973FzPGStBZXu8qWhDJOQcApZSUEgA4F0prxhgAUABCCMaYEGKtnU6nCRD8ecDPb+nrbJluq2N+QAiVZVmVxQItsmyDMc7W6/n7x2q5WiCEUoTSdLP52u/3P8PDR9k+xN7gAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9de4d62e51a1cf0025cc5500310d1edf/a0b58/tmc_paste_3.webp 230w","/static/9de4d62e51a1cf0025cc5500310d1edf/bc10c/tmc_paste_3.webp 460w","/static/9de4d62e51a1cf0025cc5500310d1edf/a7d21/tmc_paste_3.webp 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9de4d62e51a1cf0025cc5500310d1edf/81c8e/tmc_paste_3.png 230w","/static/9de4d62e51a1cf0025cc5500310d1edf/08a84/tmc_paste_3.png 460w","/static/9de4d62e51a1cf0025cc5500310d1edf/71ce0/tmc_paste_3.png 463w"],"sizes":"(max-width: 463px) 100vw, 463px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9de4d62e51a1cf0025cc5500310d1edf/71ce0/tmc_paste_3.png","alt":"tmc paste 3","title":"tmc paste 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä linkki sinun tulee liittää palautuslomakkeeseen."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"osan-14-arvioinnista","style":"position:relative;"},"children":[{"type":"text","value":"Osan 14 arvioinnista"},{"type":"element","tagName":"a","properties":{"href":"#osan-14-arvioinnista","ariaLabel":"osan 14 arvioinnista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän viikon tavoitteena on saada aikaan toimiva peli. Koska osassa on vain yksi tehtävä, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"myös yritys hyväksytään"}]},{"type":"text","value":". Voit siis palauttaa pelisi vaikka se ei toimisikaan haluamallasi tavalla."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et saa peliä toimimaan, kirjoita ohjelmakoodin kommentteihin miten pelin (tai jonkin puuttuvan ominaisuuden) olisi tarkoitus toimia."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun arvioit (osittain tai kokonaan) toimimatonta peliä, pyri arviossasi mahdollisuuksien mukaan kertomaan mitä pelin valmiiksi saaminen olisi mielestäsi vaatinut."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"peli-ideoita","style":"position:relative;"},"children":[{"type":"text","value":"Peli-ideoita"},{"type":"element","tagName":"a","properties":{"href":"#peli-ideoita","ariaLabel":"peli ideoita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit valita pelin aiheen vapaasti mutta tässä on joitakin ideoita. Pelin tekemisessä on hyötyä myös viikon 13 materiaalista."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"kerailypeli","style":"position:relative;"},"children":[{"type":"text","value":"Keräilypeli"},{"type":"element","tagName":"a","properties":{"href":"#kerailypeli","ariaLabel":"kerailypeli permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pelaaja liikuttaa robottia nuolinäppäimillä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ruudulla on kolikko, joka robotin tulee kerätä. Kun robotti saa kolikon, se siirtyy uuteen paikkaan."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ruudulla liikkuu myös hirviöitä, joita robotin tulee väistellä."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"rahasade","style":"position:relative;"},"children":[{"type":"text","value":"Rahasade"},{"type":"element","tagName":"a","properties":{"href":"#rahasade","ariaLabel":"rahasade permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ruudun alareunassa on robotti, jota pelaaja voi liikuttaa vasemmalle tai oikealle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Taivaalta sataa rahaa, jota robotin tulee kerätä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Taivaalta sataa myös hirviöitä, joita robotin tulee väistellä."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"vertaisarviointi","style":"position:relative;"},"children":[{"type":"text","value":"Vertaisarviointi"},{"type":"element","tagName":"a","properties":{"href":"#vertaisarviointi","ariaLabel":"vertaisarviointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvioi peliä esimerkiksi seuraavien kriteerien mukaan:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Miltä peli näyttää?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Onko peli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pelattava"}]},{"type":"text","value":", ts. onko sen pelaaminen hauskaa ja sujuvaa?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Onko peli-idea kiinnostava?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Miten hyvin peliohjelma on kirjoitettu? Onko pelissä hyödynnetty tarvittavissa kohdin järkevästi funktioita ja luokkia?"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvään arvioon kuuluu yleensä se, että löydät ohjelmasta sekä hyviä puolia että jotain kehitettävää."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"loppukysely","style":"position:relative;"},"children":[{"type":"text","value":"Loppukysely"},{"type":"element","tagName":"a","properties":{"href":"#loppukysely","ariaLabel":"loppukysely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa ensin osion loppukyselyyn..."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91"},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...ja sitten vielä koko kurssin loppukyselyyn:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96"},"children":[]}]}],"data":{"quirksMode":false}},"html":"

    Viikon tehtävä

    \n

    Tämän viikon tehtäväsi on tehdä oma pieni peli Pygamen avulla. Peliä varten tehtäväpohjassa on joukko kuvia, joita voit käyttää pelissä. Älä käytä muita kuvia, jotta muutkin pystyvät kokeilemaan peliä koodin perusteella.

    \n

    Saat päättää pelin aiheen itse, ja pelin tulisi olla suunnilleen saman laajuinen kuin tämän viikon esimerkki. Pelin tulisi noudattaa seuraavia vaatimuksia:

    \n
      \n
    • Pelissä on hahmo, jota pelaaja pystyy liikuttamaan
    • \n
    • Pelissä on kerättäviä asioita ja/tai vihollisia
    • \n
    • Pelaajalla on jokin selkeä tavoite
    • \n
    • Pelissä on laskuri, joka näyttää, miten pelaaminen sujuu
    • \n
    • Pelin koodi on jaettu sopivasti funktioihin tämän viikon esimerkin tyylisesti
    • \n
    \n

    Kun peli on valmis, lähetä se vertaisarviointiin alla olevan lomakkeen avulla. Tämän jälkeen tutustu vielä kahden muun kurssilaisen peliin ja anna niille mielestäsi sopiva arvosana ja kirjoita lyhyt arvio peleistä. Ota arvioinnissa huomioon sekä pelin kiinnostavuus ja pelattavuus että koodin selkeys.

    \n

    Pelin lähettäminen

    \n

    Pelin lähetys onnistuu lähettämällä oma ohjelmakoodi TMC Paste -ominaisuuden avulla palvelimelle ja liittämällä linkki palautuslomakkeeseen.

    \n

    Klikkaa ensin TMC-painiketta (silmän oikealla puolella oleva painike). Tämä avaa valikon, josta löydät oikean ominaisuuden kirjoittamalla hakukenttään sanan send:

    \n\n \n \n \n \n \n \"tmc\n \n \n \n

    Kun klikkaat valintaa Send Exercise to TMC Paste, ruudun oikeaan alakulmaan putkahtaa tieto siitä, että ohjelmakoodi on lähetetty palvelimelle:

    \n\n \n \n \n \n \n \"tmc\n \n \n \n

    Tämä linkki sinun tulee liittää palautuslomakkeeseen.

    \n

    Osan 14 arvioinnista

    \n

    Tämän viikon tavoitteena on saada aikaan toimiva peli. Koska osassa on vain yksi tehtävä, myös yritys hyväksytään. Voit siis palauttaa pelisi vaikka se ei toimisikaan haluamallasi tavalla.

    \n

    Jos et saa peliä toimimaan, kirjoita ohjelmakoodin kommentteihin miten pelin (tai jonkin puuttuvan ominaisuuden) olisi tarkoitus toimia.

    \n

    Kun arvioit (osittain tai kokonaan) toimimatonta peliä, pyri arviossasi mahdollisuuksien mukaan kertomaan mitä pelin valmiiksi saaminen olisi mielestäsi vaatinut.

    \n

    Peli-ideoita

    \n

    Voit valita pelin aiheen vapaasti mutta tässä on joitakin ideoita. Pelin tekemisessä on hyötyä myös viikon 13 materiaalista.

    \n

    Keräilypeli

    \n
      \n
    • Pelaaja liikuttaa robottia nuolinäppäimillä
    • \n
    • Ruudulla on kolikko, joka robotin tulee kerätä. Kun robotti saa kolikon, se siirtyy uuteen paikkaan.
    • \n
    • Ruudulla liikkuu myös hirviöitä, joita robotin tulee väistellä.
    • \n
    \n

    Rahasade

    \n
      \n
    • Ruudun alareunassa on robotti, jota pelaaja voi liikuttaa vasemmalle tai oikealle
    • \n
    • Taivaalta sataa rahaa, jota robotin tulee kerätä.
    • \n
    • Taivaalta sataa myös hirviöitä, joita robotin tulee väistellä.
    • \n
    \n

    Vertaisarviointi

    \n

    Arvioi peliä esimerkiksi seuraavien kriteerien mukaan:

    \n
      \n
    • Miltä peli näyttää?
    • \n
    • Onko peli pelattava, ts. onko sen pelaaminen hauskaa ja sujuvaa?
    • \n
    • Onko peli-idea kiinnostava?
    • \n
    • Miten hyvin peliohjelma on kirjoitettu? Onko pelissä hyödynnetty tarvittavissa kohdin järkevästi funktioita ja luokkia?
    • \n
    \n

    Hyvään arvioon kuuluu yleensä se, että löydät ohjelmasta sekä hyviä puolia että jotain kehitettävää.

    \n
    \n

    Loppukysely

    \n

    Vastaa ensin osion loppukyselyyn...

    \n
    \n

    ...ja sitten vielä koko kurssin loppukyselyyn:

    \n
    ","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/4-oma-peli.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-14/page-data.json b/page-data/osa-14/page-data.json index 6e612ae1b..b5e58a59b 100644 --- a/page-data/osa-14/page-data.json +++ b/page-data/osa-14/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-14", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-14","title":"Osa 14"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-14","title":"Osa 14"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-14/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-2/1-ohjelmoinnin-termeja/page-data.json b/page-data/osa-2/1-ohjelmoinnin-termeja/page-data.json index 66872d668..a1a3963c2 100644 --- a/page-data/osa-2/1-ohjelmoinnin-termeja/page-data.json +++ b/page-data/osa-2/1-ohjelmoinnin-termeja/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-2/1-ohjelmoinnin-termeja", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet keskeistä ohjelmoinnin termistöä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät lauseen ja lausekkeen eron"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat selvittää lausekkeen arvon tyypin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Opit etsimään virheitä debuggauksen avulla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Emme vielä kurssin ensimmäisessä osassa kiinnittäneet kovin tarkasti huomiota ohjelmoinnin terminologiaan. Nyt on hyvä hetki tutustua joihinkin käsitteisiin."}]},{"type":"element","tagName":"h2","properties":{"id":"lause","style":"position:relative;"},"children":[{"type":"text","value":"Lause"},{"type":"element","tagName":"a","properties":{"href":"#lause","ariaLabel":"lause permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lause"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"statement"}]},{"type":"text","value":") tarkoittaa ohjelman osaa, joka suorittaa jonkin toiminnon. Usein lause viittaa yksittäiseen komentoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print(\"Moi!\")"}]},{"type":"text","value":" on lause, joka tulostaa rivin tekstiä,\nja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku = 2"}]},{"type":"text","value":" on lause, joka asettaa muuttujalle arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lause voi olla myös monimutkaisempi, ja sen sisällä voi olla muita lauseita.\nEsimerkiksi seuraava ehtolause muodostuu kolmesta rivistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa ehtolauseen sisällä on kaksi lausetta."}]},{"type":"element","tagName":"h2","properties":{"id":"lohko","style":"position:relative;"},"children":[{"type":"text","value":"Lohko"},{"type":"element","tagName":"a","properties":{"href":"#lohko","ariaLabel":"lohko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lohko"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"block"}]},{"type":"text","value":") on joukko peräkkäin sijoitettuja lauseita, jotka ovat samalla tasolla ohjelman rakenteessa. Esimerkiksi ehtolauseessa lohkossa ovat lauseet, jotka suoritetaan ehdon ollessa tosi."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ehtolauseessa oleva lohko alkaa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet täysi-ikäinen!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nyt vuoden vanhempi...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lohko loppuu"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tämä on eri lohkossa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa lohko ilmaistaan sisentämällä lohkon koodi eli lauseet samalle tasolle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että Python-ohjelman \"päälohkon\" on oltava sisennetty tiedoston vasempaan reunaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä ohjelma ei toimi sillä koodia ei ole sisennetty vasempaan reunaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei maailma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"huono ohjelma...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lauseke","style":"position:relative;"},"children":[{"type":"text","value":"Lauseke"},{"type":"element","tagName":"a","properties":{"href":"#lauseke","ariaLabel":"lauseke permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lauseke"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"expression"}]},{"type":"text","value":") on koodin osa, jolla on jokin tyyppi. Ohjelman suorituksen aikana lauseke saa arvon, jota voidaan käyttää ohjelmassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan muutamaa esimerkkiä lausekkeista:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Lauseke"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Arvo"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Tyyppi"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Tyyppi Pythonissa"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 + 4 + 3"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"kokonaisluku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"abc\" + \"de\""}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"abcde\""}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"merkkijono"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"11 / 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"5.5"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"liukuluku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 * 5 > 9"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"totuusarvo"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska lausekkeella on arvo, voi sen sijoittaa muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muuttuja x saa arvoksi lausekkeen 1 + 2 arvon"}]},{"type":"text","value":"\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertaisesta lausekkeesta saa muodostettua monimutkaisempia lausekkeita esim. laskuoperaattorien avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muuttuja y saa arvoksi lausekkeen '3 kertaa x plus x toiseen' arvon"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktio","style":"position:relative;"},"children":[{"type":"text","value":"Funktio"},{"type":"element","tagName":"a","properties":{"href":"#funktio","ariaLabel":"funktio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Funktio"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"function"}]},{"type":"text","value":") suorittaa jonkin toiminnon. Funktiolla voi olla yksi tai useampi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parametri"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parameter"}]},{"type":"text","value":"), jotka ilmaisevat, mitä funktion tulee tehdä tarkalleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio suoritetaan, kun sitä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kutsutaan"}]},{"type":"text","value":" eli koodissa on funktion nimi ja funktiolle annettavat parametrit suluissa. Esimerkiksi seuraava koodi kutsuu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-funktiota parametrilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tämä on parametri\""}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tämä on parametri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös käyttäjältä syötteitä lukeva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" on funktio. Parametrina funktio saa käyttäjälle näytettävän viestin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kerro nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" arvon, mikä tarkoittaa, että funktion kutsukohtaan ilmestyy arvo funktion suorituksen jälkeen. Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" palauttama arvo on käyttäjän syöttämä teksti merkkijonona. Funktion palauttama arvo sijoitetaan usein muuttujan arvoksi, jotta arvoa voidaan hyödyntää ohjelmassa."}]},{"type":"element","tagName":"h2","properties":{"id":"tyyppi","style":"position:relative;"},"children":[{"type":"text","value":"Tyyppi"},{"type":"element","tagName":"a","properties":{"href":"#tyyppi","ariaLabel":"tyyppi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tyyppi"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"type"}]},{"type":"text","value":") tarkoittaa, millainen jokin koodissa esiintyvä arvo on. Esimerkiksi seuraavassa koodissa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" tyyppi on merkkijono ja muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" tyyppi on kokonaisluku:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" kertoo annetun lausekkeen tyypin. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"syntaksi","style":"position:relative;"},"children":[{"type":"text","value":"Syntaksi"},{"type":"element","tagName":"a","properties":{"href":"#syntaksi","ariaLabel":"syntaksi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Syntaksi"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"syntax"}]},{"type":"text","value":") määrittää, miten ohjelman koodi tulee kirjoittaa. Jokaisella ohjelmointikielellä on omanlainen syntaksinsa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi Python-kielen syntaksiin kuuluu, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lauseen aloitusrivin lopussa on kaksoispiste ja ehtoon kuuluva koodi on sisennetty:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelmointikielen syntaksia ei noudateta, seurauksena on virheilmoitus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":" File \"testi.py\", line 1\n if nimi == \"Anna\"\n ^\nSyntaxError: invalid syntax\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"debuggaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Debuggaaminen"},{"type":"element","tagName":"a","properties":{"href":"#debuggaaminen","ariaLabel":"debuggaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelman syntaksi on kunnossa mutta ohjelma ei toimi halutulla tavalla, ohjelmassa on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"bugi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bugit ilmenevät eri tavoin. Jotkin bugit aiheuttavat suoritusaikaisen virheen. Esim. ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" y\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" jaettuna "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"aiheuttaa seuraavan virheen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"ZeroDivisionError: integer division or modulo by zero on line 3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelma on siis siinä, että nollalla jakaminen ei ole sallittua ja se keskeyttää ohjelman suorituksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suoritusaikaiseen virheeseen johtavat bugit ovat usein helpohkoja korjata, sillä bugin aiheuttama rivi selviää virheilmoituksesta. Toki bugin varsinainen syy on usein muualla kuin virheilmoituksen aiheuttaneessa rivissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus bugi taas ilmenee siten, että koodin tuottama tulos on virheellinen. Tälläisten bugien havaitseminen ja niiden syyn paikallistaminen voi olla haastavaa. Kurssin tehtävissä testit paljastavat usein juuri tämän kategorian bugeja. Ennen kuin ongelma päästään korjaamaan, on bugi paikallistettava."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodarijargonissa bugien syiden selvittämistä kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"debuggaamiseksi"}]},{"type":"text","value":". Debuggaaminen on äärimmäisen keskeinen taito, ja ammatikseen ohjelmoivat käyttävät usein enemmän aikaa debuggaamiseen kuin varsinaiseen ohjelmointiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertainen mutta tehokas debuggauskeino on lisätä ohjelmaan debug-tulostuksia eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoja, joiden avulla varmistetaan, että koodissa tapahtuu ohjelmoijan olettamia asioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on ratkaisuyritys yhteen "},{"type":"element","tagName":"a","properties":{"href":"/osa-1/5-ehtorakenne"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" tehtävään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntipalkka: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntunnit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Työtunnit: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viikonpäivä: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma ei näytä toimivan oikein ja testien suoritus kertoo seuraavaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"FAIL: PalkkaTest: test_sunnuntai_1\n\nSyötteellä 23.0, 12, sunnuntai oikeaa palkkaa 552.0 ei löydy tulosteestasi Palkka 276.0 euroa\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen askel debuggaamisessa on useimmiten kokeilla ohjelmaa ongelmallisella syötteellä. Kokeilu varmistaa, että tulos ei ole haluttu:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palkka 276.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debugattaessa ohjelman toimintaa kokeillaan usein. Voikin olla hyödyllisä \"kovakoodata\" ongelman aiheuttavat syötteet suoraan koodiin sen sijaan, että ne kysyttäisiin joka kerta käyttäjältä. Tämä onnistuu esimerkiksi muuttamalla koodia tilapäisesti seuraavalla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tuntipalkka = float(input(\"Tuntipalkka: \"))"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tunnit = int(input(\"Työtunnit: \"))"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# paiva = input(\"Viikonpäivä: \")"}]},{"type":"text","value":"\ntuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23.0"}]},{"type":"text","value":"\ntunnit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"text","value":"\npaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnuntai\""}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava askel on lisäillä koodiin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"debug-tulostuksia"}]},{"type":"text","value":". Koska nimenomaan sunnuntain palkka lasketaan väärin, laitetaan sen hoitavaan osaan tulostukset korotusta ennen ja sen jälkeen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka kasvatuksen jälkeen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma nyt suoritetaan, ei debug-tulostuksia jostain syystä näy ollenkaan. Vaikuttaa siltä, että ohjelman suoritus ei edes mene if-haaraan. Komennon ehdossa täytyy siis olla jokin ongelma. Ehdon arvokin voidaan tulostaa koodista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka kasvatuksen jälkeen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ja tosiaan kun koodi suoritetaan, ehdon arvo on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" eli koodi hyppää if-lohkon ohi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ehto: False\nPalkka 276.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vian täytyy siis olla if-komennon ehdossa, ja kun sitä katsotaan tarkemmin, huomataan, että "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sunnuntai"}]},{"type":"text","value":" on vahingossa kirjoitettu väärin. Korjataan typo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka kasvatuksen jälkeen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin suoritus aiheuttaa nyt seuraavan tulostuksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 276.0\nPalkka 276.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuntipalkka = 23.0"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnit = 12"}]},{"type":"text","value":", vaikuttaa muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkka"}]},{"type":"text","value":" olevan oikea arvo aluksi, mutta kasvatuskomento ei kuitenkaan kasvata muuttujan arvoa. Komento on siis mitä ilmeisemmin virheellinen. Ja toden totta, komento"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ainoastaan laskee tuplapalkan mutta ei tee tulokselle mitään. Korjataan komento muotoon, joka tallentaa korotetun palkan muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkka"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma suoritetaan nyt, huomataan että lopputuloskin on oikea:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 552.0\nPalkka 552.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma on kunnossa, tulee debuggaustulosteet ja muu debuggauksen takia kirjoitettu ylimääräinen koodi poistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki oli yksinkertainen ja näin lyhyessä ohjelmassa oleva bugi selviäisi varmasti myös koodia lukemalla. Monesti kuitenkin debug-tulostuksilla pääsee huomattavasti nopeammin jyvälle siitä, missä vika piilee. Tulostamalla voidaan usein varmistua siitä, mitkä osat ohjelmasta toimivat \"varmuudella\" oikein, ja bugien jäljitys voidaan nopeasti saada kohdistettua niihin koodiriveihin, joissa ongelma todennäköisesti piileskelee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggaukseen on olemassa muitakin keinoja kuin debug-tulostusten tekeminen. Palaamme asiaan myöhemmin kurssilla. Sinun kannattaa tästä lähtien kurssilla käyttää debug-tulostamista virheiden etsimiseen. Ohjelmoinnin ammattilaiset eivät selviä työstään ilman debug-tulostuksia, joten on vaikea kuvitella, että aloittelijoidenkin ei kannattaisi laajentaa työkalupakkiaan tältä osin."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa virheet","tmcname":"osa02-01_korjaa_virheet","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa ohjelmassa on useita "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"syntaksivirheitä"}]},{"type":"text","value":". Korjaa ohjelma siten, että syntaksi on kunnossa ja se toimii alla olevien esimerkkien mukaisesti."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku oli suurempi kuin sata\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"\"Nyt luvun arvo on pienentynyt sadalla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arvo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" taitaa olla onnenlukuni!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"\"Hyvää päivänjatkoa!"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"13"}]},{"type":"text","value":"\n13 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"101"}]},{"type":"text","value":"\nLuku oli suurempi kuin sata\nNyt luvun arvo on pienentynyt sadalla\nArvo on nyt 1\n1 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Merkkien määrä","tmcname":"osa02-02_merkkien_maara"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" voidaan laskea (muun muassa) merkkijonon pituus. Funktio palauttaa merkkijonossa olevien merkkien määrän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä funktion toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcd\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"heipparallaa\""}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntyhja_merkkijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tyhja_merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4\n6\n12\n0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä sanan ja tulostaa sanan merkkien määrän, mikäli niitä on enemmän kuin yksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: hei\nSanassa hei on 3 kirjainta\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: banaani\nSanassa banaani on 7 kirjainta\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: b\nKiitos!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tyyppimuunnos","tmcname":"osa02-03_tyyppimuunnos"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa voidaan usein muuntaa jokin arvo tyypistä toiseen. Esimerkiksi liukuluku voidaan muuntaa kokonaisluvuksi funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlampo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lämpötila: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lämpötila on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lampo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"...eli pyöreästi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lampo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5.15"}]},{"type":"text","value":"\nLämpötila on 5.15\n...eli pyöreästi 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktio ei pyöristä arvoa matematiikasta tutulla tavalla, vaan pyöristää luvun alaspäin (kyse on siis ns. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"lattiafunktiosta"}]},{"type":"text","value":"):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8.99"}]},{"type":"text","value":"\nLämpötila on 8.99\n...eli pyöreästi 8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee int-funktiota hyödyntäen ohjelma, joka kysyy käyttäjältä desimaaliluvun ja tulostaa erikseen luvun kokonaisosan ja desimaaliosan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Voit olettaa, että annettu desimaaliluku on suurempi kuin nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1.34"}]},{"type":"text","value":"\nKokonaisosa: 1\nDesimaaliosa: 0.34"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet keskeistä ohjelmoinnin termistöä
    • \n
    • Tiedät lauseen ja lausekkeen eron
    • \n
    • Osaat selvittää lausekkeen arvon tyypin
    • \n
    • Opit etsimään virheitä debuggauksen avulla
    • \n

    Emme vielä kurssin ensimmäisessä osassa kiinnittäneet kovin tarkasti huomiota ohjelmoinnin terminologiaan. Nyt on hyvä hetki tutustua joihinkin käsitteisiin.

    Lause

    Lause (engl. statement) tarkoittaa ohjelman osaa, joka suorittaa jonkin toiminnon. Usein lause viittaa yksittäiseen komentoon.

    Esimerkiksi print(\"Moi!\") on lause, joka tulostaa rivin tekstiä,\nja luku = 2 on lause, joka asettaa muuttujalle arvon.

    Lause voi olla myös monimutkaisempi, ja sen sisällä voi olla muita lauseita.\nEsimerkiksi seuraava ehtolause muodostuu kolmesta rivistä:

    if nimi == \"Anna\":\n    print(\"Moi!\")\n    luku = 2

    Tässä tapauksessa ehtolauseen sisällä on kaksi lausetta.

    Lohko

    Lohko (engl. block) on joukko peräkkäin sijoitettuja lauseita, jotka ovat samalla tasolla ohjelman rakenteessa. Esimerkiksi ehtolauseessa lohkossa ovat lauseet, jotka suoritetaan ehdon ollessa tosi.

    if ika > 17:\n    # ehtolauseessa oleva lohko alkaa\n    print(\"Olet täysi-ikäinen!\")\n    ika = ika + 1\n    print(\"nyt vuoden vanhempi...\")\n    # lohko loppuu\n\nprint(\"tämä on eri lohkossa\")

    Pythonissa lohko ilmaistaan sisentämällä lohkon koodi eli lauseet samalle tasolle.

    Kannattaa huomata, että Python-ohjelman \"päälohkon\" on oltava sisennetty tiedoston vasempaan reunaan:

    # tämä ohjelma ei toimi sillä koodia ei ole sisennetty vasempaan reunaan\n  print(\"hei maailma\")\n  print(\"huono ohjelma...\")

    Lauseke

    Lauseke (engl. expression) on koodin osa, jolla on jokin tyyppi. Ohjelman suorituksen aikana lauseke saa arvon, jota voidaan käyttää ohjelmassa.

    Tarkastellaan muutamaa esimerkkiä lausekkeista:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    LausekeArvoTyyppiTyyppi Pythonissa
    2 + 4 + 39kokonaislukuint
    \"abc\" + \"de\"\"abcde\"merkkijonostr
    11 / 25.5liukulukufloat
    2 * 5 > 9Truetotuusarvobool

    Koska lausekkeella on arvo, voi sen sijoittaa muuttujaan:

    # muuttuja x saa arvoksi lausekkeen 1 + 2 arvon\nx = 1 + 2

    Yksinkertaisesta lausekkeesta saa muodostettua monimutkaisempia lausekkeita esim. laskuoperaattorien avulla:

    # muuttuja y saa arvoksi lausekkeen '3 kertaa x plus x toiseen' arvon\ny = 3 * x + x**2

    Funktio

    Funktio (engl. function) suorittaa jonkin toiminnon. Funktiolla voi olla yksi tai useampi parametri (engl. parameter), jotka ilmaisevat, mitä funktion tulee tehdä tarkalleen.

    Funktio suoritetaan, kun sitä kutsutaan eli koodissa on funktion nimi ja funktiolle annettavat parametrit suluissa. Esimerkiksi seuraava koodi kutsuu print-funktiota parametrilla \"tämä on parametri\":

    print(\"tämä on parametri\")

    Myös käyttäjältä syötteitä lukeva input on funktio. Parametrina funktio saa käyttäjälle näytettävän viestin:

    nimi = input(\"Kerro nimesi: \")

    Tässä tapauksessa funktio palauttaa arvon, mikä tarkoittaa, että funktion kutsukohtaan ilmestyy arvo funktion suorituksen jälkeen. Funktion input palauttama arvo on käyttäjän syöttämä teksti merkkijonona. Funktion palauttama arvo sijoitetaan usein muuttujan arvoksi, jotta arvoa voidaan hyödyntää ohjelmassa.

    Tyyppi

    Tyyppi (engl. type) tarkoittaa, millainen jokin koodissa esiintyvä arvo on. Esimerkiksi seuraavassa koodissa muuttujan nimi tyyppi on merkkijono ja muuttujan tulos tyyppi on kokonaisluku:

    nimi = \"Anna\"\ntulos = 100

    Funktio type kertoo annetun lausekkeen tyypin. Esimerkiksi:

    print(type(\"Anna\"))\nprint(type(100))

    <class 'str'>\n<class 'int'>

    Syntaksi

    Syntaksi (engl. syntax) määrittää, miten ohjelman koodi tulee kirjoittaa. Jokaisella ohjelmointikielellä on omanlainen syntaksinsa.

    Esimerkiksi Python-kielen syntaksiin kuuluu, että if-lauseen aloitusrivin lopussa on kaksoispiste ja ehtoon kuuluva koodi on sisennetty:

    if nimi == \"Anna\":\n    print(\"Moi!\")

    Jos ohjelmointikielen syntaksia ei noudateta, seurauksena on virheilmoitus:

    if nimi == \"Anna\"\n    print(\"Moi!\")
    \n  File \"testi.py\", line 1\n    if nimi == \"Anna\"\n                    ^\nSyntaxError: invalid syntax\n

    Debuggaaminen

    Kun ohjelman syntaksi on kunnossa mutta ohjelma ei toimi halutulla tavalla, ohjelmassa on bugi.

    Bugit ilmenevät eri tavoin. Jotkin bugit aiheuttavat suoritusaikaisen virheen. Esim. ohjelma

    x = 10\ny = 0\ntulos = x / y\n\nprint(f\"{x} jaettuna {y} on {tulos}\")

    aiheuttaa seuraavan virheen:

    \nZeroDivisionError: integer division or modulo by zero on line 3\n

    Ongelma on siis siinä, että nollalla jakaminen ei ole sallittua ja se keskeyttää ohjelman suorituksen.

    Suoritusaikaiseen virheeseen johtavat bugit ovat usein helpohkoja korjata, sillä bugin aiheuttama rivi selviää virheilmoituksesta. Toki bugin varsinainen syy on usein muualla kuin virheilmoituksen aiheuttaneessa rivissä.

    Joskus bugi taas ilmenee siten, että koodin tuottama tulos on virheellinen. Tälläisten bugien havaitseminen ja niiden syyn paikallistaminen voi olla haastavaa. Kurssin tehtävissä testit paljastavat usein juuri tämän kategorian bugeja. Ennen kuin ongelma päästään korjaamaan, on bugi paikallistettava.

    Koodarijargonissa bugien syiden selvittämistä kutsutaan debuggaamiseksi. Debuggaaminen on äärimmäisen keskeinen taito, ja ammatikseen ohjelmoivat käyttävät usein enemmän aikaa debuggaamiseen kuin varsinaiseen ohjelmointiin.

    Yksinkertainen mutta tehokas debuggauskeino on lisätä ohjelmaan debug-tulostuksia eli print-komentoja, joiden avulla varmistetaan, että koodissa tapahtuu ohjelmoijan olettamia asioita.

    Seuraavassa on ratkaisuyritys yhteen edellisen osan tehtävään:

    tuntipalkka = float(input(\"Tuntipalkka: \"))\ntunnit = int(input(\"Työtunnit: \"))\npaiva = input(\"Viikonpäivä: \")\n\npalkka = tuntipalkka * tunnit\nif paiva == \"sunnnuntai\":\n    palkka * 2\n\nprint(f\"Palkka {palkka} euroa\")

    Ohjelma ei näytä toimivan oikein ja testien suoritus kertoo seuraavaa:

    \nFAIL: PalkkaTest: test_sunnuntai_1\n\nSyötteellä 23.0, 12, sunnuntai oikeaa palkkaa 552.0 ei löydy tulosteestasi Palkka 276.0 euroa\n

    Ensimmäinen askel debuggaamisessa on useimmiten kokeilla ohjelmaa ongelmallisella syötteellä. Kokeilu varmistaa, että tulos ei ole haluttu:

    Palkka 276.0 euroa

    Debugattaessa ohjelman toimintaa kokeillaan usein. Voikin olla hyödyllisä \"kovakoodata\" ongelman aiheuttavat syötteet suoraan koodiin sen sijaan, että ne kysyttäisiin joka kerta käyttäjältä. Tämä onnistuu esimerkiksi muuttamalla koodia tilapäisesti seuraavalla tavalla:

    # tuntipalkka = float(input(\"Tuntipalkka: \"))\n# tunnit = int(input(\"Työtunnit: \"))\n# paiva = input(\"Viikonpäivä: \")\ntuntipalkka = 23.0\ntunnit = 12\npaiva = \"sunnuntai\"\n\npalkka = tuntipalkka * tunnit\nif paiva == \"sunnnuntai\":\n    palkka * 2\n\nprint(f\"Palkka {palkka} euroa\")

    Seuraava askel on lisäillä koodiin debug-tulostuksia. Koska nimenomaan sunnuntain palkka lasketaan väärin, laitetaan sen hoitavaan osaan tulostukset korotusta ennen ja sen jälkeen:

    # ...\n\npalkka = tuntipalkka * tunnit\nif paiva == \"sunnnuntai\":\n    print(\"palkka alussa:\", palkka)\n    palkka * 2\n    print(\"palkka kasvatuksen jälkeen:\", palkka)\n\nprint(f\"Palkka {palkka} euroa\")

    Kun ohjelma nyt suoritetaan, ei debug-tulostuksia jostain syystä näy ollenkaan. Vaikuttaa siltä, että ohjelman suoritus ei edes mene if-haaraan. Komennon ehdossa täytyy siis olla jokin ongelma. Ehdon arvokin voidaan tulostaa koodista:

    # ...\n\npalkka = tuntipalkka * tunnit\nprint(\"ehto:\", paiva==\"sunnnuntai\")\nif paiva == \"sunnnuntai\":\n    print(\"palkka alussa:\", palkka)\n    palkka * 2\n    print(\"palkka kasvatuksen jälkeen:\", palkka)\n\nprint(f\"Palkka {palkka} euroa\")

    Ja tosiaan kun koodi suoritetaan, ehdon arvo on False eli koodi hyppää if-lohkon ohi:

    ehto: False\nPalkka 276.0 euroa

    Vian täytyy siis olla if-komennon ehdossa, ja kun sitä katsotaan tarkemmin, huomataan, että sunnuntai on vahingossa kirjoitettu väärin. Korjataan typo:

    # ...\n\npalkka = tuntipalkka * tunnit\nprint(\"ehto:\", paiva==\"sunnuntai\")\nif paiva == \"sunnuntai\":\n    print(\"palkka alussa:\", palkka)\n    palkka * 2\n    print(\"palkka kasvatuksen jälkeen:\", palkka)\n\nprint(f\"Palkka {palkka} euroa\")

    Koodin suoritus aiheuttaa nyt seuraavan tulostuksen:

    ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 276.0\nPalkka 276.0 euroa

    Koska tuntipalkka = 23.0 ja tunnit = 12, vaikuttaa muuttujassa palkka olevan oikea arvo aluksi, mutta kasvatuskomento ei kuitenkaan kasvata muuttujan arvoa. Komento on siis mitä ilmeisemmin virheellinen. Ja toden totta, komento

    palkka * 2

    ainoastaan laskee tuplapalkan mutta ei tee tulokselle mitään. Korjataan komento muotoon, joka tallentaa korotetun palkan muuttujaan palkka:

    palkka *= 2

    Kun ohjelma suoritetaan nyt, huomataan että lopputuloskin on oikea:

    ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 552.0\nPalkka 552.0 euroa

    Kun ohjelma on kunnossa, tulee debuggaustulosteet ja muu debuggauksen takia kirjoitettu ylimääräinen koodi poistaa.

    Esimerkki oli yksinkertainen ja näin lyhyessä ohjelmassa oleva bugi selviäisi varmasti myös koodia lukemalla. Monesti kuitenkin debug-tulostuksilla pääsee huomattavasti nopeammin jyvälle siitä, missä vika piilee. Tulostamalla voidaan usein varmistua siitä, mitkä osat ohjelmasta toimivat \"varmuudella\" oikein, ja bugien jäljitys voidaan nopeasti saada kohdistettua niihin koodiriveihin, joissa ongelma todennäköisesti piileskelee.

    Debuggaukseen on olemassa muitakin keinoja kuin debug-tulostusten tekeminen. Palaamme asiaan myöhemmin kurssilla. Sinun kannattaa tästä lähtien kurssilla käyttää debug-tulostamista virheiden etsimiseen. Ohjelmoinnin ammattilaiset eivät selviä työstään ilman debug-tulostuksia, joten on vaikea kuvitella, että aloittelijoidenkin ei kannattaisi laajentaa työkalupakkiaan tältä osin.

    Seuraavassa ohjelmassa on useita syntaksivirheitä. Korjaa ohjelma siten, että syntaksi on kunnossa ja se toimii alla olevien esimerkkien mukaisesti.

      luku = input(\"Anna luku: \")\n  if luku>100\n    print(\"Luku oli suurempi kuin sata\")\n    luku - 100\n    print(\"Nyt luvun arvo on pienentynyt sadalla)\n     print(\"Arvo on nyt\"+ luku)\n print(luku + \" taitaa olla onnenlukuni!\")\n print(\"Hyvää päivänjatkoa!)

    Anna luku: 13\n13 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!

    Anna luku: 101\nLuku oli suurempi kuin sata\nNyt luvun arvo on pienentynyt sadalla\nArvo on nyt 1\n1 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!

    Funktiolla len voidaan laskea (muun muassa) merkkijonon pituus. Funktio palauttaa merkkijonossa olevien merkkien määrän.

    Esimerkkejä funktion toiminnasta:

    sana = \"abcd\"\nprint(len(sana))\n\nprint(len(\"moikka\"))\n\nsana2 = \"heipparallaa\"\npituus = len(sana2)\nprint(pituus)\n\ntyhja_merkkijono = \"\"\npituus = len(tyhja_merkkijono)\nprint(pituus)

    4\n6\n12\n0

    Tee ohjelma, joka lukee käyttäjältä sanan ja tulostaa sanan merkkien määrän, mikäli niitä on enemmän kuin yksi.

    Esimerkkisuorituksia:

    Anna sana: hei\nSanassa hei on 3 kirjainta\nKiitos!

    Anna sana: banaani\nSanassa banaani on 7 kirjainta\nKiitos!

    Anna sana: b\nKiitos!

    Pythonissa voidaan usein muuntaa jokin arvo tyypistä toiseen. Esimerkiksi liukuluku voidaan muuntaa kokonaisluvuksi funktion int avulla:

    \nlampo = float(input(\"Anna lämpötila: \"))\n\nprint(\"Lämpötila on\", lampo)\n\nprint(\"...eli pyöreästi\", int(lampo))\n

    Anna lämpötila: 5.15\nLämpötila on 5.15\n...eli pyöreästi 5

    Huomaa, että funktio ei pyöristä arvoa matematiikasta tutulla tavalla, vaan pyöristää luvun alaspäin (kyse on siis ns. lattiafunktiosta):

    Anna lämpötila: 8.99\nLämpötila on 8.99\n...eli pyöreästi 8

    Tee int-funktiota hyödyntäen ohjelma, joka kysyy käyttäjältä desimaaliluvun ja tulostaa erikseen luvun kokonaisosan ja desimaaliosan.

    Huom! Voit olettaa, että annettu desimaaliluku on suurempi kuin nolla.

    Esimerkiksi

    Anna luku: 1.34\nKokonaisosa: 1\nDesimaaliosa: 0.34

    ","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/1-ohjelmoinnin-termeja.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet keskeistä ohjelmoinnin termistöä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät lauseen ja lausekkeen eron"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat selvittää lausekkeen arvon tyypin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Opit etsimään virheitä debuggauksen avulla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Emme vielä kurssin ensimmäisessä osassa kiinnittäneet kovin tarkasti huomiota ohjelmoinnin terminologiaan. Nyt on hyvä hetki tutustua joihinkin käsitteisiin."}]},{"type":"element","tagName":"h2","properties":{"id":"lause","style":"position:relative;"},"children":[{"type":"text","value":"Lause"},{"type":"element","tagName":"a","properties":{"href":"#lause","ariaLabel":"lause permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lause"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"statement"}]},{"type":"text","value":") tarkoittaa ohjelman osaa, joka suorittaa jonkin toiminnon. Usein lause viittaa yksittäiseen komentoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print(\"Moi!\")"}]},{"type":"text","value":" on lause, joka tulostaa rivin tekstiä,\nja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku = 2"}]},{"type":"text","value":" on lause, joka asettaa muuttujalle arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lause voi olla myös monimutkaisempi, ja sen sisällä voi olla muita lauseita.\nEsimerkiksi seuraava ehtolause muodostuu kolmesta rivistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa ehtolauseen sisällä on kaksi lausetta."}]},{"type":"element","tagName":"h2","properties":{"id":"lohko","style":"position:relative;"},"children":[{"type":"text","value":"Lohko"},{"type":"element","tagName":"a","properties":{"href":"#lohko","ariaLabel":"lohko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lohko"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"block"}]},{"type":"text","value":") on joukko peräkkäin sijoitettuja lauseita, jotka ovat samalla tasolla ohjelman rakenteessa. Esimerkiksi ehtolauseessa lohkossa ovat lauseet, jotka suoritetaan ehdon ollessa tosi."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ehtolauseessa oleva lohko alkaa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet täysi-ikäinen!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nyt vuoden vanhempi...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lohko loppuu"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tämä on eri lohkossa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa lohko ilmaistaan sisentämällä lohkon koodi eli lauseet samalle tasolle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että Python-ohjelman \"päälohkon\" on oltava sisennetty tiedoston vasempaan reunaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä ohjelma ei toimi sillä koodia ei ole sisennetty vasempaan reunaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei maailma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"huono ohjelma...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lauseke","style":"position:relative;"},"children":[{"type":"text","value":"Lauseke"},{"type":"element","tagName":"a","properties":{"href":"#lauseke","ariaLabel":"lauseke permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lauseke"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"expression"}]},{"type":"text","value":") on koodin osa, jolla on jokin tyyppi. Ohjelman suorituksen aikana lauseke saa arvon, jota voidaan käyttää ohjelmassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan muutamaa esimerkkiä lausekkeista:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Lauseke"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Arvo"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Tyyppi"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Tyyppi Pythonissa"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 + 4 + 3"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"kokonaisluku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"abc\" + \"de\""}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"abcde\""}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"merkkijono"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"11 / 2"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"5.5"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"liukuluku"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"2 * 5 > 9"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"text","value":"totuusarvo"}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska lausekkeella on arvo, voi sen sijoittaa muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muuttuja x saa arvoksi lausekkeen 1 + 2 arvon"}]},{"type":"text","value":"\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertaisesta lausekkeesta saa muodostettua monimutkaisempia lausekkeita esim. laskuoperaattorien avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muuttuja y saa arvoksi lausekkeen '3 kertaa x plus x toiseen' arvon"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktio","style":"position:relative;"},"children":[{"type":"text","value":"Funktio"},{"type":"element","tagName":"a","properties":{"href":"#funktio","ariaLabel":"funktio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Funktio"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"function"}]},{"type":"text","value":") suorittaa jonkin toiminnon. Funktiolla voi olla yksi tai useampi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parametri"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parameter"}]},{"type":"text","value":"), jotka ilmaisevat, mitä funktion tulee tehdä tarkalleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio suoritetaan, kun sitä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kutsutaan"}]},{"type":"text","value":" eli koodissa on funktion nimi ja funktiolle annettavat parametrit suluissa. Esimerkiksi seuraava koodi kutsuu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-funktiota parametrilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tämä on parametri\""}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tämä on parametri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös käyttäjältä syötteitä lukeva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" on funktio. Parametrina funktio saa käyttäjälle näytettävän viestin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kerro nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" arvon, mikä tarkoittaa, että funktion kutsukohtaan ilmestyy arvo funktion suorituksen jälkeen. Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" palauttama arvo on käyttäjän syöttämä teksti merkkijonona. Funktion palauttama arvo sijoitetaan usein muuttujan arvoksi, jotta arvoa voidaan hyödyntää ohjelmassa."}]},{"type":"element","tagName":"h2","properties":{"id":"tyyppi","style":"position:relative;"},"children":[{"type":"text","value":"Tyyppi"},{"type":"element","tagName":"a","properties":{"href":"#tyyppi","ariaLabel":"tyyppi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tyyppi"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"type"}]},{"type":"text","value":") tarkoittaa, millainen jokin koodissa esiintyvä arvo on. Esimerkiksi seuraavassa koodissa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" tyyppi on merkkijono ja muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" tyyppi on kokonaisluku:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"type"}]},{"type":"text","value":" kertoo annetun lausekkeen tyypin. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"type"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"syntaksi","style":"position:relative;"},"children":[{"type":"text","value":"Syntaksi"},{"type":"element","tagName":"a","properties":{"href":"#syntaksi","ariaLabel":"syntaksi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Syntaksi"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"syntax"}]},{"type":"text","value":") määrittää, miten ohjelman koodi tulee kirjoittaa. Jokaisella ohjelmointikielellä on omanlainen syntaksinsa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi Python-kielen syntaksiin kuuluu, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lauseen aloitusrivin lopussa on kaksoispiste ja ehtoon kuuluva koodi on sisennetty:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelmointikielen syntaksia ei noudateta, seurauksena on virheilmoitus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":" File \"testi.py\", line 1\n if nimi == \"Anna\"\n ^\nSyntaxError: invalid syntax\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"debuggaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Debuggaaminen"},{"type":"element","tagName":"a","properties":{"href":"#debuggaaminen","ariaLabel":"debuggaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelman syntaksi on kunnossa mutta ohjelma ei toimi halutulla tavalla, ohjelmassa on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"bugi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bugit ilmenevät eri tavoin. Jotkin bugit aiheuttavat suoritusaikaisen virheen. Esim. ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" y\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" jaettuna "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"aiheuttaa seuraavan virheen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"ZeroDivisionError: integer division or modulo by zero on line 3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelma on siis siinä, että nollalla jakaminen ei ole sallittua ja se keskeyttää ohjelman suorituksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suoritusaikaiseen virheeseen johtavat bugit ovat usein helpohkoja korjata, sillä bugin aiheuttama rivi selviää virheilmoituksesta. Toki bugin varsinainen syy on usein muualla kuin virheilmoituksen aiheuttaneessa rivissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus bugi taas ilmenee siten, että koodin tuottama tulos on virheellinen. Tälläisten bugien havaitseminen ja niiden syyn paikallistaminen voi olla haastavaa. Kurssin tehtävissä testit paljastavat usein juuri tämän kategorian bugeja. Ennen kuin ongelma päästään korjaamaan, on bugi paikallistettava."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodarijargonissa bugien syiden selvittämistä kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"debuggaamiseksi"}]},{"type":"text","value":". Debuggaaminen on äärimmäisen keskeinen taito, ja ammatikseen ohjelmoivat käyttävät usein enemmän aikaa debuggaamiseen kuin varsinaiseen ohjelmointiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertainen mutta tehokas debuggauskeino on lisätä ohjelmaan debug-tulostuksia eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoja, joiden avulla varmistetaan, että koodissa tapahtuu ohjelmoijan olettamia asioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on ratkaisuyritys yhteen "},{"type":"element","tagName":"a","properties":{"href":"/osa-1/5-ehtorakenne"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" tehtävään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tuntipalkka: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntunnit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Työtunnit: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viikonpäivä: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma ei näytä toimivan oikein ja testien suoritus kertoo seuraavaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"FAIL: PalkkaTest: test_sunnuntai_1\n\nSyötteellä 23.0, 12, sunnuntai oikeaa palkkaa 552.0 ei löydy tulosteestasi Palkka 276.0 euroa\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen askel debuggaamisessa on useimmiten kokeilla ohjelmaa ongelmallisella syötteellä. Kokeilu varmistaa, että tulos ei ole haluttu:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palkka 276.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debugattaessa ohjelman toimintaa kokeillaan usein. Voikin olla hyödyllisä \"kovakoodata\" ongelman aiheuttavat syötteet suoraan koodiin sen sijaan, että ne kysyttäisiin joka kerta käyttäjältä. Tämä onnistuu esimerkiksi muuttamalla koodia tilapäisesti seuraavalla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tuntipalkka = float(input(\"Tuntipalkka: \"))"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tunnit = int(input(\"Työtunnit: \"))"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# paiva = input(\"Viikonpäivä: \")"}]},{"type":"text","value":"\ntuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23.0"}]},{"type":"text","value":"\ntunnit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"text","value":"\npaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnuntai\""}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava askel on lisäillä koodiin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"debug-tulostuksia"}]},{"type":"text","value":". Koska nimenomaan sunnuntain palkka lasketaan väärin, laitetaan sen hoitavaan osaan tulostukset korotusta ennen ja sen jälkeen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka kasvatuksen jälkeen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma nyt suoritetaan, ei debug-tulostuksia jostain syystä näy ollenkaan. Vaikuttaa siltä, että ohjelman suoritus ei edes mene if-haaraan. Komennon ehdossa täytyy siis olla jokin ongelma. Ehdon arvokin voidaan tulostaa koodista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka kasvatuksen jälkeen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ja tosiaan kun koodi suoritetaan, ehdon arvo on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" eli koodi hyppää if-lohkon ohi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ehto: False\nPalkka 276.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vian täytyy siis olla if-komennon ehdossa, ja kun sitä katsotaan tarkemmin, huomataan, että "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sunnuntai"}]},{"type":"text","value":" on vahingossa kirjoitettu väärin. Korjataan typo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\npalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuntipalkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tunnit\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sunnuntai\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkka kasvatuksen jälkeen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Palkka "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin suoritus aiheuttaa nyt seuraavan tulostuksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 276.0\nPalkka 276.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuntipalkka = 23.0"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnit = 12"}]},{"type":"text","value":", vaikuttaa muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkka"}]},{"type":"text","value":" olevan oikea arvo aluksi, mutta kasvatuskomento ei kuitenkaan kasvata muuttujan arvoa. Komento on siis mitä ilmeisemmin virheellinen. Ja toden totta, komento"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ainoastaan laskee tuplapalkan mutta ei tee tulokselle mitään. Korjataan komento muotoon, joka tallentaa korotetun palkan muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkka"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma suoritetaan nyt, huomataan että lopputuloskin on oikea:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 552.0\nPalkka 552.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma on kunnossa, tulee debuggaustulosteet ja muu debuggauksen takia kirjoitettu ylimääräinen koodi poistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki oli yksinkertainen ja näin lyhyessä ohjelmassa oleva bugi selviäisi varmasti myös koodia lukemalla. Monesti kuitenkin debug-tulostuksilla pääsee huomattavasti nopeammin jyvälle siitä, missä vika piilee. Tulostamalla voidaan usein varmistua siitä, mitkä osat ohjelmasta toimivat \"varmuudella\" oikein, ja bugien jäljitys voidaan nopeasti saada kohdistettua niihin koodiriveihin, joissa ongelma todennäköisesti piileskelee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggaukseen on olemassa muitakin keinoja kuin debug-tulostusten tekeminen. Palaamme asiaan myöhemmin kurssilla. Sinun kannattaa tästä lähtien kurssilla käyttää debug-tulostamista virheiden etsimiseen. Ohjelmoinnin ammattilaiset eivät selviä työstään ilman debug-tulostuksia, joten on vaikea kuvitella, että aloittelijoidenkin ei kannattaisi laajentaa työkalupakkiaan tältä osin."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Korjaa virheet","tmcname":"osa02-01_korjaa_virheet","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa ohjelmassa on useita "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"syntaksivirheitä"}]},{"type":"text","value":". Korjaa ohjelma siten, että syntaksi on kunnossa ja se toimii alla olevien esimerkkien mukaisesti."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku oli suurempi kuin sata\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"\"Nyt luvun arvo on pienentynyt sadalla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arvo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" taitaa olla onnenlukuni!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"\"Hyvää päivänjatkoa!"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"13"}]},{"type":"text","value":"\n13 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"101"}]},{"type":"text","value":"\nLuku oli suurempi kuin sata\nNyt luvun arvo on pienentynyt sadalla\nArvo on nyt 1\n1 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Merkkien määrä","tmcname":"osa02-02_merkkien_maara"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" voidaan laskea (muun muassa) merkkijonon pituus. Funktio palauttaa merkkijonossa olevien merkkien määrän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä funktion toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcd\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsana2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"heipparallaa\""}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntyhja_merkkijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tyhja_merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4\n6\n12\n0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä sanan ja tulostaa sanan merkkien määrän, mikäli niitä on enemmän kuin yksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: hei\nSanassa hei on 3 kirjainta\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: banaani\nSanassa banaani on 7 kirjainta\nKiitos!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: b\nKiitos!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tyyppimuunnos","tmcname":"osa02-03_tyyppimuunnos"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa voidaan usein muuntaa jokin arvo tyypistä toiseen. Esimerkiksi liukuluku voidaan muuntaa kokonaisluvuksi funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nlampo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lämpötila: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lämpötila on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lampo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"...eli pyöreästi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lampo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5.15"}]},{"type":"text","value":"\nLämpötila on 5.15\n...eli pyöreästi 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktio ei pyöristä arvoa matematiikasta tutulla tavalla, vaan pyöristää luvun alaspäin (kyse on siis ns. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"lattiafunktiosta"}]},{"type":"text","value":"):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lämpötila: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8.99"}]},{"type":"text","value":"\nLämpötila on 8.99\n...eli pyöreästi 8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee int-funktiota hyödyntäen ohjelma, joka kysyy käyttäjältä desimaaliluvun ja tulostaa erikseen luvun kokonaisosan ja desimaaliosan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Voit olettaa, että annettu desimaaliluku on suurempi kuin nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1.34"}]},{"type":"text","value":"\nKokonaisosa: 1\nDesimaaliosa: 0.34"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet keskeistä ohjelmoinnin termistöä
    • \n
    • Tiedät lauseen ja lausekkeen eron
    • \n
    • Osaat selvittää lausekkeen arvon tyypin
    • \n
    • Opit etsimään virheitä debuggauksen avulla
    • \n

    Emme vielä kurssin ensimmäisessä osassa kiinnittäneet kovin tarkasti huomiota ohjelmoinnin terminologiaan. Nyt on hyvä hetki tutustua joihinkin käsitteisiin.

    Lause

    Lause (engl. statement) tarkoittaa ohjelman osaa, joka suorittaa jonkin toiminnon. Usein lause viittaa yksittäiseen komentoon.

    Esimerkiksi print(\"Moi!\") on lause, joka tulostaa rivin tekstiä,\nja luku = 2 on lause, joka asettaa muuttujalle arvon.

    Lause voi olla myös monimutkaisempi, ja sen sisällä voi olla muita lauseita.\nEsimerkiksi seuraava ehtolause muodostuu kolmesta rivistä:

    if nimi == \"Anna\":\n    print(\"Moi!\")\n    luku = 2

    Tässä tapauksessa ehtolauseen sisällä on kaksi lausetta.

    Lohko

    Lohko (engl. block) on joukko peräkkäin sijoitettuja lauseita, jotka ovat samalla tasolla ohjelman rakenteessa. Esimerkiksi ehtolauseessa lohkossa ovat lauseet, jotka suoritetaan ehdon ollessa tosi.

    if ika > 17:\n    # ehtolauseessa oleva lohko alkaa\n    print(\"Olet täysi-ikäinen!\")\n    ika = ika + 1\n    print(\"nyt vuoden vanhempi...\")\n    # lohko loppuu\n\nprint(\"tämä on eri lohkossa\")

    Pythonissa lohko ilmaistaan sisentämällä lohkon koodi eli lauseet samalle tasolle.

    Kannattaa huomata, että Python-ohjelman \"päälohkon\" on oltava sisennetty tiedoston vasempaan reunaan:

    # tämä ohjelma ei toimi sillä koodia ei ole sisennetty vasempaan reunaan\n  print(\"hei maailma\")\n  print(\"huono ohjelma...\")

    Lauseke

    Lauseke (engl. expression) on koodin osa, jolla on jokin tyyppi. Ohjelman suorituksen aikana lauseke saa arvon, jota voidaan käyttää ohjelmassa.

    Tarkastellaan muutamaa esimerkkiä lausekkeista:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    LausekeArvoTyyppiTyyppi Pythonissa
    2 + 4 + 39kokonaislukuint
    \"abc\" + \"de\"\"abcde\"merkkijonostr
    11 / 25.5liukulukufloat
    2 * 5 > 9Truetotuusarvobool

    Koska lausekkeella on arvo, voi sen sijoittaa muuttujaan:

    # muuttuja x saa arvoksi lausekkeen 1 + 2 arvon\nx = 1 + 2

    Yksinkertaisesta lausekkeesta saa muodostettua monimutkaisempia lausekkeita esim. laskuoperaattorien avulla:

    # muuttuja y saa arvoksi lausekkeen '3 kertaa x plus x toiseen' arvon\ny = 3 * x + x**2

    Funktio

    Funktio (engl. function) suorittaa jonkin toiminnon. Funktiolla voi olla yksi tai useampi parametri (engl. parameter), jotka ilmaisevat, mitä funktion tulee tehdä tarkalleen.

    Funktio suoritetaan, kun sitä kutsutaan eli koodissa on funktion nimi ja funktiolle annettavat parametrit suluissa. Esimerkiksi seuraava koodi kutsuu print-funktiota parametrilla \"tämä on parametri\":

    print(\"tämä on parametri\")

    Myös käyttäjältä syötteitä lukeva input on funktio. Parametrina funktio saa käyttäjälle näytettävän viestin:

    nimi = input(\"Kerro nimesi: \")

    Tässä tapauksessa funktio palauttaa arvon, mikä tarkoittaa, että funktion kutsukohtaan ilmestyy arvo funktion suorituksen jälkeen. Funktion input palauttama arvo on käyttäjän syöttämä teksti merkkijonona. Funktion palauttama arvo sijoitetaan usein muuttujan arvoksi, jotta arvoa voidaan hyödyntää ohjelmassa.

    Tyyppi

    Tyyppi (engl. type) tarkoittaa, millainen jokin koodissa esiintyvä arvo on. Esimerkiksi seuraavassa koodissa muuttujan nimi tyyppi on merkkijono ja muuttujan tulos tyyppi on kokonaisluku:

    nimi = \"Anna\"\ntulos = 100

    Funktio type kertoo annetun lausekkeen tyypin. Esimerkiksi:

    print(type(\"Anna\"))\nprint(type(100))

    <class 'str'>\n<class 'int'>

    Syntaksi

    Syntaksi (engl. syntax) määrittää, miten ohjelman koodi tulee kirjoittaa. Jokaisella ohjelmointikielellä on omanlainen syntaksinsa.

    Esimerkiksi Python-kielen syntaksiin kuuluu, että if-lauseen aloitusrivin lopussa on kaksoispiste ja ehtoon kuuluva koodi on sisennetty:

    if nimi == \"Anna\":\n    print(\"Moi!\")

    Jos ohjelmointikielen syntaksia ei noudateta, seurauksena on virheilmoitus:

    if nimi == \"Anna\"\n    print(\"Moi!\")
    \n  File \"testi.py\", line 1\n    if nimi == \"Anna\"\n                    ^\nSyntaxError: invalid syntax\n

    Debuggaaminen

    Kun ohjelman syntaksi on kunnossa mutta ohjelma ei toimi halutulla tavalla, ohjelmassa on bugi.

    Bugit ilmenevät eri tavoin. Jotkin bugit aiheuttavat suoritusaikaisen virheen. Esim. ohjelma

    x = 10\ny = 0\ntulos = x / y\n\nprint(f\"{x} jaettuna {y} on {tulos}\")

    aiheuttaa seuraavan virheen:

    \nZeroDivisionError: integer division or modulo by zero on line 3\n

    Ongelma on siis siinä, että nollalla jakaminen ei ole sallittua ja se keskeyttää ohjelman suorituksen.

    Suoritusaikaiseen virheeseen johtavat bugit ovat usein helpohkoja korjata, sillä bugin aiheuttama rivi selviää virheilmoituksesta. Toki bugin varsinainen syy on usein muualla kuin virheilmoituksen aiheuttaneessa rivissä.

    Joskus bugi taas ilmenee siten, että koodin tuottama tulos on virheellinen. Tälläisten bugien havaitseminen ja niiden syyn paikallistaminen voi olla haastavaa. Kurssin tehtävissä testit paljastavat usein juuri tämän kategorian bugeja. Ennen kuin ongelma päästään korjaamaan, on bugi paikallistettava.

    Koodarijargonissa bugien syiden selvittämistä kutsutaan debuggaamiseksi. Debuggaaminen on äärimmäisen keskeinen taito, ja ammatikseen ohjelmoivat käyttävät usein enemmän aikaa debuggaamiseen kuin varsinaiseen ohjelmointiin.

    Yksinkertainen mutta tehokas debuggauskeino on lisätä ohjelmaan debug-tulostuksia eli print-komentoja, joiden avulla varmistetaan, että koodissa tapahtuu ohjelmoijan olettamia asioita.

    Seuraavassa on ratkaisuyritys yhteen edellisen osan tehtävään:

    tuntipalkka = float(input(\"Tuntipalkka: \"))\ntunnit = int(input(\"Työtunnit: \"))\npaiva = input(\"Viikonpäivä: \")\n\npalkka = tuntipalkka * tunnit\nif paiva == \"sunnnuntai\":\n    palkka * 2\n\nprint(f\"Palkka {palkka} euroa\")

    Ohjelma ei näytä toimivan oikein ja testien suoritus kertoo seuraavaa:

    \nFAIL: PalkkaTest: test_sunnuntai_1\n\nSyötteellä 23.0, 12, sunnuntai oikeaa palkkaa 552.0 ei löydy tulosteestasi Palkka 276.0 euroa\n

    Ensimmäinen askel debuggaamisessa on useimmiten kokeilla ohjelmaa ongelmallisella syötteellä. Kokeilu varmistaa, että tulos ei ole haluttu:

    Palkka 276.0 euroa

    Debugattaessa ohjelman toimintaa kokeillaan usein. Voikin olla hyödyllisä \"kovakoodata\" ongelman aiheuttavat syötteet suoraan koodiin sen sijaan, että ne kysyttäisiin joka kerta käyttäjältä. Tämä onnistuu esimerkiksi muuttamalla koodia tilapäisesti seuraavalla tavalla:

    # tuntipalkka = float(input(\"Tuntipalkka: \"))\n# tunnit = int(input(\"Työtunnit: \"))\n# paiva = input(\"Viikonpäivä: \")\ntuntipalkka = 23.0\ntunnit = 12\npaiva = \"sunnuntai\"\n\npalkka = tuntipalkka * tunnit\nif paiva == \"sunnnuntai\":\n    palkka * 2\n\nprint(f\"Palkka {palkka} euroa\")

    Seuraava askel on lisäillä koodiin debug-tulostuksia. Koska nimenomaan sunnuntain palkka lasketaan väärin, laitetaan sen hoitavaan osaan tulostukset korotusta ennen ja sen jälkeen:

    # ...\n\npalkka = tuntipalkka * tunnit\nif paiva == \"sunnnuntai\":\n    print(\"palkka alussa:\", palkka)\n    palkka * 2\n    print(\"palkka kasvatuksen jälkeen:\", palkka)\n\nprint(f\"Palkka {palkka} euroa\")

    Kun ohjelma nyt suoritetaan, ei debug-tulostuksia jostain syystä näy ollenkaan. Vaikuttaa siltä, että ohjelman suoritus ei edes mene if-haaraan. Komennon ehdossa täytyy siis olla jokin ongelma. Ehdon arvokin voidaan tulostaa koodista:

    # ...\n\npalkka = tuntipalkka * tunnit\nprint(\"ehto:\", paiva==\"sunnnuntai\")\nif paiva == \"sunnnuntai\":\n    print(\"palkka alussa:\", palkka)\n    palkka * 2\n    print(\"palkka kasvatuksen jälkeen:\", palkka)\n\nprint(f\"Palkka {palkka} euroa\")

    Ja tosiaan kun koodi suoritetaan, ehdon arvo on False eli koodi hyppää if-lohkon ohi:

    ehto: False\nPalkka 276.0 euroa

    Vian täytyy siis olla if-komennon ehdossa, ja kun sitä katsotaan tarkemmin, huomataan, että sunnuntai on vahingossa kirjoitettu väärin. Korjataan typo:

    # ...\n\npalkka = tuntipalkka * tunnit\nprint(\"ehto:\", paiva==\"sunnuntai\")\nif paiva == \"sunnuntai\":\n    print(\"palkka alussa:\", palkka)\n    palkka * 2\n    print(\"palkka kasvatuksen jälkeen:\", palkka)\n\nprint(f\"Palkka {palkka} euroa\")

    Koodin suoritus aiheuttaa nyt seuraavan tulostuksen:

    ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 276.0\nPalkka 276.0 euroa

    Koska tuntipalkka = 23.0 ja tunnit = 12, vaikuttaa muuttujassa palkka olevan oikea arvo aluksi, mutta kasvatuskomento ei kuitenkaan kasvata muuttujan arvoa. Komento on siis mitä ilmeisemmin virheellinen. Ja toden totta, komento

    palkka * 2

    ainoastaan laskee tuplapalkan mutta ei tee tulokselle mitään. Korjataan komento muotoon, joka tallentaa korotetun palkan muuttujaan palkka:

    palkka *= 2

    Kun ohjelma suoritetaan nyt, huomataan että lopputuloskin on oikea:

    ehto: True\npalkka alussa: 276.0\npalkka kasvatuksen jälkeen: 552.0\nPalkka 552.0 euroa

    Kun ohjelma on kunnossa, tulee debuggaustulosteet ja muu debuggauksen takia kirjoitettu ylimääräinen koodi poistaa.

    Esimerkki oli yksinkertainen ja näin lyhyessä ohjelmassa oleva bugi selviäisi varmasti myös koodia lukemalla. Monesti kuitenkin debug-tulostuksilla pääsee huomattavasti nopeammin jyvälle siitä, missä vika piilee. Tulostamalla voidaan usein varmistua siitä, mitkä osat ohjelmasta toimivat \"varmuudella\" oikein, ja bugien jäljitys voidaan nopeasti saada kohdistettua niihin koodiriveihin, joissa ongelma todennäköisesti piileskelee.

    Debuggaukseen on olemassa muitakin keinoja kuin debug-tulostusten tekeminen. Palaamme asiaan myöhemmin kurssilla. Sinun kannattaa tästä lähtien kurssilla käyttää debug-tulostamista virheiden etsimiseen. Ohjelmoinnin ammattilaiset eivät selviä työstään ilman debug-tulostuksia, joten on vaikea kuvitella, että aloittelijoidenkin ei kannattaisi laajentaa työkalupakkiaan tältä osin.

    Seuraavassa ohjelmassa on useita syntaksivirheitä. Korjaa ohjelma siten, että syntaksi on kunnossa ja se toimii alla olevien esimerkkien mukaisesti.

      luku = input(\"Anna luku: \")\n  if luku>100\n    print(\"Luku oli suurempi kuin sata\")\n    luku - 100\n    print(\"Nyt luvun arvo on pienentynyt sadalla)\n     print(\"Arvo on nyt\"+ luku)\n print(luku + \" taitaa olla onnenlukuni!\")\n print(\"Hyvää päivänjatkoa!)

    Anna luku: 13\n13 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!

    Anna luku: 101\nLuku oli suurempi kuin sata\nNyt luvun arvo on pienentynyt sadalla\nArvo on nyt 1\n1 taitaa olla onnenlukuni!\nHyvää päivänjatkoa!

    Funktiolla len voidaan laskea (muun muassa) merkkijonon pituus. Funktio palauttaa merkkijonossa olevien merkkien määrän.

    Esimerkkejä funktion toiminnasta:

    sana = \"abcd\"\nprint(len(sana))\n\nprint(len(\"moikka\"))\n\nsana2 = \"heipparallaa\"\npituus = len(sana2)\nprint(pituus)\n\ntyhja_merkkijono = \"\"\npituus = len(tyhja_merkkijono)\nprint(pituus)

    4\n6\n12\n0

    Tee ohjelma, joka lukee käyttäjältä sanan ja tulostaa sanan merkkien määrän, mikäli niitä on enemmän kuin yksi.

    Esimerkkisuorituksia:

    Anna sana: hei\nSanassa hei on 3 kirjainta\nKiitos!

    Anna sana: banaani\nSanassa banaani on 7 kirjainta\nKiitos!

    Anna sana: b\nKiitos!

    Pythonissa voidaan usein muuntaa jokin arvo tyypistä toiseen. Esimerkiksi liukuluku voidaan muuntaa kokonaisluvuksi funktion int avulla:

    \nlampo = float(input(\"Anna lämpötila: \"))\n\nprint(\"Lämpötila on\", lampo)\n\nprint(\"...eli pyöreästi\", int(lampo))\n

    Anna lämpötila: 5.15\nLämpötila on 5.15\n...eli pyöreästi 5

    Huomaa, että funktio ei pyöristä arvoa matematiikasta tutulla tavalla, vaan pyöristää luvun alaspäin (kyse on siis ns. lattiafunktiosta):

    Anna lämpötila: 8.99\nLämpötila on 8.99\n...eli pyöreästi 8

    Tee int-funktiota hyödyntäen ohjelma, joka kysyy käyttäjältä desimaaliluvun ja tulostaa erikseen luvun kokonaisosan ja desimaaliosan.

    Huom! Voit olettaa, että annettu desimaaliluku on suurempi kuin nolla.

    Esimerkiksi

    Anna luku: 1.34\nKokonaisosa: 1\nDesimaaliosa: 0.34

    ","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/1-ohjelmoinnin-termeja.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-2/2-else-elif/page-data.json b/page-data/osa-2/2-else-elif/page-data.json index 7ed208f8a..33c48b805 100644 --- a/page-data/osa-2/2-else-elif/page-data.json +++ b/page-data/osa-2/2-else-elif/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-2/2-else-elif", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda vaihtoehtoisia haaroja toistolauseisiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-lauseiden merkityksen ehtolauseessa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat soveltaa jakojäännöstä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" ehdoissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöte negatiivinen vai positiivinen tai nolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on positiivinen tai nolla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma on hiukan kömpelö. Jokaisen mahdollisen syötteen kohdalla halutaan suorittaa vain toinen lohkoista, koska aina pätee joko "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku < 0"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku >= 0"}]},{"type":"text","value":". Ensimmäinen vertailu sisältää tavallaan kaiken olennaisen: jos tulos on tosi, luku on negatiivinen, ja jos se on epätosi, luku on positiivinen tai nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisen vertailun sijasta onkin usein näppärämpää luoda vaihtoehtoinen haara, joka suoritetaan, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jos ehto on epätosi"}]},{"type":"text","value":". Tätä tarkoitusta varten käytetään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-lausetta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellinen esimerkki kirjoitettuna uudestaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on positiivinen tai nolla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun käytetään if-else-rakennetta, suoritetaan vaihtoehtoisista lohkoista aina jompikumpi. Seuraava kuva havainnollistaa asiaa:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/35830d6bd78153ffe23d80092b0482cb/e17e5/2_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 148.2608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOUlEQVRIx5WWx67CQAxF+f9PYsUWgdjQRS+i997n6VjPaHAmlJGskIlzfT3Xdki4//V4PJ5XNbvPOhwO7n6/v+z5KxEHaMF1b7Vauev1Ggz+Amgj2t9632q13PF4DAbEIgxvt5tbr9cRIBap5nI5N5lMXNyKAJ5OJzedTiPnNhwOXa1Wk2fdbldssViIvxpkIoDn81kclZGeG6mWy2XX6XRcpVIR8MFg4ObzuVsul8J6PB6HGSqgFWi/38uLBLhcLs6e/2w2+wxoBSqVSi8Z6DOUF0ArfRxDGG02G5dKpVyz2RQ/P9jPgDiTMgcPOKn7aT8Brew4hQA5ePYbjYaorgr7JYVPot1uu0wm4/L5vCsWi67X64lyIYa73U5egiU+PiDsqYAEm9xst1u5YlYUFsUOCM8wUgZYF8oXCoVoyrYOORs1Wq7f70tQWwHPlEOiaMqj0Ug6g3S1gGES6nEC4vu2Dv2eRSxNmRcBtoAfCxtAbT9ASFmLGba2Uwj4tpcB9MsGUDqFAq/X69LbBOFehQoyhLoFBIz6w9ijWxgY+FMhGMcSAeQslCEgus8LBFKhfHGC8zA0pe1c5EowbbmvJravnAVk0XrUYWiiv/1IKUM/Zdhls1mZ1lo2NmCkU3wnZchCSUzbk2d2hMUCqgMjHVYIkU6n5T6ZTMr4p4y+ArRfQP0AUXdMG8ApHRT/GjD0r4CCpxP4+gH29Rm++1uiY8ofW7Eqf2Kq12q1KqnHfcR+BiRl+1fEZ/gH+rYob4TljzUAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/35830d6bd78153ffe23d80092b0482cb/a0b58/2_2_1.webp 230w","/static/35830d6bd78153ffe23d80092b0482cb/7f61c/2_2_1.webp 400w"],"sizes":"(max-width: 400px) 100vw, 400px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/35830d6bd78153ffe23d80092b0482cb/81c8e/2_2_1.png 230w","/static/35830d6bd78153ffe23d80092b0482cb/e17e5/2_2_1.png 400w"],"sizes":"(max-width: 400px) 100vw, 400px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/35830d6bd78153ffe23d80092b0482cb/e17e5/2_2_1.png","alt":"2 2 1","title":"2 2 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että else-haaraa ei voi olla olemassa ilman edeltävää if-haaraa. Koko if-else-rakenne lohkoineen muodostaa yhden "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehtolauseen"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki tutkii, onko käyttäjän syöttämä luku parillinen vai ei. Parillisuuden selvittämiseen käytetään jakojäännösoperaattoria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":". Jakojäännöksellä on kätevä testata luvun parillisuutta: jos luvun jakojäännös kahdella on nolla, luku on parillinen, ja muuten pariton."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLuku on pariton"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmas esimerkki, jossa vertaillaan merkkijonojen samuutta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oikea "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kissa\""}]},{"type":"text","value":"\nsalasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna salasana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" salasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tervetuloa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pääsy kielletty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkisuoritusta eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kissa"}]},{"type":"text","value":"\nTervetuloa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apina"}]},{"type":"text","value":"\nPääsy kielletty"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Täysi-ikäisyys","tmcname":"osa02-04_taysi_ikaisyys","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän ikää ja kertoo, onko tämä täysi-ikäinen (eli 18-vuotias tai vanhempi)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12"}]},{"type":"text","value":"\nEt ole täysi-ikäinen!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"32"}]},{"type":"text","value":"\nOlet täysi-ikäinen!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaihtoehtoiset-haarat-elif-lauseella","style":"position:relative;"},"children":[{"type":"text","value":"Vaihtoehtoiset haarat elif-lauseella"},{"type":"element","tagName":"a","properties":{"href":"#vaihtoehtoiset-haarat-elif-lauseella","ariaLabel":"vaihtoehtoiset haarat elif lauseella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein vaihtoehtoja on kuitenkin enemmän kuin kaksi. Esimerkiksi jalkapallo-ottelun lopputulosta käsitellessä olisi hyvä varautua kolmeen vaihtoehtoiseen lopputulokseen kotijoukkueen kannalta: voitto, häviö tai tasapeli."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtolausetta voidaan laajentaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"-haaralla. Se on lyhenne sanoista \"else if\", ja tarkoittaa nimensä mukaisesti vaihtoehtoa alkuperäiselle ehdolle."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 498px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/22229d7c746f99d073f0131c022eae85/79e1b/2_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 168.69565217391306%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAiCAYAAABfqvm9AAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVRIx52W167CMBBE8/8/h3gB0RG99958dSwNWhwngWvJ4Ky949maJM4593q9nP5j6/D5fr+7y+USPZdYhay1vYQB2G63+9jXTEKG1+s1k6HGcDh0g8HAxcYH4PP5dMvlMnoz43g8eqBer+fndDp1h8PBMz6fz+7xeKQBN5uNy/Ire5VKxXW73feEwH6/9y5YrVZpwPV6XWgyirLEDnRzAbOYwrJarb51kEu3EDAEZR/TmaztOWSFJltmOH273brRaOSDwRod5eZisfjeh5KhxBkAWQuQoLRarWKTkWkiIz0Iynw+d7fb7eOsN9kysYC6FUX5y/ovBJN/E0XIRkoDH0nxm/GOcii0DFWKXIbjuWQ2m/mJH7mQScDIzYQSqtfr3qEAxBgCRgDG47Erl8uu2Wz6841Gw+djv9/3ulRMwo/8Qk3GAMVMnYYzsFELSzUHmxYxQMxRjav0YBxtX/YhKygwtIDtdttPW3oCz8zD0IdqqEpsJkzD8iwEhB3JTD4qeemJijYXcOZrhvgPmUwkGMhJGRjCnPW/TT6dTu+Gyh7sfwYMg2IHF/wMiNliCDvkTNb/Zqjo8h5hLVBeXLmANhVsLcMEoE6n8xug9ZUF1EAZOecwOerDrHeIBbTVBEuaQ2FQwneIGob25GNMZU/5GGUYNgkxlL8wj0+QWq3mSqWSb1u0L1pXqlLyQC1rFClBAkcwWJNSqVrOAwtlRJvym0wmH/79yuSw10mOz2JfGLkmhxdYQBjGGiwm/wESm2QC2G3IagAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/22229d7c746f99d073f0131c022eae85/a0b58/2_2_2.webp 230w","/static/22229d7c746f99d073f0131c022eae85/bc10c/2_2_2.webp 460w","/static/22229d7c746f99d073f0131c022eae85/71ce1/2_2_2.webp 498w"],"sizes":"(max-width: 498px) 100vw, 498px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/22229d7c746f99d073f0131c022eae85/81c8e/2_2_2.png 230w","/static/22229d7c746f99d073f0131c022eae85/08a84/2_2_2.png 460w","/static/22229d7c746f99d073f0131c022eae85/79e1b/2_2_2.png 498w"],"sizes":"(max-width: 498px) 100vw, 498px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/22229d7c746f99d073f0131c022eae85/79e1b/2_2_2.png","alt":"2 2 2","title":"2 2 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä, jossa selvitetään ottelun voittaja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"maalit_koti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kotijoukkueen maalimäärä: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmaalit_vieras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vierasjoukkueen maalimäärä: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maalit_koti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" maalit_vieras"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kotijoukkue voitti!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" maalit_vieras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" maalit_koti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vierasjoukkue voitti!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tasapeli!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolme esimerkkitulosta eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kotijoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nVierasjoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nKotijoukkue voitti!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kotijoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nVierasjoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nVierasjoukkue voitti!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kotijoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nVierasjoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nTasapeli!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä ehtolauseessa on siis kolme vaihtoehtoista haaraa, joista suoritetaan aina yksi. Ehtolauseessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"-haaroja voi olla useampia, eikä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-haara ole pakollinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Joulukalenteri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä päivä nyt on? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"24.12.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt on jouluaatto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"25.12.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt on joulupäivä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"26.12.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt on tapaninpäivä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos ja hei.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joulukalenteri\nMikä päivä nyt on? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"25.12."}]},{"type":"text","value":"\nNyt on joulupäivä\nKiitos ja hei."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että ehtolauseessa ei edellisessä esimerkissä ole ollenkaan else-haaraa. Jos käyttäjä syöttää jonkin sellaisen päivämäärän, jota ei täytä ehtoa jossain "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"- tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"-lauseessa, ohjelmassa ei suoriteta mitään ehtolauseen kolmesta lohkosta."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joulukalenteri\nMikä päivä nyt on? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1.1."}]},{"type":"text","value":"\nKiitos ja hei."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":" Suurempi tai yhtäsuuri","tmcname":"osa02-05_suurempi_tai_yhtasuuri","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja tulostaa niistä suuremman. Jos luvut ovat yhtä suuret, ohjelma huomaa myös tämän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna toinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nSuurempi luku: 5"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna toinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nSuurempi luku: 8"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna toinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLuvut ovat yhtä suuret!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Vanhempi","tmcname":"osa02-06_vanhempi","height":"550px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy kahden henkilön nimen ja iän ja tulostaa vanhemman henkilön nimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisyötteitä"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilö 1:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Teppo"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"26"}]},{"type":"text","value":"\nHenkilö 2:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tiina"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"27"}]},{"type":"text","value":"\nVanhempi on Tiina"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilö 1:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Antti"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nHenkilö 2:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Venla"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAntti ja Venla ovat yhtä vanhoja"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Aakkosjärjestyksessä viimeinen","tmcname":"osa02-07_aakkkosjarjestyksessa_viimeinen","height":"500px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lukujen lisäksi Python osaa vertailla myös merkkijonojen suuruusjärjestystä. Merkkijono a on pienempi kuin merkkijono b, jos merkkijono a tulee aakkosjärjestyksessä ennen jonoa b.\nHuomaa kuitenkin, että tämä pätee varmasti vain kun"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vertaillaan samankokoisia kirjaimia (eli ISOJA tai pieniä kirjaimia) keskenään ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vertailtavissa sanoissa on vain englannin kielestä tuttuja kirjaimia (eli a-z tai A-Z)."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kahta sanaa. Ohjelma tulostaa sanoista sen, joka on aakkosjärjestyksessä jälkimmäinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että sanat on syötetty kokonaan pienillä kirjaimilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"auto"}]},{"type":"text","value":"\nAnna 2. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"mopo"}]},{"type":"text","value":"\nmopo on aakkosjärjestyksessä viimeinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"zorro"}]},{"type":"text","value":"\nAnna 2. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"batman"}]},{"type":"text","value":"\nzorro on aakkosjärjestyksessä viimeinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nAnna 2. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nAnnoit saman sanan kahdesti."}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda vaihtoehtoisia haaroja toistolauseisiin
    • \n
    • Ymmärrät if-, elif- ja else-lauseiden merkityksen ehtolauseessa
    • \n
    • Osaat soveltaa jakojäännöstä % ehdoissa
    • \n

    Tarkastellaan ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöte negatiivinen vai positiivinen tai nolla:

    luku = int(input(\"Anna luku: \"))\n\nif luku < 0:\n    print(\"Luku on negatiivinen\")\n\nif luku >= 0:\n    print(\"Luku on positiivinen tai nolla\")

    Ohjelma on hiukan kömpelö. Jokaisen mahdollisen syötteen kohdalla halutaan suorittaa vain toinen lohkoista, koska aina pätee joko luku < 0 tai luku >= 0. Ensimmäinen vertailu sisältää tavallaan kaiken olennaisen: jos tulos on tosi, luku on negatiivinen, ja jos se on epätosi, luku on positiivinen tai nolla.

    Toisen vertailun sijasta onkin usein näppärämpää luoda vaihtoehtoinen haara, joka suoritetaan, jos ehto on epätosi. Tätä tarkoitusta varten käytetään else-lausetta.

    Edellinen esimerkki kirjoitettuna uudestaan:

    luku = int(input(\"Anna luku: \"))\n\nif luku < 0:\n    print(\"Luku on negatiivinen\")\nelse:\n    print(\"Luku on positiivinen tai nolla\")

    Kun käytetään if-else-rakennetta, suoritetaan vaihtoehtoisista lohkoista aina jompikumpi. Seuraava kuva havainnollistaa asiaa:

    \n \n \n \n \n \n \"2\n \n \n

    Tarkastellaan esimerkkiä, jossa selvitetään ottelun voittaja:

    maalit_koti = int(input(\"Kotijoukkueen maalimäärä: \"))\nmaalit_vieras = int(input(\"Vierasjoukkueen maalimäärä: \"))\n\nif maalit_koti > maalit_vieras:\n    print(\"Kotijoukkue voitti!\")\nelif maalit_vieras > maalit_koti:\n    print(\"Vierasjoukkue voitti!\")\nelse:\n    print(\"Tasapeli!\")

    Kolme esimerkkitulosta eri syötteillä:

    Kotijoukkueen maalimäärä: 4\nVierasjoukkueen maalimäärä: 2\nKotijoukkue voitti!

    Kotijoukkueen maalimäärä: 0\nVierasjoukkueen maalimäärä: 6\nVierasjoukkue voitti!

    Kotijoukkueen maalimäärä: 3\nVierasjoukkueen maalimäärä: 3\nTasapeli!

    Esimerkissä ehtolauseessa on siis kolme vaihtoehtoista haaraa, joista suoritetaan aina yksi. Ehtolauseessa elif-haaroja voi olla useampia, eikä else-haara ole pakollinen.

    Esimerkiksi:

    print(\"Joulukalenteri\")\npvm = input(\"Mikä päivä nyt on? \")\n\nif pvm == \"24.12.\":\n    print(\"Nyt on jouluaatto\")\nelif pvm == \"25.12.\":\n    print(\"Nyt on joulupäivä\")\nelif pvm == \"26.12.\":\n    print(\"Nyt on tapaninpäivä\")\n\nprint(\"Kiitos ja hei.\")

    Joulukalenteri\nMikä päivä nyt on? 25.12.\nNyt on joulupäivä\nKiitos ja hei.

    Huomaa, että ehtolauseessa ei edellisessä esimerkissä ole ollenkaan else-haaraa. Jos käyttäjä syöttää jonkin sellaisen päivämäärän, jota ei täytä ehtoa jossain if- tai elif-lauseessa, ohjelmassa ei suoriteta mitään ehtolauseen kolmesta lohkosta.

    Joulukalenteri\nMikä päivä nyt on? 1.1.\nKiitos ja hei.

    Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja tulostaa niistä suuremman. Jos luvut ovat yhtä suuret, ohjelma huomaa myös tämän.

    Esimerkkitulostuksia:

    Anna ensimmäinen luku: 5\nAnna toinen luku: 3\nSuurempi luku: 5

    Anna ensimmäinen luku: 5\nAnna toinen luku: 8\nSuurempi luku: 8

    Anna ensimmäinen luku: 5\nAnna toinen luku: 5\nLuvut ovat yhtä suuret!

    Tee ohjelma, joka kysyy kahden henkilön nimen ja iän ja tulostaa vanhemman henkilön nimen.

    Esimerkkisyötteitä

    Henkilö 1:\nNimi: Teppo\nIkä: 26\nHenkilö 2:\nNimi: Tiina\nIkä: 27\nVanhempi on Tiina

    Henkilö 1:\nNimi: Antti\nIkä: 1\nHenkilö 2:\nNimi: Venla\nIkä: 1\nAntti ja Venla ovat yhtä vanhoja

    Lukujen lisäksi Python osaa vertailla myös merkkijonojen suuruusjärjestystä. Merkkijono a on pienempi kuin merkkijono b, jos merkkijono a tulee aakkosjärjestyksessä ennen jonoa b.\nHuomaa kuitenkin, että tämä pätee varmasti vain kun

      \n
    • vertaillaan samankokoisia kirjaimia (eli ISOJA tai pieniä kirjaimia) keskenään ja
    • \n
    • vertailtavissa sanoissa on vain englannin kielestä tuttuja kirjaimia (eli a-z tai A-Z).
    • \n

    Tee ohjelma, joka kysyy käyttäjältä kahta sanaa. Ohjelma tulostaa sanoista sen, joka on aakkosjärjestyksessä jälkimmäinen.

    Voit olettaa, että sanat on syötetty kokonaan pienillä kirjaimilla.

    Esimerkkisuorituksia eri syötteillä:

    Anna 1. sana: auto\nAnna 2. sana: mopo\nmopo on aakkosjärjestyksessä viimeinen.

    Anna 1. sana: zorro\nAnna 2. sana: batman\nzorro on aakkosjärjestyksessä viimeinen.

    Anna 1. sana: python\nAnna 2. sana: python\nAnnoit saman sanan kahdesti.

    ","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/2-else-elif.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda vaihtoehtoisia haaroja toistolauseisiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-lauseiden merkityksen ehtolauseessa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat soveltaa jakojäännöstä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" ehdoissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöte negatiivinen vai positiivinen tai nolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on positiivinen tai nolla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma on hiukan kömpelö. Jokaisen mahdollisen syötteen kohdalla halutaan suorittaa vain toinen lohkoista, koska aina pätee joko "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku < 0"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku >= 0"}]},{"type":"text","value":". Ensimmäinen vertailu sisältää tavallaan kaiken olennaisen: jos tulos on tosi, luku on negatiivinen, ja jos se on epätosi, luku on positiivinen tai nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisen vertailun sijasta onkin usein näppärämpää luoda vaihtoehtoinen haara, joka suoritetaan, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jos ehto on epätosi"}]},{"type":"text","value":". Tätä tarkoitusta varten käytetään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-lausetta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellinen esimerkki kirjoitettuna uudestaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on positiivinen tai nolla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun käytetään if-else-rakennetta, suoritetaan vaihtoehtoisista lohkoista aina jompikumpi. Seuraava kuva havainnollistaa asiaa:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/35830d6bd78153ffe23d80092b0482cb/e17e5/2_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 148.2608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOUlEQVRIx5WWx67CQAxF+f9PYsUWgdjQRS+i997n6VjPaHAmlJGskIlzfT3Xdki4//V4PJ5XNbvPOhwO7n6/v+z5KxEHaMF1b7Vauev1Ggz+Amgj2t9632q13PF4DAbEIgxvt5tbr9cRIBap5nI5N5lMXNyKAJ5OJzedTiPnNhwOXa1Wk2fdbldssViIvxpkIoDn81kclZGeG6mWy2XX6XRcpVIR8MFg4ObzuVsul8J6PB6HGSqgFWi/38uLBLhcLs6e/2w2+wxoBSqVSi8Z6DOUF0ArfRxDGG02G5dKpVyz2RQ/P9jPgDiTMgcPOKn7aT8Brew4hQA5ePYbjYaorgr7JYVPot1uu0wm4/L5vCsWi67X64lyIYa73U5egiU+PiDsqYAEm9xst1u5YlYUFsUOCM8wUgZYF8oXCoVoyrYOORs1Wq7f70tQWwHPlEOiaMqj0Ug6g3S1gGES6nEC4vu2Dv2eRSxNmRcBtoAfCxtAbT9ASFmLGba2Uwj4tpcB9MsGUDqFAq/X69LbBOFehQoyhLoFBIz6w9ijWxgY+FMhGMcSAeQslCEgus8LBFKhfHGC8zA0pe1c5EowbbmvJravnAVk0XrUYWiiv/1IKUM/Zdhls1mZ1lo2NmCkU3wnZchCSUzbk2d2hMUCqgMjHVYIkU6n5T6ZTMr4p4y+ArRfQP0AUXdMG8ApHRT/GjD0r4CCpxP4+gH29Rm++1uiY8ofW7Eqf2Kq12q1KqnHfcR+BiRl+1fEZ/gH+rYob4TljzUAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/35830d6bd78153ffe23d80092b0482cb/a0b58/2_2_1.webp 230w","/static/35830d6bd78153ffe23d80092b0482cb/7f61c/2_2_1.webp 400w"],"sizes":"(max-width: 400px) 100vw, 400px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/35830d6bd78153ffe23d80092b0482cb/81c8e/2_2_1.png 230w","/static/35830d6bd78153ffe23d80092b0482cb/e17e5/2_2_1.png 400w"],"sizes":"(max-width: 400px) 100vw, 400px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/35830d6bd78153ffe23d80092b0482cb/e17e5/2_2_1.png","alt":"2 2 1","title":"2 2 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että else-haaraa ei voi olla olemassa ilman edeltävää if-haaraa. Koko if-else-rakenne lohkoineen muodostaa yhden "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ehtolauseen"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki tutkii, onko käyttäjän syöttämä luku parillinen vai ei. Parillisuuden selvittämiseen käytetään jakojäännösoperaattoria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":". Jakojäännöksellä on kätevä testata luvun parillisuutta: jos luvun jakojäännös kahdella on nolla, luku on parillinen, ja muuten pariton."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLuku on pariton"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmas esimerkki, jossa vertaillaan merkkijonojen samuutta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oikea "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kissa\""}]},{"type":"text","value":"\nsalasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna salasana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" salasana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" oikea"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tervetuloa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pääsy kielletty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkisuoritusta eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kissa"}]},{"type":"text","value":"\nTervetuloa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apina"}]},{"type":"text","value":"\nPääsy kielletty"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Täysi-ikäisyys","tmcname":"osa02-04_taysi_ikaisyys","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän ikää ja kertoo, onko tämä täysi-ikäinen (eli 18-vuotias tai vanhempi)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12"}]},{"type":"text","value":"\nEt ole täysi-ikäinen!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka vanha olet? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"32"}]},{"type":"text","value":"\nOlet täysi-ikäinen!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"vaihtoehtoiset-haarat-elif-lauseella","style":"position:relative;"},"children":[{"type":"text","value":"Vaihtoehtoiset haarat elif-lauseella"},{"type":"element","tagName":"a","properties":{"href":"#vaihtoehtoiset-haarat-elif-lauseella","ariaLabel":"vaihtoehtoiset haarat elif lauseella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein vaihtoehtoja on kuitenkin enemmän kuin kaksi. Esimerkiksi jalkapallo-ottelun lopputulosta käsitellessä olisi hyvä varautua kolmeen vaihtoehtoiseen lopputulokseen kotijoukkueen kannalta: voitto, häviö tai tasapeli."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtolausetta voidaan laajentaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"-haaralla. Se on lyhenne sanoista \"else if\", ja tarkoittaa nimensä mukaisesti vaihtoehtoa alkuperäiselle ehdolle."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 498px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/22229d7c746f99d073f0131c022eae85/79e1b/2_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 168.69565217391306%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAiCAYAAABfqvm9AAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVRIx52W167CMBBE8/8/h3gB0RG99958dSwNWhwngWvJ4Ky949maJM4593q9nP5j6/D5fr+7y+USPZdYhay1vYQB2G63+9jXTEKG1+s1k6HGcDh0g8HAxcYH4PP5dMvlMnoz43g8eqBer+fndDp1h8PBMz6fz+7xeKQBN5uNy/Ire5VKxXW73feEwH6/9y5YrVZpwPV6XWgyirLEDnRzAbOYwrJarb51kEu3EDAEZR/TmaztOWSFJltmOH273brRaOSDwRod5eZisfjeh5KhxBkAWQuQoLRarWKTkWkiIz0Iynw+d7fb7eOsN9kysYC6FUX5y/ovBJN/E0XIRkoDH0nxm/GOcii0DFWKXIbjuWQ2m/mJH7mQScDIzYQSqtfr3qEAxBgCRgDG47Erl8uu2Wz6841Gw+djv9/3ulRMwo/8Qk3GAMVMnYYzsFELSzUHmxYxQMxRjav0YBxtX/YhKygwtIDtdttPW3oCz8zD0IdqqEpsJkzD8iwEhB3JTD4qeemJijYXcOZrhvgPmUwkGMhJGRjCnPW/TT6dTu+Gyh7sfwYMg2IHF/wMiNliCDvkTNb/Zqjo8h5hLVBeXLmANhVsLcMEoE6n8xug9ZUF1EAZOecwOerDrHeIBbTVBEuaQ2FQwneIGob25GNMZU/5GGUYNgkxlL8wj0+QWq3mSqWSb1u0L1pXqlLyQC1rFClBAkcwWJNSqVrOAwtlRJvym0wmH/79yuSw10mOz2JfGLkmhxdYQBjGGiwm/wESm2QC2G3IagAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/22229d7c746f99d073f0131c022eae85/a0b58/2_2_2.webp 230w","/static/22229d7c746f99d073f0131c022eae85/bc10c/2_2_2.webp 460w","/static/22229d7c746f99d073f0131c022eae85/71ce1/2_2_2.webp 498w"],"sizes":"(max-width: 498px) 100vw, 498px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/22229d7c746f99d073f0131c022eae85/81c8e/2_2_2.png 230w","/static/22229d7c746f99d073f0131c022eae85/08a84/2_2_2.png 460w","/static/22229d7c746f99d073f0131c022eae85/79e1b/2_2_2.png 498w"],"sizes":"(max-width: 498px) 100vw, 498px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/22229d7c746f99d073f0131c022eae85/79e1b/2_2_2.png","alt":"2 2 2","title":"2 2 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä, jossa selvitetään ottelun voittaja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"maalit_koti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kotijoukkueen maalimäärä: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmaalit_vieras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vierasjoukkueen maalimäärä: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maalit_koti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" maalit_vieras"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kotijoukkue voitti!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" maalit_vieras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" maalit_koti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vierasjoukkue voitti!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tasapeli!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolme esimerkkitulosta eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kotijoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nVierasjoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nKotijoukkue voitti!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kotijoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nVierasjoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\nVierasjoukkue voitti!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kotijoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nVierasjoukkueen maalimäärä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nTasapeli!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä ehtolauseessa on siis kolme vaihtoehtoista haaraa, joista suoritetaan aina yksi. Ehtolauseessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"-haaroja voi olla useampia, eikä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-haara ole pakollinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Joulukalenteri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä päivä nyt on? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"24.12.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt on jouluaatto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"25.12.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt on joulupäivä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"26.12.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt on tapaninpäivä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos ja hei.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joulukalenteri\nMikä päivä nyt on? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"25.12."}]},{"type":"text","value":"\nNyt on joulupäivä\nKiitos ja hei."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että ehtolauseessa ei edellisessä esimerkissä ole ollenkaan else-haaraa. Jos käyttäjä syöttää jonkin sellaisen päivämäärän, jota ei täytä ehtoa jossain "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"- tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":"-lauseessa, ohjelmassa ei suoriteta mitään ehtolauseen kolmesta lohkosta."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joulukalenteri\nMikä päivä nyt on? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1.1."}]},{"type":"text","value":"\nKiitos ja hei."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":" Suurempi tai yhtäsuuri","tmcname":"osa02-05_suurempi_tai_yhtasuuri","height":"400px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja tulostaa niistä suuremman. Jos luvut ovat yhtä suuret, ohjelma huomaa myös tämän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna toinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nSuurempi luku: 5"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna toinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nSuurempi luku: 8"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ensimmäinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna toinen luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLuvut ovat yhtä suuret!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Vanhempi","tmcname":"osa02-06_vanhempi","height":"550px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy kahden henkilön nimen ja iän ja tulostaa vanhemman henkilön nimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisyötteitä"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilö 1:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Teppo"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"26"}]},{"type":"text","value":"\nHenkilö 2:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tiina"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"27"}]},{"type":"text","value":"\nVanhempi on Tiina"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilö 1:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Antti"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nHenkilö 2:\nNimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Venla"}]},{"type":"text","value":"\nIkä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAntti ja Venla ovat yhtä vanhoja"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Aakkosjärjestyksessä viimeinen","tmcname":"osa02-07_aakkkosjarjestyksessa_viimeinen","height":"500px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lukujen lisäksi Python osaa vertailla myös merkkijonojen suuruusjärjestystä. Merkkijono a on pienempi kuin merkkijono b, jos merkkijono a tulee aakkosjärjestyksessä ennen jonoa b.\nHuomaa kuitenkin, että tämä pätee varmasti vain kun"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vertaillaan samankokoisia kirjaimia (eli ISOJA tai pieniä kirjaimia) keskenään ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vertailtavissa sanoissa on vain englannin kielestä tuttuja kirjaimia (eli a-z tai A-Z)."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kahta sanaa. Ohjelma tulostaa sanoista sen, joka on aakkosjärjestyksessä jälkimmäinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että sanat on syötetty kokonaan pienillä kirjaimilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"auto"}]},{"type":"text","value":"\nAnna 2. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"mopo"}]},{"type":"text","value":"\nmopo on aakkosjärjestyksessä viimeinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"zorro"}]},{"type":"text","value":"\nAnna 2. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"batman"}]},{"type":"text","value":"\nzorro on aakkosjärjestyksessä viimeinen."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nAnna 2. sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nAnnoit saman sanan kahdesti."}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda vaihtoehtoisia haaroja toistolauseisiin
    • \n
    • Ymmärrät if-, elif- ja else-lauseiden merkityksen ehtolauseessa
    • \n
    • Osaat soveltaa jakojäännöstä % ehdoissa
    • \n

    Tarkastellaan ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöte negatiivinen vai positiivinen tai nolla:

    luku = int(input(\"Anna luku: \"))\n\nif luku < 0:\n    print(\"Luku on negatiivinen\")\n\nif luku >= 0:\n    print(\"Luku on positiivinen tai nolla\")

    Ohjelma on hiukan kömpelö. Jokaisen mahdollisen syötteen kohdalla halutaan suorittaa vain toinen lohkoista, koska aina pätee joko luku < 0 tai luku >= 0. Ensimmäinen vertailu sisältää tavallaan kaiken olennaisen: jos tulos on tosi, luku on negatiivinen, ja jos se on epätosi, luku on positiivinen tai nolla.

    Toisen vertailun sijasta onkin usein näppärämpää luoda vaihtoehtoinen haara, joka suoritetaan, jos ehto on epätosi. Tätä tarkoitusta varten käytetään else-lausetta.

    Edellinen esimerkki kirjoitettuna uudestaan:

    luku = int(input(\"Anna luku: \"))\n\nif luku < 0:\n    print(\"Luku on negatiivinen\")\nelse:\n    print(\"Luku on positiivinen tai nolla\")

    Kun käytetään if-else-rakennetta, suoritetaan vaihtoehtoisista lohkoista aina jompikumpi. Seuraava kuva havainnollistaa asiaa:

    \n \n \n \n \n \n \"2\n \n \n

    Tarkastellaan esimerkkiä, jossa selvitetään ottelun voittaja:

    maalit_koti = int(input(\"Kotijoukkueen maalimäärä: \"))\nmaalit_vieras = int(input(\"Vierasjoukkueen maalimäärä: \"))\n\nif maalit_koti > maalit_vieras:\n    print(\"Kotijoukkue voitti!\")\nelif maalit_vieras > maalit_koti:\n    print(\"Vierasjoukkue voitti!\")\nelse:\n    print(\"Tasapeli!\")

    Kolme esimerkkitulosta eri syötteillä:

    Kotijoukkueen maalimäärä: 4\nVierasjoukkueen maalimäärä: 2\nKotijoukkue voitti!

    Kotijoukkueen maalimäärä: 0\nVierasjoukkueen maalimäärä: 6\nVierasjoukkue voitti!

    Kotijoukkueen maalimäärä: 3\nVierasjoukkueen maalimäärä: 3\nTasapeli!

    Esimerkissä ehtolauseessa on siis kolme vaihtoehtoista haaraa, joista suoritetaan aina yksi. Ehtolauseessa elif-haaroja voi olla useampia, eikä else-haara ole pakollinen.

    Esimerkiksi:

    print(\"Joulukalenteri\")\npvm = input(\"Mikä päivä nyt on? \")\n\nif pvm == \"24.12.\":\n    print(\"Nyt on jouluaatto\")\nelif pvm == \"25.12.\":\n    print(\"Nyt on joulupäivä\")\nelif pvm == \"26.12.\":\n    print(\"Nyt on tapaninpäivä\")\n\nprint(\"Kiitos ja hei.\")

    Joulukalenteri\nMikä päivä nyt on? 25.12.\nNyt on joulupäivä\nKiitos ja hei.

    Huomaa, että ehtolauseessa ei edellisessä esimerkissä ole ollenkaan else-haaraa. Jos käyttäjä syöttää jonkin sellaisen päivämäärän, jota ei täytä ehtoa jossain if- tai elif-lauseessa, ohjelmassa ei suoriteta mitään ehtolauseen kolmesta lohkosta.

    Joulukalenteri\nMikä päivä nyt on? 1.1.\nKiitos ja hei.

    Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja tulostaa niistä suuremman. Jos luvut ovat yhtä suuret, ohjelma huomaa myös tämän.

    Esimerkkitulostuksia:

    Anna ensimmäinen luku: 5\nAnna toinen luku: 3\nSuurempi luku: 5

    Anna ensimmäinen luku: 5\nAnna toinen luku: 8\nSuurempi luku: 8

    Anna ensimmäinen luku: 5\nAnna toinen luku: 5\nLuvut ovat yhtä suuret!

    Tee ohjelma, joka kysyy kahden henkilön nimen ja iän ja tulostaa vanhemman henkilön nimen.

    Esimerkkisyötteitä

    Henkilö 1:\nNimi: Teppo\nIkä: 26\nHenkilö 2:\nNimi: Tiina\nIkä: 27\nVanhempi on Tiina

    Henkilö 1:\nNimi: Antti\nIkä: 1\nHenkilö 2:\nNimi: Venla\nIkä: 1\nAntti ja Venla ovat yhtä vanhoja

    Lukujen lisäksi Python osaa vertailla myös merkkijonojen suuruusjärjestystä. Merkkijono a on pienempi kuin merkkijono b, jos merkkijono a tulee aakkosjärjestyksessä ennen jonoa b.\nHuomaa kuitenkin, että tämä pätee varmasti vain kun

      \n
    • vertaillaan samankokoisia kirjaimia (eli ISOJA tai pieniä kirjaimia) keskenään ja
    • \n
    • vertailtavissa sanoissa on vain englannin kielestä tuttuja kirjaimia (eli a-z tai A-Z).
    • \n

    Tee ohjelma, joka kysyy käyttäjältä kahta sanaa. Ohjelma tulostaa sanoista sen, joka on aakkosjärjestyksessä jälkimmäinen.

    Voit olettaa, että sanat on syötetty kokonaan pienillä kirjaimilla.

    Esimerkkisuorituksia eri syötteillä:

    Anna 1. sana: auto\nAnna 2. sana: mopo\nmopo on aakkosjärjestyksessä viimeinen.

    Anna 1. sana: zorro\nAnna 2. sana: batman\nzorro on aakkosjärjestyksessä viimeinen.

    Anna 1. sana: python\nAnna 2. sana: python\nAnnoit saman sanan kahdesti.

    ","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/2-else-elif.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git "a/page-data/osa-2/3-ehtojen-yhdist\303\244minen/page-data.json" "b/page-data/osa-2/3-ehtojen-yhdist\303\244minen/page-data.json" index 23df5192a..4b7627a31 100644 --- "a/page-data/osa-2/3-ehtojen-yhdist\303\244minen/page-data.json" +++ "b/page-data/osa-2/3-ehtojen-yhdist\303\244minen/page-data.json" @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-2/3-ehtojen-yhdistäminen", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":"-, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":"-operaattoreita ehdoissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa sisäkkäisiä ehtolauseita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"loogiset-operaattorit","style":"position:relative;"},"children":[{"type":"text","value":"Loogiset operaattorit"},{"type":"element","tagName":"a","properties":{"href":"#loogiset-operaattorit","ariaLabel":"loogiset operaattorit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtojen yhdistämisessä voidaan käyttää loogisia operaattoreita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":".\nOperaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" vaatii, että useampi ehto pätee samaan aikaan,\nja operaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" vaatii, että yksi tai useampi ehdoista pätee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku >= 5 and luku <= 8"}]},{"type":"text","value":" vaatii,\nettä luku on samaan aikaan ainakin 5 ja enintään 8.\nToisin sanoen luvun tulee olla välillä 5..8."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on välillä 5..8\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku < 5 or luku > 8"}]},{"type":"text","value":" puolestaan vaatii,\nettä luku on alle 5 tai yli 8.\nToisin sanoen luku ei saa olla välillä 5..8."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku ei ole välillä 5..8\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava taulukko näyttää operaattoreiden toiminnan eri tilanteissa:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"b"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a and b"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a or b"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää ehdoissa myös operaattoria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":", joka muuttaa totuusarvon\nkäänteiseksi:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"not a"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi voisimme toteuttaa äskeisen koodin myös näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku ei ole välillä 5..8\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Ehtojen ketjuttaminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x >= a and x <= b"}]},{"type":"text","value":" on tavallinen tapa testata,\nonko luku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" välillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":".."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":".\nTällainen ehto toimii samalla tavalla eri ohjelmointikielissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python-kielen erikoisuutena on, että myös lyhyempi ehto\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a <= x <= b"}]},{"type":"text","value":" toimii, eli ehtoja on mahdollista ketjuttaa.\nTällaisia ehtoja käytetään kuitenkin melko harvoin,\nehkä tottumuksesta muihin ohjelmointikieliin."}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-ehtoja","style":"position:relative;"},"children":[{"type":"text","value":"Lisää ehtoja"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-ehtoja","ariaLabel":"lisaa ehtoja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma kysyy käyttäjältä neljä lukua ja selvittää sitten\nluvuista suurimman ehtojen avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 1: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nn2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 2: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nn3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 3: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nn4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 4: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n2 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n3 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n1\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" n2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n3 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" n2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n2\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" n3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n3\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n4\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on suurin luku.\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna luku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna luku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna luku 4: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n4 on suurin luku."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä ensimmäinen ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n1 > n2 and n1 > n3 and n1 > n4"}]},{"type":"text","value":" on tosi vain, mikäli kaikki kolme ehtoa ovat tosia."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Iän tarkistus","tmcname":"osa02-08_ian_tarkistus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän ikää. Jos ikä ei ole uskottava (se on alle 5 tai mahdoton luku iälle), antaa ohjelma siihen liittyvän kommentin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: tarkastele esimerkkisuorituksia löytääksesi oikean vastineen eri vaihtoehdoille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro ikäsi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"13"}]},{"type":"text","value":"\nOk, olet siis 13-vuotias"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro ikäsi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nEn usko, että osaat kirjoittaa..."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro ikäsi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-4"}]},{"type":"text","value":"\nTaitaa olla virhe"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Veljenpojat","tmcname":"osa02-09_veljenpojat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän nimeä. Jos nimeksi syötetään Tupu, Hupu tai Lupu, ohjelma tunnistaa käyttäjän Aku Ankan veljenpojaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos nimeksi annetaan Mortti tai Vertti, ohjelma vastaavasti tunnistaa käyttäjän Mikki Hiiren veljenpojaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Mortti"}]},{"type":"text","value":"\nOlet luultavasti Mikki Hiiren veljenpoika."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Hupu"}]},{"type":"text","value":"\nOlet luultavasti Aku Ankan veljenpoika."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keijo"}]},{"type":"text","value":"\nEt ole kenenkään tuntemani hahmon veljenpoika."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Arvosana ja pisteet","tmcname":"osa02-10_arvosana_ja_pisteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alla oleva taulukko kuvaa erään kurssin arvosanan muodostumista. Tee ohjelma, joka ilmoittaa kurssiarvosanan annetun taulukon mukaisesti."}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"pistemäärä"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"arvosana"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"< 0"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"mahdotonta!"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0-49"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"hylätty"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"50-59"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"60-69"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"70-79"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"80-89"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"90-100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"> 100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"mahdotonta!"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pisteet [0-100]: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"37"}]},{"type":"text","value":"\nArvosana: hylätty"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pisteet [0-100]: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"76"}]},{"type":"text","value":"\nArvosana: 3"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pisteet [0-100]: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nArvosana: mahdotonta!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"FizzBuzz","tmcname":"osa02-11_fizzbuzz"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kysyy käyttäjältä lukua. Jos luku on jaollinen kolmella, tulostetaan Fizz. Jos luku on jaollinen viidellä, tulostetaan Buzz. Jos luku on jaollinen sekä kolmella, että viidellä, tulostetaan FizzBuzz"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nFizz"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\nBuzz"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\nFizzBuzz"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-ehtolauseet","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset ehtolauseet"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-ehtolauseet","ariaLabel":"sisakkaiset ehtolauseet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtolauseita voidaan kirjoittaa toistensa sisään. Esimerkiksi seuraava ohjelma tunnistaa positiivisista luvuista parittomat ja parilliset:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus kolmella eri syötteellä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLuku on pariton"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"18"}]},{"type":"text","value":"\nLuku on parillinen"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-4"}]},{"type":"text","value":"\nLuku on negatiivinen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäkkäisiä ehtolauseita käytettäessä on tärkeä muistaa oikeat sisennykset. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-haara yhdistetään oikeaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lauseeseen juuri saman sisennyksen perusteella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että monissa tapauksissa voidaan käyttää joko sisäkkäisiä ehtolauseita tai loogisia operaattoreita. Seuraava esimerkki on toiminnallisesti sama kuin edellinen esimerkki, eli se tulostaa tiedon siitä, onko positiivinen kokonaisluku parillinen vai pariton."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tilanteesta riippuu, kumpaa tapaa kannattaa käyttää. Tässä esimerkissä ensimmäinen vaihtoehto tuntuu useimpien mielestä paremmalta."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Karkausvuosi","tmcname":"osa02-12_karkausvuosi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Kuitenkin jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin, kun se on jaollinen myös 400:lla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä vuosiluvun, ja tarkistaa, onko vuosi karkausvuosi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2011"}]},{"type":"text","value":"\nVuosi ei ole karkausvuosi."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":"\nVuosi on karkausvuosi."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1800"}]},{"type":"text","value":"\nVuosi ei ole karkausvuosi."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Aakkosjärjestyksessä keskimmäinen","tmcname":"osa02-13_aakkosjarjestyksessa_keskimmainen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kolme kirjainta. Ohjelma tulostaa kirjaimista aakkosjärjestyksessä keskimmäisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että kirjaimet ovat joko kaikki isoja tai kaikki pieniä kirjaimia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. kirjain: x\nAnna 2. kirjain: c\nAnna 3. kirjain: p\nKeskimmäinen kirjain on p"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. kirjain: C\nAnna 2. kirjain: B\nAnna 3. kirjain: A\nKeskimmäinen kirjain on B"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lahjaverolaskuri","tmcname":"osa02-14_lahjaverolaskuri","height":"500px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://www.vero.fi/henkiloasiakkaat/omaisuus/lahja/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Verottajan mukaan"}]},{"type":"text","value":" lahja tarkoittaa sitä, että omaisuus siirtyy toiselle henkilölle ilman korvausta. Lahjasta pitää maksaa lahjaveroa, jos samalta lahjanantajalta saatujen lahjojen arvo on kolmen vuoden aikana 5 000 euroa tai enemmän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun lahja tulee lähimmiltä sukulaisilta, lahjaveron määrä määräytyy seuraavan taulukon "},{"type":"element","tagName":"a","properties":{"href":"https://www.vero.fi/henkiloasiakkaat/omaisuus/lahja/lahjaverolaskuri/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"mukaan"}]},{"type":"text","value":":"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Lahja"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Vero alarajalla"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Veroprosentti ylimenevästä"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5 000 — 25 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"8"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"25 000 — 55 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1 700"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"10"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"55 000 — 200 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4 700"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"12"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"200 000 — 1 000 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"22 100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"15"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1 000 000 —"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"142 100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"17"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi 6000 euron lahjasta tulee maksaa veroa 180 euroa (100 + (6000-5000) * 0.08) ja 75000 euron lahjasta tulee maksaa veroa 7100 euroa (4700 + (75000-55000) * 0.12)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka laskee lahjaveron lähimpien sukulaisten antamalle lahjalle. Alla on muutama esimerkki ohjelman toiminnasta."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan suuruus? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3500"}]},{"type":"text","value":"\nEi veroa!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan suuruus? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5000"}]},{"type":"text","value":"\nVero: 100.0 euroa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan suuruus? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"27500"}]},{"type":"text","value":"\nVero: 1950.0 euroa"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää and-, or- ja not-operaattoreita ehdoissa
    • \n
    • Osaat kirjoittaa sisäkkäisiä ehtolauseita
    • \n

    Loogiset operaattorit

    Ehtojen yhdistämisessä voidaan käyttää loogisia operaattoreita and ja or.\nOperaattori and vaatii, että useampi ehto pätee samaan aikaan,\nja operaattori or vaatii, että yksi tai useampi ehdoista pätee.

    Esimerkiksi ehto luku >= 5 and luku <= 8 vaatii,\nettä luku on samaan aikaan ainakin 5 ja enintään 8.\nToisin sanoen luvun tulee olla välillä 5..8.

    luku = int(input(\"Anna luku: \"))\nif luku >= 5 and luku <= 8:\n    print(\"Luku on välillä 5..8\")

    Ehto luku < 5 or luku > 8 puolestaan vaatii,\nettä luku on alle 5 tai yli 8.\nToisin sanoen luku ei saa olla välillä 5..8.

    luku = int(input(\"Anna luku: \"))\nif luku < 5 or luku > 8:\n    print(\"Luku ei ole välillä 5..8\")

    Seuraava taulukko näyttää operaattoreiden toiminnan eri tilanteissa:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    aba and ba or b
    FalseFalseFalseFalse
    TrueFalseFalseTrue
    FalseTrueFalseTrue
    TrueTrueTrueTrue

    Voimme käyttää ehdoissa myös operaattoria not, joka muuttaa totuusarvon\nkäänteiseksi:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    anot a
    TrueFalse
    FalseTrue

    Esimerkiksi voisimme toteuttaa äskeisen koodin myös näin:

    luku = int(input(\"Anna luku: \"))\nif not (luku >= 5 and luku <= 8):\n    print(\"Luku ei ole välillä 5..8\")

    Ehto x >= a and x <= b on tavallinen tapa testata,\nonko luku x välillä a..b.\nTällainen ehto toimii samalla tavalla eri ohjelmointikielissä.

    Python-kielen erikoisuutena on, että myös lyhyempi ehto\na <= x <= b toimii, eli ehtoja on mahdollista ketjuttaa.\nTällaisia ehtoja käytetään kuitenkin melko harvoin,\nehkä tottumuksesta muihin ohjelmointikieliin.

    Lisää ehtoja

    Seuraava ohjelma kysyy käyttäjältä neljä lukua ja selvittää sitten\nluvuista suurimman ehtojen avulla:

    n1 = int(input(\"Anna luku 1: \"))\nn2 = int(input(\"Anna luku 2: \"))\nn3 = int(input(\"Anna luku 3: \"))\nn4 = int(input(\"Anna luku 4: \"))\n\nif n1 > n2 and n1 > n3 and n1 > n4:\n    suurin = n1\nelif n2 > n3 and n2 > n4:\n    suurin = n2\nelif n3 > n4:\n    suurin = n3\nelse:\n    suurin = n4\n\nprint(f\" {suurin} on suurin luku.\")

    Anna luku 1: 2\nAnna luku 2: 4\nAnna luku 3: 1\nAnna luku 4: 1\n4 on suurin luku.

    Esimerkissä ensimmäinen ehto n1 > n2 and n1 > n3 and n1 > n4 on tosi vain, mikäli kaikki kolme ehtoa ovat tosia.

    Tee ohjelma, joka kysyy käyttäjän ikää. Jos ikä ei ole uskottava (se on alle 5 tai mahdoton luku iälle), antaa ohjelma siihen liittyvän kommentin.

    Vinkki: tarkastele esimerkkisuorituksia löytääksesi oikean vastineen eri vaihtoehdoille.

    Esimerkkitulostuksia:

    Kerro ikäsi? 13\nOk, olet siis 13-vuotias

    Kerro ikäsi? 2\nEn usko, että osaat kirjoittaa...

    Kerro ikäsi? -4\nTaitaa olla virhe

    Tee ohjelma, joka kysyy käyttäjän nimeä. Jos nimeksi syötetään Tupu, Hupu tai Lupu, ohjelma tunnistaa käyttäjän Aku Ankan veljenpojaksi.

    Jos nimeksi annetaan Mortti tai Vertti, ohjelma vastaavasti tunnistaa käyttäjän Mikki Hiiren veljenpojaksi.

    Esimerkkitulostuksia:

    Anna nimesi: Mortti\nOlet luultavasti Mikki Hiiren veljenpoika.

    Anna nimesi: Hupu\nOlet luultavasti Aku Ankan veljenpoika.

    Anna nimesi: Keijo\nEt ole kenenkään tuntemani hahmon veljenpoika.

    Alla oleva taulukko kuvaa erään kurssin arvosanan muodostumista. Tee ohjelma, joka ilmoittaa kurssiarvosanan annetun taulukon mukaisesti.

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    pistemääräarvosana
    < 0mahdotonta!
    0-49hylätty
    50-591
    60-692
    70-793
    80-894
    90-1005
    > 100mahdotonta!

    Esimerkkitulostuksia:

    Anna pisteet [0-100]: 37\nArvosana: hylätty

    Anna pisteet [0-100]: 76\nArvosana: 3

    Anna pisteet [0-100]: -3\nArvosana: mahdotonta!

    Ohjelma kysyy käyttäjältä lukua. Jos luku on jaollinen kolmella, tulostetaan Fizz. Jos luku on jaollinen viidellä, tulostetaan Buzz. Jos luku on jaollinen sekä kolmella, että viidellä, tulostetaan FizzBuzz

    Esimerkkitulostuksia:

    Luku: 9\nFizz

    Luku: 7

    Luku: 20\nBuzz

    Luku: 45\nFizzBuzz

    Sisäkkäiset ehtolauseet

    Ehtolauseita voidaan kirjoittaa toistensa sisään. Esimerkiksi seuraava ohjelma tunnistaa positiivisista luvuista parittomat ja parilliset:

    luku = int(input(\"Anna luku: \"))\n\nif luku > 0:\n    if luku % 2 == 0:\n        print(\"Luku on parillinen\")\n    else:\n        print(\"Luku on pariton\")\nelse:\n    print(\"Luku on negatiivinen\")

    Esimerkkitulostus kolmella eri syötteellä:

    Anna luku: 3\nLuku on pariton

    Anna luku: 18\nLuku on parillinen

    Anna luku: -4\nLuku on negatiivinen

    Sisäkkäisiä ehtolauseita käytettäessä on tärkeä muistaa oikeat sisennykset. Esimerkiksi else-haara yhdistetään oikeaan if-lauseeseen juuri saman sisennyksen perusteella.

    Huomaa, että monissa tapauksissa voidaan käyttää joko sisäkkäisiä ehtolauseita tai loogisia operaattoreita. Seuraava esimerkki on toiminnallisesti sama kuin edellinen esimerkki, eli se tulostaa tiedon siitä, onko positiivinen kokonaisluku parillinen vai pariton.

    luku = int(input(\"Anna luku: \"))\n\nif luku > 0 and luku % 2 == 0:\n    print(\"Luku on parillinen\")\nelif luku > 0 and luku % 2 != 0:\n    print(\"Luku on pariton\")\nelse:\n    print(\"Luku on negatiivinen.\")

    Tilanteesta riippuu, kumpaa tapaa kannattaa käyttää. Tässä esimerkissä ensimmäinen vaihtoehto tuntuu useimpien mielestä paremmalta.

    Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Kuitenkin jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin, kun se on jaollinen myös 400:lla.

    Tee ohjelma, joka lukee käyttäjältä vuosiluvun, ja tarkistaa, onko vuosi karkausvuosi.

    Anna vuosi: 2011\nVuosi ei ole karkausvuosi.

    Anna vuosi: 2020\nVuosi on karkausvuosi.

    Anna vuosi: 1800\nVuosi ei ole karkausvuosi.

    Tee ohjelma, joka kysyy käyttäjältä kolme kirjainta. Ohjelma tulostaa kirjaimista aakkosjärjestyksessä keskimmäisen.

    Voit olettaa, että kirjaimet ovat joko kaikki isoja tai kaikki pieniä kirjaimia.

    Esimerkkisuorituksia:

    Anna 1. kirjain: x\nAnna 2. kirjain: c\nAnna 3. kirjain: p\nKeskimmäinen kirjain on p

    Anna 1. kirjain: C\nAnna 2. kirjain: B\nAnna 3. kirjain: A\nKeskimmäinen kirjain on B

    Verottajan mukaan lahja tarkoittaa sitä, että omaisuus siirtyy toiselle henkilölle ilman korvausta. Lahjasta pitää maksaa lahjaveroa, jos samalta lahjanantajalta saatujen lahjojen arvo on kolmen vuoden aikana 5 000 euroa tai enemmän.

    Kun lahja tulee lähimmiltä sukulaisilta, lahjaveron määrä määräytyy seuraavan taulukon mukaan:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    LahjaVero alarajallaVeroprosentti ylimenevästä
    5 000 — 25 0001008
    25 000 — 55 0001 70010
    55 000 — 200 0004 70012
    200 000 — 1 000 00022 10015
    1 000 000 —142 10017

    Esimerkiksi 6000 euron lahjasta tulee maksaa veroa 180 euroa (100 + (6000-5000) * 0.08) ja 75000 euron lahjasta tulee maksaa veroa 7100 euroa (4700 + (75000-55000) * 0.12).

    Tee ohjelma, joka laskee lahjaveron lähimpien sukulaisten antamalle lahjalle. Alla on muutama esimerkki ohjelman toiminnasta.

    Lahjan suuruus? 3500\nEi veroa!

    Lahjan suuruus? 5000\nVero: 100.0 euroa

    Lahjan suuruus? 27500\nVero: 1950.0 euroa

    ","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/3-ehtojen-yhdistaminen.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":"-, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":"-operaattoreita ehdoissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa sisäkkäisiä ehtolauseita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"loogiset-operaattorit","style":"position:relative;"},"children":[{"type":"text","value":"Loogiset operaattorit"},{"type":"element","tagName":"a","properties":{"href":"#loogiset-operaattorit","ariaLabel":"loogiset operaattorit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtojen yhdistämisessä voidaan käyttää loogisia operaattoreita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":".\nOperaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" vaatii, että useampi ehto pätee samaan aikaan,\nja operaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" vaatii, että yksi tai useampi ehdoista pätee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku >= 5 and luku <= 8"}]},{"type":"text","value":" vaatii,\nettä luku on samaan aikaan ainakin 5 ja enintään 8.\nToisin sanoen luvun tulee olla välillä 5..8."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on välillä 5..8\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku < 5 or luku > 8"}]},{"type":"text","value":" puolestaan vaatii,\nettä luku on alle 5 tai yli 8.\nToisin sanoen luku ei saa olla välillä 5..8."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku ei ole välillä 5..8\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava taulukko näyttää operaattoreiden toiminnan eri tilanteissa:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"b"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a and b"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a or b"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää ehdoissa myös operaattoria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":", joka muuttaa totuusarvon\nkäänteiseksi:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"a"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"not a"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi voisimme toteuttaa äskeisen koodin myös näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku ei ole välillä 5..8\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Ehtojen ketjuttaminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x >= a and x <= b"}]},{"type":"text","value":" on tavallinen tapa testata,\nonko luku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" välillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":".."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":".\nTällainen ehto toimii samalla tavalla eri ohjelmointikielissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python-kielen erikoisuutena on, että myös lyhyempi ehto\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a <= x <= b"}]},{"type":"text","value":" toimii, eli ehtoja on mahdollista ketjuttaa.\nTällaisia ehtoja käytetään kuitenkin melko harvoin,\nehkä tottumuksesta muihin ohjelmointikieliin."}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-ehtoja","style":"position:relative;"},"children":[{"type":"text","value":"Lisää ehtoja"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-ehtoja","ariaLabel":"lisaa ehtoja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma kysyy käyttäjältä neljä lukua ja selvittää sitten\nluvuista suurimman ehtojen avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 1: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nn2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 2: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nn3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 3: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nn4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku 4: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n2 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n3 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" n1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n1\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" n2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n3 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" n2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n2\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" n3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" n4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n3\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" n4\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on suurin luku.\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna luku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna luku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna luku 4: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n4 on suurin luku."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä ensimmäinen ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n1 > n2 and n1 > n3 and n1 > n4"}]},{"type":"text","value":" on tosi vain, mikäli kaikki kolme ehtoa ovat tosia."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Iän tarkistus","tmcname":"osa02-08_ian_tarkistus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän ikää. Jos ikä ei ole uskottava (se on alle 5 tai mahdoton luku iälle), antaa ohjelma siihen liittyvän kommentin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: tarkastele esimerkkisuorituksia löytääksesi oikean vastineen eri vaihtoehdoille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro ikäsi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"13"}]},{"type":"text","value":"\nOk, olet siis 13-vuotias"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro ikäsi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nEn usko, että osaat kirjoittaa..."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerro ikäsi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-4"}]},{"type":"text","value":"\nTaitaa olla virhe"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Veljenpojat","tmcname":"osa02-09_veljenpojat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän nimeä. Jos nimeksi syötetään Tupu, Hupu tai Lupu, ohjelma tunnistaa käyttäjän Aku Ankan veljenpojaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos nimeksi annetaan Mortti tai Vertti, ohjelma vastaavasti tunnistaa käyttäjän Mikki Hiiren veljenpojaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Mortti"}]},{"type":"text","value":"\nOlet luultavasti Mikki Hiiren veljenpoika."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Hupu"}]},{"type":"text","value":"\nOlet luultavasti Aku Ankan veljenpoika."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keijo"}]},{"type":"text","value":"\nEt ole kenenkään tuntemani hahmon veljenpoika."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Arvosana ja pisteet","tmcname":"osa02-10_arvosana_ja_pisteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alla oleva taulukko kuvaa erään kurssin arvosanan muodostumista. Tee ohjelma, joka ilmoittaa kurssiarvosanan annetun taulukon mukaisesti."}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"pistemäärä"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"arvosana"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"< 0"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"mahdotonta!"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0-49"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"hylätty"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"50-59"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"60-69"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"70-79"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"80-89"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"90-100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"> 100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"mahdotonta!"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pisteet [0-100]: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"37"}]},{"type":"text","value":"\nArvosana: hylätty"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pisteet [0-100]: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"76"}]},{"type":"text","value":"\nArvosana: 3"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna pisteet [0-100]: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nArvosana: mahdotonta!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"FizzBuzz","tmcname":"osa02-11_fizzbuzz"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kysyy käyttäjältä lukua. Jos luku on jaollinen kolmella, tulostetaan Fizz. Jos luku on jaollinen viidellä, tulostetaan Buzz. Jos luku on jaollinen sekä kolmella, että viidellä, tulostetaan FizzBuzz"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nFizz"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\nBuzz"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\nFizzBuzz"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-ehtolauseet","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset ehtolauseet"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-ehtolauseet","ariaLabel":"sisakkaiset ehtolauseet permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ehtolauseita voidaan kirjoittaa toistensa sisään. Esimerkiksi seuraava ohjelma tunnistaa positiivisista luvuista parittomat ja parilliset:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus kolmella eri syötteellä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLuku on pariton"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"18"}]},{"type":"text","value":"\nLuku on parillinen"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-4"}]},{"type":"text","value":"\nLuku on negatiivinen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäkkäisiä ehtolauseita käytettäessä on tärkeä muistaa oikeat sisennykset. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":"-haara yhdistetään oikeaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lauseeseen juuri saman sisennyksen perusteella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että monissa tapauksissa voidaan käyttää joko sisäkkäisiä ehtolauseita tai loogisia operaattoreita. Seuraava esimerkki on toiminnallisesti sama kuin edellinen esimerkki, eli se tulostaa tiedon siitä, onko positiivinen kokonaisluku parillinen vai pariton."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luku on negatiivinen.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tilanteesta riippuu, kumpaa tapaa kannattaa käyttää. Tässä esimerkissä ensimmäinen vaihtoehto tuntuu useimpien mielestä paremmalta."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Karkausvuosi","tmcname":"osa02-12_karkausvuosi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Kuitenkin jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin, kun se on jaollinen myös 400:lla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä vuosiluvun, ja tarkistaa, onko vuosi karkausvuosi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2011"}]},{"type":"text","value":"\nVuosi ei ole karkausvuosi."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":"\nVuosi on karkausvuosi."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1800"}]},{"type":"text","value":"\nVuosi ei ole karkausvuosi."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Aakkosjärjestyksessä keskimmäinen","tmcname":"osa02-13_aakkosjarjestyksessa_keskimmainen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kolme kirjainta. Ohjelma tulostaa kirjaimista aakkosjärjestyksessä keskimmäisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että kirjaimet ovat joko kaikki isoja tai kaikki pieniä kirjaimia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. kirjain: x\nAnna 2. kirjain: c\nAnna 3. kirjain: p\nKeskimmäinen kirjain on p"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna 1. kirjain: C\nAnna 2. kirjain: B\nAnna 3. kirjain: A\nKeskimmäinen kirjain on B"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lahjaverolaskuri","tmcname":"osa02-14_lahjaverolaskuri","height":"500px"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://www.vero.fi/henkiloasiakkaat/omaisuus/lahja/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Verottajan mukaan"}]},{"type":"text","value":" lahja tarkoittaa sitä, että omaisuus siirtyy toiselle henkilölle ilman korvausta. Lahjasta pitää maksaa lahjaveroa, jos samalta lahjanantajalta saatujen lahjojen arvo on kolmen vuoden aikana 5 000 euroa tai enemmän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun lahja tulee lähimmiltä sukulaisilta, lahjaveron määrä määräytyy seuraavan taulukon "},{"type":"element","tagName":"a","properties":{"href":"https://www.vero.fi/henkiloasiakkaat/omaisuus/lahja/lahjaverolaskuri/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"mukaan"}]},{"type":"text","value":":"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Lahja"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Vero alarajalla"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Veroprosentti ylimenevästä"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5 000 — 25 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"8"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"25 000 — 55 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1 700"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"10"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"55 000 — 200 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4 700"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"12"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"200 000 — 1 000 000"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"22 100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"15"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1 000 000 —"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"142 100"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"17"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi 6000 euron lahjasta tulee maksaa veroa 180 euroa (100 + (6000-5000) * 0.08) ja 75000 euron lahjasta tulee maksaa veroa 7100 euroa (4700 + (75000-55000) * 0.12)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka laskee lahjaveron lähimpien sukulaisten antamalle lahjalle. Alla on muutama esimerkki ohjelman toiminnasta."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan suuruus? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3500"}]},{"type":"text","value":"\nEi veroa!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan suuruus? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5000"}]},{"type":"text","value":"\nVero: 100.0 euroa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan suuruus? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"27500"}]},{"type":"text","value":"\nVero: 1950.0 euroa"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää and-, or- ja not-operaattoreita ehdoissa
    • \n
    • Osaat kirjoittaa sisäkkäisiä ehtolauseita
    • \n

    Loogiset operaattorit

    Ehtojen yhdistämisessä voidaan käyttää loogisia operaattoreita and ja or.\nOperaattori and vaatii, että useampi ehto pätee samaan aikaan,\nja operaattori or vaatii, että yksi tai useampi ehdoista pätee.

    Esimerkiksi ehto luku >= 5 and luku <= 8 vaatii,\nettä luku on samaan aikaan ainakin 5 ja enintään 8.\nToisin sanoen luvun tulee olla välillä 5..8.

    luku = int(input(\"Anna luku: \"))\nif luku >= 5 and luku <= 8:\n    print(\"Luku on välillä 5..8\")

    Ehto luku < 5 or luku > 8 puolestaan vaatii,\nettä luku on alle 5 tai yli 8.\nToisin sanoen luku ei saa olla välillä 5..8.

    luku = int(input(\"Anna luku: \"))\nif luku < 5 or luku > 8:\n    print(\"Luku ei ole välillä 5..8\")

    Seuraava taulukko näyttää operaattoreiden toiminnan eri tilanteissa:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    aba and ba or b
    FalseFalseFalseFalse
    TrueFalseFalseTrue
    FalseTrueFalseTrue
    TrueTrueTrueTrue

    Voimme käyttää ehdoissa myös operaattoria not, joka muuttaa totuusarvon\nkäänteiseksi:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    anot a
    TrueFalse
    FalseTrue

    Esimerkiksi voisimme toteuttaa äskeisen koodin myös näin:

    luku = int(input(\"Anna luku: \"))\nif not (luku >= 5 and luku <= 8):\n    print(\"Luku ei ole välillä 5..8\")

    Ehto x >= a and x <= b on tavallinen tapa testata,\nonko luku x välillä a..b.\nTällainen ehto toimii samalla tavalla eri ohjelmointikielissä.

    Python-kielen erikoisuutena on, että myös lyhyempi ehto\na <= x <= b toimii, eli ehtoja on mahdollista ketjuttaa.\nTällaisia ehtoja käytetään kuitenkin melko harvoin,\nehkä tottumuksesta muihin ohjelmointikieliin.

    Lisää ehtoja

    Seuraava ohjelma kysyy käyttäjältä neljä lukua ja selvittää sitten\nluvuista suurimman ehtojen avulla:

    n1 = int(input(\"Anna luku 1: \"))\nn2 = int(input(\"Anna luku 2: \"))\nn3 = int(input(\"Anna luku 3: \"))\nn4 = int(input(\"Anna luku 4: \"))\n\nif n1 > n2 and n1 > n3 and n1 > n4:\n    suurin = n1\nelif n2 > n3 and n2 > n4:\n    suurin = n2\nelif n3 > n4:\n    suurin = n3\nelse:\n    suurin = n4\n\nprint(f\" {suurin} on suurin luku.\")

    Anna luku 1: 2\nAnna luku 2: 4\nAnna luku 3: 1\nAnna luku 4: 1\n4 on suurin luku.

    Esimerkissä ensimmäinen ehto n1 > n2 and n1 > n3 and n1 > n4 on tosi vain, mikäli kaikki kolme ehtoa ovat tosia.

    Tee ohjelma, joka kysyy käyttäjän ikää. Jos ikä ei ole uskottava (se on alle 5 tai mahdoton luku iälle), antaa ohjelma siihen liittyvän kommentin.

    Vinkki: tarkastele esimerkkisuorituksia löytääksesi oikean vastineen eri vaihtoehdoille.

    Esimerkkitulostuksia:

    Kerro ikäsi? 13\nOk, olet siis 13-vuotias

    Kerro ikäsi? 2\nEn usko, että osaat kirjoittaa...

    Kerro ikäsi? -4\nTaitaa olla virhe

    Tee ohjelma, joka kysyy käyttäjän nimeä. Jos nimeksi syötetään Tupu, Hupu tai Lupu, ohjelma tunnistaa käyttäjän Aku Ankan veljenpojaksi.

    Jos nimeksi annetaan Mortti tai Vertti, ohjelma vastaavasti tunnistaa käyttäjän Mikki Hiiren veljenpojaksi.

    Esimerkkitulostuksia:

    Anna nimesi: Mortti\nOlet luultavasti Mikki Hiiren veljenpoika.

    Anna nimesi: Hupu\nOlet luultavasti Aku Ankan veljenpoika.

    Anna nimesi: Keijo\nEt ole kenenkään tuntemani hahmon veljenpoika.

    Alla oleva taulukko kuvaa erään kurssin arvosanan muodostumista. Tee ohjelma, joka ilmoittaa kurssiarvosanan annetun taulukon mukaisesti.

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    pistemääräarvosana
    < 0mahdotonta!
    0-49hylätty
    50-591
    60-692
    70-793
    80-894
    90-1005
    > 100mahdotonta!

    Esimerkkitulostuksia:

    Anna pisteet [0-100]: 37\nArvosana: hylätty

    Anna pisteet [0-100]: 76\nArvosana: 3

    Anna pisteet [0-100]: -3\nArvosana: mahdotonta!

    Ohjelma kysyy käyttäjältä lukua. Jos luku on jaollinen kolmella, tulostetaan Fizz. Jos luku on jaollinen viidellä, tulostetaan Buzz. Jos luku on jaollinen sekä kolmella, että viidellä, tulostetaan FizzBuzz

    Esimerkkitulostuksia:

    Luku: 9\nFizz

    Luku: 7

    Luku: 20\nBuzz

    Luku: 45\nFizzBuzz

    Sisäkkäiset ehtolauseet

    Ehtolauseita voidaan kirjoittaa toistensa sisään. Esimerkiksi seuraava ohjelma tunnistaa positiivisista luvuista parittomat ja parilliset:

    luku = int(input(\"Anna luku: \"))\n\nif luku > 0:\n    if luku % 2 == 0:\n        print(\"Luku on parillinen\")\n    else:\n        print(\"Luku on pariton\")\nelse:\n    print(\"Luku on negatiivinen\")

    Esimerkkitulostus kolmella eri syötteellä:

    Anna luku: 3\nLuku on pariton

    Anna luku: 18\nLuku on parillinen

    Anna luku: -4\nLuku on negatiivinen

    Sisäkkäisiä ehtolauseita käytettäessä on tärkeä muistaa oikeat sisennykset. Esimerkiksi else-haara yhdistetään oikeaan if-lauseeseen juuri saman sisennyksen perusteella.

    Huomaa, että monissa tapauksissa voidaan käyttää joko sisäkkäisiä ehtolauseita tai loogisia operaattoreita. Seuraava esimerkki on toiminnallisesti sama kuin edellinen esimerkki, eli se tulostaa tiedon siitä, onko positiivinen kokonaisluku parillinen vai pariton.

    luku = int(input(\"Anna luku: \"))\n\nif luku > 0 and luku % 2 == 0:\n    print(\"Luku on parillinen\")\nelif luku > 0 and luku % 2 != 0:\n    print(\"Luku on pariton\")\nelse:\n    print(\"Luku on negatiivinen.\")

    Tilanteesta riippuu, kumpaa tapaa kannattaa käyttää. Tässä esimerkissä ensimmäinen vaihtoehto tuntuu useimpien mielestä paremmalta.

    Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Kuitenkin jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin, kun se on jaollinen myös 400:lla.

    Tee ohjelma, joka lukee käyttäjältä vuosiluvun, ja tarkistaa, onko vuosi karkausvuosi.

    Anna vuosi: 2011\nVuosi ei ole karkausvuosi.

    Anna vuosi: 2020\nVuosi on karkausvuosi.

    Anna vuosi: 1800\nVuosi ei ole karkausvuosi.

    Tee ohjelma, joka kysyy käyttäjältä kolme kirjainta. Ohjelma tulostaa kirjaimista aakkosjärjestyksessä keskimmäisen.

    Voit olettaa, että kirjaimet ovat joko kaikki isoja tai kaikki pieniä kirjaimia.

    Esimerkkisuorituksia:

    Anna 1. kirjain: x\nAnna 2. kirjain: c\nAnna 3. kirjain: p\nKeskimmäinen kirjain on p

    Anna 1. kirjain: C\nAnna 2. kirjain: B\nAnna 3. kirjain: A\nKeskimmäinen kirjain on B

    Verottajan mukaan lahja tarkoittaa sitä, että omaisuus siirtyy toiselle henkilölle ilman korvausta. Lahjasta pitää maksaa lahjaveroa, jos samalta lahjanantajalta saatujen lahjojen arvo on kolmen vuoden aikana 5 000 euroa tai enemmän.

    Kun lahja tulee lähimmiltä sukulaisilta, lahjaveron määrä määräytyy seuraavan taulukon mukaan:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    LahjaVero alarajallaVeroprosentti ylimenevästä
    5 000 — 25 0001008
    25 000 — 55 0001 70010
    55 000 — 200 0004 70012
    200 000 — 1 000 00022 10015
    1 000 000 —142 10017

    Esimerkiksi 6000 euron lahjasta tulee maksaa veroa 180 euroa (100 + (6000-5000) * 0.08) ja 75000 euron lahjasta tulee maksaa veroa 7100 euroa (4700 + (75000-55000) * 0.12).

    Tee ohjelma, joka laskee lahjaveron lähimpien sukulaisten antamalle lahjalle. Alla on muutama esimerkki ohjelman toiminnasta.

    Lahjan suuruus? 3500\nEi veroa!

    Lahjan suuruus? 5000\nVero: 100.0 euroa

    Lahjan suuruus? 27500\nVero: 1950.0 euroa

    ","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/3-ehtojen-yhdistaminen.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-2/4-yksinkertainen-silmukka/page-data.json b/page-data/osa-2/4-yksinkertainen-silmukka/page-data.json index 76ee49c58..d59a9c8ff 100644 --- a/page-data/osa-2/4-yksinkertainen-silmukka/page-data.json +++ b/page-data/osa-2/4-yksinkertainen-silmukka/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-2/4-yksinkertainen-silmukka", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä silmukka tarkoittaa ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while True"}]},{"type":"text","value":" -silmukkaa osana ohjelmaasi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten toisto voidaan katkaista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komennolla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukka eli toistolause on ehtolauseen lisäksi keskeinen ohjausrakenne ohjelmoinnissa. Aloitetaan toistamiseen tutustuminen tarkastelemalla Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukkaa yksinkertaisten esimerkkien kautta. Ensi viikolla tutustutaan sitten monipuolisemmin sen mahdollisuuksiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Periaatteessa silmukka muistuttaa ehtolausetta. Ideana kuitenkin on, että sen avulla voidaan toistaa samaa koodia useamman kerran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä, jossa ohjelma laskee käyttäjän syöttämien lukujen neliöitä, kunnes käyttäjä syöttää luvun -1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos ja moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n4\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n16\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n100\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nKiitos ja moi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten esimerkistä huomataan, ohjelman kysyy "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-lauseen ansiosta käyttäjältä useita lukuja. Sitten kun käyttäjän syöte on -1, suoritetaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komento, jolloin suoritus hyppää ensimmäiselle lohkon jälkeiselle riville."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukoita käytettäessä on oltava tarkkana, että ei jouduta tilanteeseen, missä silmukan suoritus ei koskaan lopu. Muutetaan edellistä esimerkkiä seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos ja moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis lukua kysytään "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"silmukan ulkopuolella"}]},{"type":"text","value":". Jos käyttäjä antaa minkä tahansa muun luvun kuin -1:n, ei silmukasta tulla koskaan pois, eli syntyy "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ikuinen silmukka"}]},{"type":"text","value":". Tällöin silmukassa olevaa lohkoa suoritetaan ikuisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n4\n4\n4\n4\n4\n4\n4\n4\n(jatkuu ikuisesti...)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkkinä ohjelma, joka antaa käyttäjän jatkaa eteenpäin vasta sen jälkeen, kun käyttäjä on syöttänyt oikean PIN-koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n koodi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" koodi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PIN-koodi oikein!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9999"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nPIN-koodi oikein!"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Jatketaanko","tmcname":"osa02-15_jatketaanko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita edellä olevaa toistolause-esimerkkiä mukaillen ohjelma, joka tulostaa viestin \"moi\" ja kysyy käyttäjältä \"Jatketaanko?\" kunnes käyttäjä syöttää merkkijonon \"ei\". Tämän jälkeen tulostetaan merkkijono \"ei sitten\" ja suoritus päättyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"moi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kyllä"}]},{"type":"text","value":"\nmoi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"yes"}]},{"type":"text","value":"\nmoi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jawohl"}]},{"type":"text","value":"\nmoi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nei sitten"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Syötteen rajaus","tmcname":"osa02-16_syotteen_rajaus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjältä lukuja. Mikäli luku on negatiivinen (eli pienempi kuin nolla), käyttäjälle tulostetaan viesti \"Epäkelpo luku\" ja käyttäjältä kysytään uutta lukua. Jos taas luku on nolla, lukujen lukeminen lopetetaan ja ohjelma poistuu toistolauseesta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli luku on positiivinen, ohjelma tulostaa luvun neliöjuuren käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":"-funktiota, joka on tuotu ohjelmaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella. Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä pitää olla ohjelman alussa, jotta sqrt toimii"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki ohjelman suorituksesta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"16"}]},{"type":"text","value":"\n4.0\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n2.0\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nEpäkelpo luku\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n1.0\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nLopetetaan..."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lähtölaskenta","tmcname":"osa02-17_lahtolaskenta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa olevan ohjelman"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lähtölaskenta!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"olisi tarkoitus toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lähtölaskenta!\n5\n4\n3\n2\n1\nNyt!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa ohjelmassa oleva ongelma."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Salasana uudelleen","tmcname":"osa02-18_salasana_uudelleen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä salasanaa ja tämän jälkeen pyytää toistamaan salasanan niin kauan, kunnes käyttäjä syöttää ensimmäisenä annetun salasanan uudelleen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sekred"}]},{"type":"text","value":"\nToista salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"salainen"}]},{"type":"text","value":"\nEi ollut sama!\nToista salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"enmuistaenää123"}]},{"type":"text","value":"\nEi ollut sama!\nToista salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sekred"}]},{"type":"text","value":"\nKäyttäjätunnus luotu!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"silmukka-ja-apumuuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Silmukka ja apumuuttujat"},{"type":"element","tagName":"a","properties":{"href":"#silmukka-ja-apumuuttujat","ariaLabel":"silmukka ja apumuuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä PIN-koodin tarkastavasta ohjelmasta monimutkaisempi versio, joka antaa käyttäjälle vain kolme mahdollisuutta yrittää PIN-koodin syöttämistä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käyttää nyt kahta apumuuttujaa. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yritykset"}]},{"type":"text","value":" pitää kirjaa siitä, montako kertaa käyttäjä on syöttänyt koodin. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"onnistui"}]},{"type":"text","value":" saa arvokseen joko "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" riippuen siitä, onnistuuko kirjautuminen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne tullaan jos väärin JA ei ole jo kolmea yritystä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" onnistui"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PIN-koodi oikein!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liian monta yritystä...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nPIN-koodi oikein!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9999"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":"\nLiian monta yritystä..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukasta tullaan siis ulos, jos käyttäjä syöttää oikean PIN-koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tai"}]},{"type":"text","value":" jos yrityksiä tehdään liian monta. Silmukan jälkeinen if-lause tarkastaa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"onnistui"}]},{"type":"text","value":" arvon perusteella, onko kirjautuminen onnistunut vai ei."}]},{"type":"element","tagName":"h2","properties":{"id":"debug-tulostus-silmukassa","style":"position:relative;"},"children":[{"type":"text","value":"Debug-tulostus silmukassa"},{"type":"element","tagName":"a","properties":{"href":"#debug-tulostus-silmukassa","ariaLabel":"debug tulostus silmukassa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma sisältää silmukoita, kasvavat mahdolliset bugienkin lähteet uudelle tasolle, ja tämän osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/1-ohjelmoinnin-termeja"},"children":[{"type":"text","value":"ensimmäisessä luvussa"}]},{"type":"text","value":" mainittujen debug-tulostusten tekeminen muuttuu entistäkin tärkeämmäksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä, jossa edellinen ohjelma on koodattu hieman väärin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" onnistui"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PIN-koodi oikein!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liian monta yritystä...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii kummallisesti: se antaa yrittää PIN-koodia kolmesti mutta valittaa, että yrityksiä on liian monta, vaikka lopussa syötettiin oikea koodi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9999"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nLiian monta yritystä..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bugin syy selviää lisäämällä sopivia debug-tulostuksia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"whilen lohko alkaa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"yritykset:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yritykset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto1:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tunnus:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto2:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"whilen lohko alkaa:\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2233"}]},{"type":"text","value":"\nyritykset: 1\nehto1: False\ntunnus: 2233\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4545"}]},{"type":"text","value":"\nyritykset: 2\nehto1: False\ntunnus: 4545\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nyritykset: 3\nehto1: True\nLiian monta yritystä..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksista huomataan, että kolmannella silmukan kierroksella ensimmäisen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-komennon ehto on tosi ja silmukasta poistutaan, ennen kuin ehditään tarkastaa, oliko juuri syötetty salasana oikein:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä lohko on liian aikaisin"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne ei päästä enää kolmannella yrityksellä..."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"PIN ja yritysten määrä","tmcname":"osa02-19_pin_ja_yritysten_maara"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee sovellus, joka kysyy käyttäjältä PIN-koodia niin kauan, kunnes käyttäjä antaa oikean PIN-koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":". Ohjelma kertoo yritysten lukumäärän:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3245"}]},{"type":"text","value":"\nVäärin\nPIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nVäärin\nPIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin\nPIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":"\nOikein, tarvitsit 4 yritystä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on hieman erilainen jos PIN-koodi on oikea heti ensimmäisellä yrityksellä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":"\nOikein, tarvitsit vain yhden yrityksen!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Seuraava karkausvuosi","tmcname":"osa02-20_seuraava_karkausvuosi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kyselee käyttäjältä vuosilukua ja kertoo, milloin on seuraava karkausvuosi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2019"}]},{"type":"text","value":"\nVuotta 2019 seuraava karkausvuosi on 2020"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos käyttäjän syöttämä vuosi on karkausvuosi (kuten 2020), ohjelma ei kerro tätä vuotta vaan sitä seuraavan karkausvuoden:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":"\nVuotta 2020 seuraava karkausvuosi on 2024"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijonon-kokoaminen-plus-operaattorilla","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijonon kokoaminen plus-operaattorilla"},{"type":"element","tagName":"a","properties":{"href":"#merkkijonon-kokoaminen-plus-operaattorilla","ariaLabel":"merkkijonon kokoaminen plus operaattorilla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PIN-koodin tarkastavassa esimerkissä käytimme apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yritykset"}]},{"type":"text","value":" pitämään kirjaa siitä, montako kertaa PIN-koodi on syötetty:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja saa arvon nolla silmukan ulkopuolella, ja jokainen silmukan suoritus kasvattaa sen arvoa yhdellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaava idea toimii myös merkkijonoille. Voisimme laajentaa ohjelmaa siten, että se kokoaa yhteen merkkijonoon kaikki käyttäjän syöttämät PIN-koodit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\nyritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", \""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Apumuuttuja saa aluksi arvokseen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tyhjän merkkijonon"}]},{"type":"text","value":" eli merkkijonon, jossa ei ole yhtään merkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan sisällä merkkijonoa kasvatetaan lisäämällä siihen aina silmukassa syötetty tunnus ja pilkku:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", \""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos käyttäjä syöttäisi tunnukset "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"1111 2222 1234"}]},{"type":"text","value":" olisi muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnukset"}]},{"type":"text","value":" arvo lopulta"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1111, 2222, 1234,"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tarina","tmcname":"osa02-21_tarina"},"children":[{"type":"element","tagName":"h3","properties":{"id":"osa-1","style":"position:relative;"},"children":[{"type":"text","value":"Osa 1"},{"type":"element","tagName":"a","properties":{"href":"#osa-1","ariaLabel":"osa 1 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää syöttämään sanoja. Kun käyttäjä syöttää sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":", ohjelma tulostaa sanoista muodostuneen tarinan ja suoritus päättyy."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Olipa"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kerran"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pieni"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"talo"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"preerialla"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":"\nOlipa kerran pieni talo preerialla"}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-2","style":"position:relative;"},"children":[{"type":"text","value":"Osa 2"},{"type":"element","tagName":"a","properties":{"href":"#osa-2","ariaLabel":"osa 2 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muokkaa edellisen tehtävän ohjelmaa niin, että sanojen syöttäminen päättyy, jos käyttäjä syöttää sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":" tai käyttäjä syöttää saman sanan kaksi kertaa peräkkäin."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Alussa"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"oli"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"suo"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kuokka"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ja"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jussi"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jussi"}]},{"type":"text","value":"\nAlussa oli suo kuokka ja Jussi"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lukujen käsittelyä","tmcname":"osa02-22_lukujen_kasittelya"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää syöttämään kokonaislukuja. Ohjelma pyytää lukuja niin kauan kunnes käyttäjä syöttää nollan."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä kokonaislukuja, 0 lopettaa:\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"22"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-2"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-1-lukumaara","style":"position:relative;"},"children":[{"type":"text","value":"Osa 1: lukumäärä"},{"type":"element","tagName":"a","properties":{"href":"#osa-1-lukumaara","ariaLabel":"osa 1 lukumaara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötteiden lukemisen jälkeen ohjelman tulee tulostaa syötettyjen lukujen lukumäärä. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon lukumäärässä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarvitset tässä uuden muuttujan, jonka avulla pidät kirjaa luettujen lukujen määrästä."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4"}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-2-summa","style":"position:relative;"},"children":[{"type":"text","value":"Osa 2: summa"},{"type":"element","tagName":"a","properties":{"href":"#osa-2-summa","ariaLabel":"osa 2 summa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen summa. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon summan laskemisessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus laajenee seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34"}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-3-keskiarvo","style":"position:relative;"},"children":[{"type":"text","value":"Osa 3: keskiarvo"},{"type":"element","tagName":"a","properties":{"href":"#osa-3-keskiarvo","ariaLabel":"osa 3 keskiarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen keskiarvon. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon keskiarvon laskemisessa. Voit olettaa, että käyttäjä syöttää aina vähintään yhden luvun."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5"}]}]},{"type":"element","tagName":"h4","properties":{"id":"osa-4-positiiviset-ja-negatiiviset","style":"position:relative;"},"children":[{"type":"text","value":"Osa 4: positiiviset ja negatiiviset"},{"type":"element","tagName":"a","properties":{"href":"#osa-4-positiiviset-ja-negatiiviset","ariaLabel":"osa 4 positiiviset ja negatiiviset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna ohjelmaa siten, että se tulostaa positiivisten ja negatiivisten lukujen lukumäärät"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5\nPositiivisia 3\nNegatiivisia 1"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi koko toista osaa koskevaan loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä silmukka tarkoittaa ohjelmoinnissa
    • \n
    • Osaat käyttää while True -silmukkaa osana ohjelmaasi
    • \n
    • Tiedät, miten toisto voidaan katkaista break-komennolla
    • \n

    Silmukka eli toistolause on ehtolauseen lisäksi keskeinen ohjausrakenne ohjelmoinnissa. Aloitetaan toistamiseen tutustuminen tarkastelemalla Pythonin while-silmukkaa yksinkertaisten esimerkkien kautta. Ensi viikolla tutustutaan sitten monipuolisemmin sen mahdollisuuksiin.

    Periaatteessa silmukka muistuttaa ehtolausetta. Ideana kuitenkin on, että sen avulla voidaan toistaa samaa koodia useamman kerran.

    Tarkastellaan esimerkkiä, jossa ohjelma laskee käyttäjän syöttämien lukujen neliöitä, kunnes käyttäjä syöttää luvun -1:

    while True:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n\n    if luku == -1:\n        break\n\n    print(luku ** 2)\n\nprint(\"Kiitos ja moi!\")

    Ohjelman esimerkkisuoritus:

    Anna luku, -1 lopettaa: 2\n4\nAnna luku, -1 lopettaa: 4\n16\nAnna luku, -1 lopettaa: 10\n100\nAnna luku, -1 lopettaa: -1\nKiitos ja moi!

    Kuten esimerkistä huomataan, ohjelman kysyy while-lauseen ansiosta käyttäjältä useita lukuja. Sitten kun käyttäjän syöte on -1, suoritetaan break-komento, jolloin suoritus hyppää ensimmäiselle lohkon jälkeiselle riville.

    Silmukoita käytettäessä on oltava tarkkana, että ei jouduta tilanteeseen, missä silmukan suoritus ei koskaan lopu. Muutetaan edellistä esimerkkiä seuraavasti

    luku = int(input(\"Anna luku, -1 lopettaa: \"))\nwhile True:\n    if luku == -1:\n        break\n\n    print(luku ** 2)\n\nprint(\"Kiitos ja moi!\")

    Nyt siis lukua kysytään silmukan ulkopuolella. Jos käyttäjä antaa minkä tahansa muun luvun kuin -1:n, ei silmukasta tulla koskaan pois, eli syntyy ikuinen silmukka. Tällöin silmukassa olevaa lohkoa suoritetaan ikuisesti:

    Anna luku, -1 lopettaa: 2\n4\n4\n4\n4\n4\n4\n4\n4\n(jatkuu ikuisesti...)

    Seuraavassa esimerkkinä ohjelma, joka antaa käyttäjän jatkaa eteenpäin vasta sen jälkeen, kun käyttäjä on syöttänyt oikean PIN-koodin 1234:

    while True:\n    koodi = input(\"Anna PIN-koodi: \")\n    if koodi == \"1234\":\n        break\n    print(\"Väärin... yritä uudelleen\")\n\nprint(\"PIN-koodi oikein!\")

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 9999\nVäärin... yritä uudelleen\nAnna PIN-koodi: 1234\nPIN-koodi oikein!

    Kirjoita edellä olevaa toistolause-esimerkkiä mukaillen ohjelma, joka tulostaa viestin \"moi\" ja kysyy käyttäjältä \"Jatketaanko?\" kunnes käyttäjä syöttää merkkijonon \"ei\". Tämän jälkeen tulostetaan merkkijono \"ei sitten\" ja suoritus päättyy.

    Esimerkkitulostus

    moi\nJatketaanko? kyllä\nmoi\nJatketaanko? yes\nmoi\nJatketaanko? jawohl\nmoi\nJatketaanko? ei\nei sitten

    Kirjoita ohjelma, joka kysyy käyttäjältä lukuja. Mikäli luku on negatiivinen (eli pienempi kuin nolla), käyttäjälle tulostetaan viesti \"Epäkelpo luku\" ja käyttäjältä kysytään uutta lukua. Jos taas luku on nolla, lukujen lukeminen lopetetaan ja ohjelma poistuu toistolauseesta.

    Mikäli luku on positiivinen, ohjelma tulostaa luvun neliöjuuren käyttäen sqrt-funktiota, joka on tuotu ohjelmaan import-lauseella. Esimerkki funktion käytöstä:

    # Tämä pitää olla ohjelman alussa, jotta sqrt toimii\nfrom math import sqrt\n\nprint(sqrt(9))

    3.0

    Esimerkki ohjelman suorituksesta:

    Syötä luku: 16\n4.0\nSyötä luku: 4\n2.0\nSyötä luku: -3\nEpäkelpo luku\nSyötä luku: 1\n1.0\nSyötä luku: 0\nLopetetaan...

    Tehtäväpohjassa olevan ohjelman

    luku = 5\nprint(\"Lähtölaskenta!\")\nwhile True:\n  print(luku)\n  luku = luku - 1\n  if luku > 0:\n    break\n\nprint(\"Nyt!\")

    olisi tarkoitus toimia seuraavasti:

    Lähtölaskenta!\n5\n4\n3\n2\n1\nNyt!

    Korjaa ohjelmassa oleva ongelma.

    Tee ohjelma, joka kysyy käyttäjältä salasanaa ja tämän jälkeen pyytää toistamaan salasanan niin kauan, kunnes käyttäjä syöttää ensimmäisenä annetun salasanan uudelleen.

    Salasana: sekred\nToista salasana: salainen\nEi ollut sama!\nToista salasana: enmuistaenää123\nEi ollut sama!\nToista salasana: sekred\nKäyttäjätunnus luotu!

    Silmukka ja apumuuttujat

    Tehdään vielä PIN-koodin tarkastavasta ohjelmasta monimutkaisempi versio, joka antaa käyttäjälle vain kolme mahdollisuutta yrittää PIN-koodin syöttämistä.

    Ohjelma käyttää nyt kahta apumuuttujaa. Muuttuja yritykset pitää kirjaa siitä, montako kertaa käyttäjä on syöttänyt koodin. Muuttuja onnistui saa arvokseen joko True tai False riippuen siitä, onnistuuko kirjautuminen.

    yritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n\n    if tunnus == \"1234\":\n        onnistui = True\n        break\n\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    # tänne tullaan jos väärin JA ei ole jo kolmea yritystä\n    print(\"Väärin... yritä uudelleen\")\n\nif onnistui:\n    print(\"PIN-koodi oikein!\")\nelse:\n    print(\"Liian monta yritystä...\")

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 1234\nPIN-koodi oikein!

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 9999\nVäärin... yritä uudelleen\nAnna PIN-koodi: 4321\nLiian monta yritystä...

    Silmukasta tullaan siis ulos, jos käyttäjä syöttää oikean PIN-koodin tai jos yrityksiä tehdään liian monta. Silmukan jälkeinen if-lause tarkastaa muuttujan onnistui arvon perusteella, onko kirjautuminen onnistunut vai ei.

    Debug-tulostus silmukassa

    Kun ohjelma sisältää silmukoita, kasvavat mahdolliset bugienkin lähteet uudelle tasolle, ja tämän osan ensimmäisessä luvussa mainittujen debug-tulostusten tekeminen muuttuu entistäkin tärkeämmäksi.

    Tarkastellaan esimerkkiä, jossa edellinen ohjelma on koodattu hieman väärin:

    yritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    if tunnus == \"1234\":\n        onnistui = True\n        break\n\n    print(\"Väärin... yritä uudelleen\")\n\nif onnistui:\n    print(\"PIN-koodi oikein!\")\nelse:\n    print(\"Liian monta yritystä...\")

    Ohjelma toimii kummallisesti: se antaa yrittää PIN-koodia kolmesti mutta valittaa, että yrityksiä on liian monta, vaikka lopussa syötettiin oikea koodi:

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 9999\nVäärin... yritä uudelleen\nAnna PIN-koodi: 1234\nLiian monta yritystä...

    Bugin syy selviää lisäämällä sopivia debug-tulostuksia:

    while True:\n    print(\"whilen lohko alkaa:\")\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n\n    print(\"yritykset:\", yritykset)\n    print(\"ehto1:\", yritykset == 3)\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    print(\"tunnus:\", tunnus)\n    print(\"ehto2:\", tunnus == \"1234\")\n    if tunnus == \"1234\":\n        onnistui = True\n        break\n\n    print(\"Väärin... yritä uudelleen\")

    whilen lohko alkaa:\nAnna PIN-koodi: 2233\nyritykset: 1\nehto1: False\ntunnus: 2233\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: 4545\nyritykset: 2\nehto1: False\ntunnus: 4545\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: 1234\nyritykset: 3\nehto1: True\nLiian monta yritystä...

    Tulostuksista huomataan, että kolmannella silmukan kierroksella ensimmäisen if-komennon ehto on tosi ja silmukasta poistutaan, ennen kuin ehditään tarkastaa, oliko juuri syötetty salasana oikein:

      while True:\n    # ....\n\n    # tämä lohko on liian aikaisin\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    # tänne ei päästä enää kolmannella yrityksellä...\n    if tunnus == \"1234\":\n        onnistui = True\n        break

    Tee sovellus, joka kysyy käyttäjältä PIN-koodia niin kauan, kunnes käyttäjä antaa oikean PIN-koodin 4321. Ohjelma kertoo yritysten lukumäärän:

    PIN-koodi: 3245\nVäärin\nPIN-koodi: 1234\nVäärin\nPIN-koodi: 0000\nVäärin\nPIN-koodi: 4321\nOikein, tarvitsit 4 yritystä

    Tulostus on hieman erilainen jos PIN-koodi on oikea heti ensimmäisellä yrityksellä:

    PIN-koodi: 4321\nOikein, tarvitsit vain yhden yrityksen!

    Tee ohjelma, joka kyselee käyttäjältä vuosilukua ja kertoo, milloin on seuraava karkausvuosi.

    Vuosi: 2019\nVuotta 2019 seuraava karkausvuosi on 2020

    Jos käyttäjän syöttämä vuosi on karkausvuosi (kuten 2020), ohjelma ei kerro tätä vuotta vaan sitä seuraavan karkausvuoden:

    Vuosi: 2020\nVuotta 2020 seuraava karkausvuosi on 2024

    Merkkijonon kokoaminen plus-operaattorilla

    PIN-koodin tarkastavassa esimerkissä käytimme apumuuttujaa yritykset pitämään kirjaa siitä, montako kertaa PIN-koodi on syötetty:

    yritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n    # ...

    Muuttuja saa arvon nolla silmukan ulkopuolella, ja jokainen silmukan suoritus kasvattaa sen arvoa yhdellä.

    Vastaava idea toimii myös merkkijonoille. Voisimme laajentaa ohjelmaa siten, että se kokoaa yhteen merkkijonoon kaikki käyttäjän syöttämät PIN-koodit:

    tunnukset = \"\"\nyritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n    tunnukset += tunnus + \", \"\n    # ...

    Apumuuttuja saa aluksi arvokseen tyhjän merkkijonon eli merkkijonon, jossa ei ole yhtään merkkiä:

    tunnukset = \"\"

    Silmukan sisällä merkkijonoa kasvatetaan lisäämällä siihen aina silmukassa syötetty tunnus ja pilkku:

        tunnus = input(\"Anna PIN-koodi: \")\n    tunnukset += tunnus + \", \"

    Jos käyttäjä syöttäisi tunnukset 1111 2222 1234 olisi muuttujan tunnukset arvo lopulta

    1111, 2222, 1234,

    Osa 1

    Tee ohjelma, joka pyytää käyttäjää syöttämään sanoja. Kun käyttäjä syöttää sanan loppu, ohjelma tulostaa sanoista muodostuneen tarinan ja suoritus päättyy.

    Anna sana: Olipa\nAnna sana: kerran\nAnna sana: pieni\nAnna sana: talo\nAnna sana: preerialla\nAnna sana: loppu\nOlipa kerran pieni talo preerialla

    Osa 2

    Muokkaa edellisen tehtävän ohjelmaa niin, että sanojen syöttäminen päättyy, jos käyttäjä syöttää sanan loppu tai käyttäjä syöttää saman sanan kaksi kertaa peräkkäin.

    Anna sana: Alussa\nAnna sana: oli\nAnna sana: suo\nAnna sana: kuokka\nAnna sana: ja\nAnna sana: Jussi\nAnna sana: Jussi\nAlussa oli suo kuokka ja Jussi

    Tee ohjelma, joka pyytää käyttäjää syöttämään kokonaislukuja. Ohjelma pyytää lukuja niin kauan kunnes käyttäjä syöttää nollan.

    Syötä kokonaislukuja, 0 lopettaa:\nLuku: 5\nLuku: 22\nLuku: 9\nLuku: -2\nLuku: 0

    Osa 1: lukumäärä

    Syötteiden lukemisen jälkeen ohjelman tulee tulostaa syötettyjen lukujen lukumäärä. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon lukumäärässä.

    Tarvitset tässä uuden muuttujan, jonka avulla pidät kirjaa luettujen lukujen määrästä.

    ... lukujen kysely\nLukuja yhteensä 4

    Osa 2: summa

    Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen summa. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon summan laskemisessa.

    Ohjelman tulostus laajenee seuraavasti:

    ... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34

    Osa 3: keskiarvo

    Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen keskiarvon. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon keskiarvon laskemisessa. Voit olettaa, että käyttäjä syöttää aina vähintään yhden luvun.

    ... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5

    Osa 4: positiiviset ja negatiiviset

    Laajenna ohjelmaa siten, että se tulostaa positiivisten ja negatiivisten lukujen lukumäärät

    ... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5\nPositiivisia 3\nNegatiivisia 1

    Vastaa lopuksi koko toista osaa koskevaan loppukyselyyn:

    ","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/4-yksinkertainen-silmukka.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä silmukka tarkoittaa ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while True"}]},{"type":"text","value":" -silmukkaa osana ohjelmaasi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten toisto voidaan katkaista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komennolla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukka eli toistolause on ehtolauseen lisäksi keskeinen ohjausrakenne ohjelmoinnissa. Aloitetaan toistamiseen tutustuminen tarkastelemalla Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukkaa yksinkertaisten esimerkkien kautta. Ensi viikolla tutustutaan sitten monipuolisemmin sen mahdollisuuksiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Periaatteessa silmukka muistuttaa ehtolausetta. Ideana kuitenkin on, että sen avulla voidaan toistaa samaa koodia useamman kerran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä, jossa ohjelma laskee käyttäjän syöttämien lukujen neliöitä, kunnes käyttäjä syöttää luvun -1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos ja moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n4\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n16\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n100\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nKiitos ja moi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten esimerkistä huomataan, ohjelman kysyy "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-lauseen ansiosta käyttäjältä useita lukuja. Sitten kun käyttäjän syöte on -1, suoritetaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komento, jolloin suoritus hyppää ensimmäiselle lohkon jälkeiselle riville."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukoita käytettäessä on oltava tarkkana, että ei jouduta tilanteeseen, missä silmukan suoritus ei koskaan lopu. Muutetaan edellistä esimerkkiä seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos ja moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis lukua kysytään "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"silmukan ulkopuolella"}]},{"type":"text","value":". Jos käyttäjä antaa minkä tahansa muun luvun kuin -1:n, ei silmukasta tulla koskaan pois, eli syntyy "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ikuinen silmukka"}]},{"type":"text","value":". Tällöin silmukassa olevaa lohkoa suoritetaan ikuisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n4\n4\n4\n4\n4\n4\n4\n4\n(jatkuu ikuisesti...)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkkinä ohjelma, joka antaa käyttäjän jatkaa eteenpäin vasta sen jälkeen, kun käyttäjä on syöttänyt oikean PIN-koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n koodi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" koodi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PIN-koodi oikein!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9999"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nPIN-koodi oikein!"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Jatketaanko","tmcname":"osa02-15_jatketaanko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita edellä olevaa toistolause-esimerkkiä mukaillen ohjelma, joka tulostaa viestin \"moi\" ja kysyy käyttäjältä \"Jatketaanko?\" kunnes käyttäjä syöttää merkkijonon \"ei\". Tämän jälkeen tulostetaan merkkijono \"ei sitten\" ja suoritus päättyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"moi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kyllä"}]},{"type":"text","value":"\nmoi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"yes"}]},{"type":"text","value":"\nmoi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"jawohl"}]},{"type":"text","value":"\nmoi\nJatketaanko? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":"\nei sitten"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Syötteen rajaus","tmcname":"osa02-16_syotteen_rajaus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjältä lukuja. Mikäli luku on negatiivinen (eli pienempi kuin nolla), käyttäjälle tulostetaan viesti \"Epäkelpo luku\" ja käyttäjältä kysytään uutta lukua. Jos taas luku on nolla, lukujen lukeminen lopetetaan ja ohjelma poistuu toistolauseesta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli luku on positiivinen, ohjelma tulostaa luvun neliöjuuren käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":"-funktiota, joka on tuotu ohjelmaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella. Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä pitää olla ohjelman alussa, jotta sqrt toimii"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki ohjelman suorituksesta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"16"}]},{"type":"text","value":"\n4.0\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n2.0\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nEpäkelpo luku\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n1.0\nSyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nLopetetaan..."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lähtölaskenta","tmcname":"osa02-17_lahtolaskenta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa olevan ohjelman"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lähtölaskenta!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"olisi tarkoitus toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lähtölaskenta!\n5\n4\n3\n2\n1\nNyt!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa ohjelmassa oleva ongelma."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Salasana uudelleen","tmcname":"osa02-18_salasana_uudelleen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä salasanaa ja tämän jälkeen pyytää toistamaan salasanan niin kauan, kunnes käyttäjä syöttää ensimmäisenä annetun salasanan uudelleen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sekred"}]},{"type":"text","value":"\nToista salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"salainen"}]},{"type":"text","value":"\nEi ollut sama!\nToista salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"enmuistaenää123"}]},{"type":"text","value":"\nEi ollut sama!\nToista salasana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sekred"}]},{"type":"text","value":"\nKäyttäjätunnus luotu!"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"silmukka-ja-apumuuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Silmukka ja apumuuttujat"},{"type":"element","tagName":"a","properties":{"href":"#silmukka-ja-apumuuttujat","ariaLabel":"silmukka ja apumuuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä PIN-koodin tarkastavasta ohjelmasta monimutkaisempi versio, joka antaa käyttäjälle vain kolme mahdollisuutta yrittää PIN-koodin syöttämistä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käyttää nyt kahta apumuuttujaa. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yritykset"}]},{"type":"text","value":" pitää kirjaa siitä, montako kertaa käyttäjä on syöttänyt koodin. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"onnistui"}]},{"type":"text","value":" saa arvokseen joko "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" riippuen siitä, onnistuuko kirjautuminen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne tullaan jos väärin JA ei ole jo kolmea yritystä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" onnistui"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PIN-koodi oikein!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liian monta yritystä...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nPIN-koodi oikein!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9999"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":"\nLiian monta yritystä..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukasta tullaan siis ulos, jos käyttäjä syöttää oikean PIN-koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tai"}]},{"type":"text","value":" jos yrityksiä tehdään liian monta. Silmukan jälkeinen if-lause tarkastaa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"onnistui"}]},{"type":"text","value":" arvon perusteella, onko kirjautuminen onnistunut vai ei."}]},{"type":"element","tagName":"h2","properties":{"id":"debug-tulostus-silmukassa","style":"position:relative;"},"children":[{"type":"text","value":"Debug-tulostus silmukassa"},{"type":"element","tagName":"a","properties":{"href":"#debug-tulostus-silmukassa","ariaLabel":"debug tulostus silmukassa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma sisältää silmukoita, kasvavat mahdolliset bugienkin lähteet uudelle tasolle, ja tämän osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/1-ohjelmoinnin-termeja"},"children":[{"type":"text","value":"ensimmäisessä luvussa"}]},{"type":"text","value":" mainittujen debug-tulostusten tekeminen muuttuu entistäkin tärkeämmäksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkiä, jossa edellinen ohjelma on koodattu hieman väärin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" onnistui"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PIN-koodi oikein!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liian monta yritystä...\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii kummallisesti: se antaa yrittää PIN-koodia kolmesti mutta valittaa, että yrityksiä on liian monta, vaikka lopussa syötettiin oikea koodi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9999"}]},{"type":"text","value":"\nVäärin... yritä uudelleen\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nLiian monta yritystä..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Bugin syy selviää lisäämällä sopivia debug-tulostuksia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"whilen lohko alkaa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"yritykset:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yritykset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto1:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tunnus:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ehto2:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Väärin... yritä uudelleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"whilen lohko alkaa:\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2233"}]},{"type":"text","value":"\nyritykset: 1\nehto1: False\ntunnus: 2233\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4545"}]},{"type":"text","value":"\nyritykset: 2\nehto1: False\ntunnus: 4545\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nyritykset: 3\nehto1: True\nLiian monta yritystä..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksista huomataan, että kolmannella silmukan kierroksella ensimmäisen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-komennon ehto on tosi ja silmukasta poistutaan, ennen kuin ehditään tarkastaa, oliko juuri syötetty salasana oikein:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä lohko on liian aikaisin"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne ei päästä enää kolmannella yrityksellä..."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n onnistui "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"PIN ja yritysten määrä","tmcname":"osa02-19_pin_ja_yritysten_maara"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee sovellus, joka kysyy käyttäjältä PIN-koodia niin kauan, kunnes käyttäjä antaa oikean PIN-koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":". Ohjelma kertoo yritysten lukumäärän:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3245"}]},{"type":"text","value":"\nVäärin\nPIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234"}]},{"type":"text","value":"\nVäärin\nPIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0000"}]},{"type":"text","value":"\nVäärin\nPIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":"\nOikein, tarvitsit 4 yritystä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on hieman erilainen jos PIN-koodi on oikea heti ensimmäisellä yrityksellä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PIN-koodi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4321"}]},{"type":"text","value":"\nOikein, tarvitsit vain yhden yrityksen!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Seuraava karkausvuosi","tmcname":"osa02-20_seuraava_karkausvuosi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kyselee käyttäjältä vuosilukua ja kertoo, milloin on seuraava karkausvuosi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2019"}]},{"type":"text","value":"\nVuotta 2019 seuraava karkausvuosi on 2020"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos käyttäjän syöttämä vuosi on karkausvuosi (kuten 2020), ohjelma ei kerro tätä vuotta vaan sitä seuraavan karkausvuoden:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2020"}]},{"type":"text","value":"\nVuotta 2020 seuraava karkausvuosi on 2024"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijonon-kokoaminen-plus-operaattorilla","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijonon kokoaminen plus-operaattorilla"},{"type":"element","tagName":"a","properties":{"href":"#merkkijonon-kokoaminen-plus-operaattorilla","ariaLabel":"merkkijonon kokoaminen plus operaattorilla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"PIN-koodin tarkastavassa esimerkissä käytimme apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yritykset"}]},{"type":"text","value":" pitämään kirjaa siitä, montako kertaa PIN-koodi on syötetty:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja saa arvon nolla silmukan ulkopuolella, ja jokainen silmukan suoritus kasvattaa sen arvoa yhdellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaava idea toimii myös merkkijonoille. Voisimme laajentaa ohjelmaa siten, että se kokoaa yhteen merkkijonoon kaikki käyttäjän syöttämät PIN-koodit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\nyritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yritykset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", \""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Apumuuttuja saa aluksi arvokseen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tyhjän merkkijonon"}]},{"type":"text","value":" eli merkkijonon, jossa ei ole yhtään merkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan sisällä merkkijonoa kasvatetaan lisäämällä siihen aina silmukassa syötetty tunnus ja pilkku:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna PIN-koodi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" tunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", \""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos käyttäjä syöttäisi tunnukset "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"1111 2222 1234"}]},{"type":"text","value":" olisi muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnukset"}]},{"type":"text","value":" arvo lopulta"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1111, 2222, 1234,"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tarina","tmcname":"osa02-21_tarina"},"children":[{"type":"element","tagName":"h3","properties":{"id":"osa-1","style":"position:relative;"},"children":[{"type":"text","value":"Osa 1"},{"type":"element","tagName":"a","properties":{"href":"#osa-1","ariaLabel":"osa 1 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää syöttämään sanoja. Kun käyttäjä syöttää sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":", ohjelma tulostaa sanoista muodostuneen tarinan ja suoritus päättyy."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Olipa"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kerran"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pieni"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"talo"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"preerialla"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":"\nOlipa kerran pieni talo preerialla"}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-2","style":"position:relative;"},"children":[{"type":"text","value":"Osa 2"},{"type":"element","tagName":"a","properties":{"href":"#osa-2","ariaLabel":"osa 2 permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muokkaa edellisen tehtävän ohjelmaa niin, että sanojen syöttäminen päättyy, jos käyttäjä syöttää sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":" tai käyttäjä syöttää saman sanan kaksi kertaa peräkkäin."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Alussa"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"oli"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"suo"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kuokka"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ja"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jussi"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jussi"}]},{"type":"text","value":"\nAlussa oli suo kuokka ja Jussi"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lukujen käsittelyä","tmcname":"osa02-22_lukujen_kasittelya"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää syöttämään kokonaislukuja. Ohjelma pyytää lukuja niin kauan kunnes käyttäjä syöttää nollan."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä kokonaislukuja, 0 lopettaa:\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"22"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-2"}]},{"type":"text","value":"\nLuku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-1-lukumaara","style":"position:relative;"},"children":[{"type":"text","value":"Osa 1: lukumäärä"},{"type":"element","tagName":"a","properties":{"href":"#osa-1-lukumaara","ariaLabel":"osa 1 lukumaara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötteiden lukemisen jälkeen ohjelman tulee tulostaa syötettyjen lukujen lukumäärä. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon lukumäärässä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarvitset tässä uuden muuttujan, jonka avulla pidät kirjaa luettujen lukujen määrästä."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4"}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-2-summa","style":"position:relative;"},"children":[{"type":"text","value":"Osa 2: summa"},{"type":"element","tagName":"a","properties":{"href":"#osa-2-summa","ariaLabel":"osa 2 summa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen summa. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon summan laskemisessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus laajenee seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34"}]}]},{"type":"element","tagName":"h3","properties":{"id":"osa-3-keskiarvo","style":"position:relative;"},"children":[{"type":"text","value":"Osa 3: keskiarvo"},{"type":"element","tagName":"a","properties":{"href":"#osa-3-keskiarvo","ariaLabel":"osa 3 keskiarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen keskiarvon. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon keskiarvon laskemisessa. Voit olettaa, että käyttäjä syöttää aina vähintään yhden luvun."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5"}]}]},{"type":"element","tagName":"h4","properties":{"id":"osa-4-positiiviset-ja-negatiiviset","style":"position:relative;"},"children":[{"type":"text","value":"Osa 4: positiiviset ja negatiiviset"},{"type":"element","tagName":"a","properties":{"href":"#osa-4-positiiviset-ja-negatiiviset","ariaLabel":"osa 4 positiiviset ja negatiiviset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna ohjelmaa siten, että se tulostaa positiivisten ja negatiivisten lukujen lukumäärät"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5\nPositiivisia 3\nNegatiivisia 1"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi koko toista osaa koskevaan loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä silmukka tarkoittaa ohjelmoinnissa
    • \n
    • Osaat käyttää while True -silmukkaa osana ohjelmaasi
    • \n
    • Tiedät, miten toisto voidaan katkaista break-komennolla
    • \n

    Silmukka eli toistolause on ehtolauseen lisäksi keskeinen ohjausrakenne ohjelmoinnissa. Aloitetaan toistamiseen tutustuminen tarkastelemalla Pythonin while-silmukkaa yksinkertaisten esimerkkien kautta. Ensi viikolla tutustutaan sitten monipuolisemmin sen mahdollisuuksiin.

    Periaatteessa silmukka muistuttaa ehtolausetta. Ideana kuitenkin on, että sen avulla voidaan toistaa samaa koodia useamman kerran.

    Tarkastellaan esimerkkiä, jossa ohjelma laskee käyttäjän syöttämien lukujen neliöitä, kunnes käyttäjä syöttää luvun -1:

    while True:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n\n    if luku == -1:\n        break\n\n    print(luku ** 2)\n\nprint(\"Kiitos ja moi!\")

    Ohjelman esimerkkisuoritus:

    Anna luku, -1 lopettaa: 2\n4\nAnna luku, -1 lopettaa: 4\n16\nAnna luku, -1 lopettaa: 10\n100\nAnna luku, -1 lopettaa: -1\nKiitos ja moi!

    Kuten esimerkistä huomataan, ohjelman kysyy while-lauseen ansiosta käyttäjältä useita lukuja. Sitten kun käyttäjän syöte on -1, suoritetaan break-komento, jolloin suoritus hyppää ensimmäiselle lohkon jälkeiselle riville.

    Silmukoita käytettäessä on oltava tarkkana, että ei jouduta tilanteeseen, missä silmukan suoritus ei koskaan lopu. Muutetaan edellistä esimerkkiä seuraavasti

    luku = int(input(\"Anna luku, -1 lopettaa: \"))\nwhile True:\n    if luku == -1:\n        break\n\n    print(luku ** 2)\n\nprint(\"Kiitos ja moi!\")

    Nyt siis lukua kysytään silmukan ulkopuolella. Jos käyttäjä antaa minkä tahansa muun luvun kuin -1:n, ei silmukasta tulla koskaan pois, eli syntyy ikuinen silmukka. Tällöin silmukassa olevaa lohkoa suoritetaan ikuisesti:

    Anna luku, -1 lopettaa: 2\n4\n4\n4\n4\n4\n4\n4\n4\n(jatkuu ikuisesti...)

    Seuraavassa esimerkkinä ohjelma, joka antaa käyttäjän jatkaa eteenpäin vasta sen jälkeen, kun käyttäjä on syöttänyt oikean PIN-koodin 1234:

    while True:\n    koodi = input(\"Anna PIN-koodi: \")\n    if koodi == \"1234\":\n        break\n    print(\"Väärin... yritä uudelleen\")\n\nprint(\"PIN-koodi oikein!\")

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 9999\nVäärin... yritä uudelleen\nAnna PIN-koodi: 1234\nPIN-koodi oikein!

    Kirjoita edellä olevaa toistolause-esimerkkiä mukaillen ohjelma, joka tulostaa viestin \"moi\" ja kysyy käyttäjältä \"Jatketaanko?\" kunnes käyttäjä syöttää merkkijonon \"ei\". Tämän jälkeen tulostetaan merkkijono \"ei sitten\" ja suoritus päättyy.

    Esimerkkitulostus

    moi\nJatketaanko? kyllä\nmoi\nJatketaanko? yes\nmoi\nJatketaanko? jawohl\nmoi\nJatketaanko? ei\nei sitten

    Kirjoita ohjelma, joka kysyy käyttäjältä lukuja. Mikäli luku on negatiivinen (eli pienempi kuin nolla), käyttäjälle tulostetaan viesti \"Epäkelpo luku\" ja käyttäjältä kysytään uutta lukua. Jos taas luku on nolla, lukujen lukeminen lopetetaan ja ohjelma poistuu toistolauseesta.

    Mikäli luku on positiivinen, ohjelma tulostaa luvun neliöjuuren käyttäen sqrt-funktiota, joka on tuotu ohjelmaan import-lauseella. Esimerkki funktion käytöstä:

    # Tämä pitää olla ohjelman alussa, jotta sqrt toimii\nfrom math import sqrt\n\nprint(sqrt(9))

    3.0

    Esimerkki ohjelman suorituksesta:

    Syötä luku: 16\n4.0\nSyötä luku: 4\n2.0\nSyötä luku: -3\nEpäkelpo luku\nSyötä luku: 1\n1.0\nSyötä luku: 0\nLopetetaan...

    Tehtäväpohjassa olevan ohjelman

    luku = 5\nprint(\"Lähtölaskenta!\")\nwhile True:\n  print(luku)\n  luku = luku - 1\n  if luku > 0:\n    break\n\nprint(\"Nyt!\")

    olisi tarkoitus toimia seuraavasti:

    Lähtölaskenta!\n5\n4\n3\n2\n1\nNyt!

    Korjaa ohjelmassa oleva ongelma.

    Tee ohjelma, joka kysyy käyttäjältä salasanaa ja tämän jälkeen pyytää toistamaan salasanan niin kauan, kunnes käyttäjä syöttää ensimmäisenä annetun salasanan uudelleen.

    Salasana: sekred\nToista salasana: salainen\nEi ollut sama!\nToista salasana: enmuistaenää123\nEi ollut sama!\nToista salasana: sekred\nKäyttäjätunnus luotu!

    Silmukka ja apumuuttujat

    Tehdään vielä PIN-koodin tarkastavasta ohjelmasta monimutkaisempi versio, joka antaa käyttäjälle vain kolme mahdollisuutta yrittää PIN-koodin syöttämistä.

    Ohjelma käyttää nyt kahta apumuuttujaa. Muuttuja yritykset pitää kirjaa siitä, montako kertaa käyttäjä on syöttänyt koodin. Muuttuja onnistui saa arvokseen joko True tai False riippuen siitä, onnistuuko kirjautuminen.

    yritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n\n    if tunnus == \"1234\":\n        onnistui = True\n        break\n\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    # tänne tullaan jos väärin JA ei ole jo kolmea yritystä\n    print(\"Väärin... yritä uudelleen\")\n\nif onnistui:\n    print(\"PIN-koodi oikein!\")\nelse:\n    print(\"Liian monta yritystä...\")

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 1234\nPIN-koodi oikein!

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 9999\nVäärin... yritä uudelleen\nAnna PIN-koodi: 4321\nLiian monta yritystä...

    Silmukasta tullaan siis ulos, jos käyttäjä syöttää oikean PIN-koodin tai jos yrityksiä tehdään liian monta. Silmukan jälkeinen if-lause tarkastaa muuttujan onnistui arvon perusteella, onko kirjautuminen onnistunut vai ei.

    Debug-tulostus silmukassa

    Kun ohjelma sisältää silmukoita, kasvavat mahdolliset bugienkin lähteet uudelle tasolle, ja tämän osan ensimmäisessä luvussa mainittujen debug-tulostusten tekeminen muuttuu entistäkin tärkeämmäksi.

    Tarkastellaan esimerkkiä, jossa edellinen ohjelma on koodattu hieman väärin:

    yritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    if tunnus == \"1234\":\n        onnistui = True\n        break\n\n    print(\"Väärin... yritä uudelleen\")\n\nif onnistui:\n    print(\"PIN-koodi oikein!\")\nelse:\n    print(\"Liian monta yritystä...\")

    Ohjelma toimii kummallisesti: se antaa yrittää PIN-koodia kolmesti mutta valittaa, että yrityksiä on liian monta, vaikka lopussa syötettiin oikea koodi:

    Anna PIN-koodi: 0000\nVäärin... yritä uudelleen\nAnna PIN-koodi: 9999\nVäärin... yritä uudelleen\nAnna PIN-koodi: 1234\nLiian monta yritystä...

    Bugin syy selviää lisäämällä sopivia debug-tulostuksia:

    while True:\n    print(\"whilen lohko alkaa:\")\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n\n    print(\"yritykset:\", yritykset)\n    print(\"ehto1:\", yritykset == 3)\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    print(\"tunnus:\", tunnus)\n    print(\"ehto2:\", tunnus == \"1234\")\n    if tunnus == \"1234\":\n        onnistui = True\n        break\n\n    print(\"Väärin... yritä uudelleen\")

    whilen lohko alkaa:\nAnna PIN-koodi: 2233\nyritykset: 1\nehto1: False\ntunnus: 2233\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: 4545\nyritykset: 2\nehto1: False\ntunnus: 4545\nehto2: False\nVäärin... yritä uudelleen\nwhilen lohko alkaa:\nAnna PIN-koodi: 1234\nyritykset: 3\nehto1: True\nLiian monta yritystä...

    Tulostuksista huomataan, että kolmannella silmukan kierroksella ensimmäisen if-komennon ehto on tosi ja silmukasta poistutaan, ennen kuin ehditään tarkastaa, oliko juuri syötetty salasana oikein:

      while True:\n    # ....\n\n    # tämä lohko on liian aikaisin\n    if yritykset == 3:\n        onnistui = False\n        break\n\n    # tänne ei päästä enää kolmannella yrityksellä...\n    if tunnus == \"1234\":\n        onnistui = True\n        break

    Tee sovellus, joka kysyy käyttäjältä PIN-koodia niin kauan, kunnes käyttäjä antaa oikean PIN-koodin 4321. Ohjelma kertoo yritysten lukumäärän:

    PIN-koodi: 3245\nVäärin\nPIN-koodi: 1234\nVäärin\nPIN-koodi: 0000\nVäärin\nPIN-koodi: 4321\nOikein, tarvitsit 4 yritystä

    Tulostus on hieman erilainen jos PIN-koodi on oikea heti ensimmäisellä yrityksellä:

    PIN-koodi: 4321\nOikein, tarvitsit vain yhden yrityksen!

    Tee ohjelma, joka kyselee käyttäjältä vuosilukua ja kertoo, milloin on seuraava karkausvuosi.

    Vuosi: 2019\nVuotta 2019 seuraava karkausvuosi on 2020

    Jos käyttäjän syöttämä vuosi on karkausvuosi (kuten 2020), ohjelma ei kerro tätä vuotta vaan sitä seuraavan karkausvuoden:

    Vuosi: 2020\nVuotta 2020 seuraava karkausvuosi on 2024

    Merkkijonon kokoaminen plus-operaattorilla

    PIN-koodin tarkastavassa esimerkissä käytimme apumuuttujaa yritykset pitämään kirjaa siitä, montako kertaa PIN-koodi on syötetty:

    yritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n    # ...

    Muuttuja saa arvon nolla silmukan ulkopuolella, ja jokainen silmukan suoritus kasvattaa sen arvoa yhdellä.

    Vastaava idea toimii myös merkkijonoille. Voisimme laajentaa ohjelmaa siten, että se kokoaa yhteen merkkijonoon kaikki käyttäjän syöttämät PIN-koodit:

    tunnukset = \"\"\nyritykset = 0\n\nwhile True:\n    tunnus = input(\"Anna PIN-koodi: \")\n    yritykset += 1\n    tunnukset += tunnus + \", \"\n    # ...

    Apumuuttuja saa aluksi arvokseen tyhjän merkkijonon eli merkkijonon, jossa ei ole yhtään merkkiä:

    tunnukset = \"\"

    Silmukan sisällä merkkijonoa kasvatetaan lisäämällä siihen aina silmukassa syötetty tunnus ja pilkku:

        tunnus = input(\"Anna PIN-koodi: \")\n    tunnukset += tunnus + \", \"

    Jos käyttäjä syöttäisi tunnukset 1111 2222 1234 olisi muuttujan tunnukset arvo lopulta

    1111, 2222, 1234,

    Osa 1

    Tee ohjelma, joka pyytää käyttäjää syöttämään sanoja. Kun käyttäjä syöttää sanan loppu, ohjelma tulostaa sanoista muodostuneen tarinan ja suoritus päättyy.

    Anna sana: Olipa\nAnna sana: kerran\nAnna sana: pieni\nAnna sana: talo\nAnna sana: preerialla\nAnna sana: loppu\nOlipa kerran pieni talo preerialla

    Osa 2

    Muokkaa edellisen tehtävän ohjelmaa niin, että sanojen syöttäminen päättyy, jos käyttäjä syöttää sanan loppu tai käyttäjä syöttää saman sanan kaksi kertaa peräkkäin.

    Anna sana: Alussa\nAnna sana: oli\nAnna sana: suo\nAnna sana: kuokka\nAnna sana: ja\nAnna sana: Jussi\nAnna sana: Jussi\nAlussa oli suo kuokka ja Jussi

    Tee ohjelma, joka pyytää käyttäjää syöttämään kokonaislukuja. Ohjelma pyytää lukuja niin kauan kunnes käyttäjä syöttää nollan.

    Syötä kokonaislukuja, 0 lopettaa:\nLuku: 5\nLuku: 22\nLuku: 9\nLuku: -2\nLuku: 0

    Osa 1: lukumäärä

    Syötteiden lukemisen jälkeen ohjelman tulee tulostaa syötettyjen lukujen lukumäärä. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon lukumäärässä.

    Tarvitset tässä uuden muuttujan, jonka avulla pidät kirjaa luettujen lukujen määrästä.

    ... lukujen kysely\nLukuja yhteensä 4

    Osa 2: summa

    Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen summa. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon summan laskemisessa.

    Ohjelman tulostus laajenee seuraavasti:

    ... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34

    Osa 3: keskiarvo

    Laajenna ohjelmaa siten, että se tulostaa syötettyjen lukujen keskiarvon. Syötteen loppumisesta kertovaa nollaa ei tule ottaa huomioon keskiarvon laskemisessa. Voit olettaa, että käyttäjä syöttää aina vähintään yhden luvun.

    ... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5

    Osa 4: positiiviset ja negatiiviset

    Laajenna ohjelmaa siten, että se tulostaa positiivisten ja negatiivisten lukujen lukumäärät

    ... lukujen kysely\nLukuja yhteensä 4\nLukujen summa 34\nLukujen keskiarvo 8.5\nPositiivisia 3\nNegatiivisia 1

    Vastaa lopuksi koko toista osaa koskevaan loppukyselyyn:

    ","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/4-yksinkertainen-silmukka.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-2/page-data.json b/page-data/osa-2/page-data.json index e5b533b98..eee02c0f2 100644 --- a/page-data/osa-2/page-data.json +++ b/page-data/osa-2/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-2", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-2","title":"Osa 2"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-2","title":"Osa 2"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-2/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-3/1-ehdot-silmukoissa/page-data.json b/page-data/osa-3/1-ehdot-silmukoissa/page-data.json index 60e09ba53..9bea07504 100644 --- a/page-data/osa-3/1-ehdot-silmukoissa/page-data.json +++ b/page-data/osa-3/1-ehdot-silmukoissa/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-3/1-ehdot-silmukoissa", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tehdä while-silmukan, jonka alkurivillä on ehto"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mikä merkitys alustuksella, ehdolla ja muutoksella on silmukassa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää erilaisia ehtoja silmukoissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"osallistu-tutkimukseen---vastaa-kyselyyn","style":"position:relative;"},"children":[{"type":"text","value":"Osallistu tutkimukseen - vastaa kyselyyn"},{"type":"element","tagName":"a","properties":{"href":"#osallistu-tutkimukseen---vastaa-kyselyyn","ariaLabel":"osallistu tutkimukseen vastaa kyselyyn permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alla olevan linkin takaa löytyy Hannu Pesosen väitöskirjatutkimukseen liittyvä kysely. Kurssin suorittaminen ei edellytä kyselyyn vastaamista, mutta yliopistoissa tutkimus on luonnollisesti tärkeässä osassa myös opetuksen kehittämisessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos sinulta siis löytyy hetki aikaa, niin "},{"type":"element","tagName":"a","properties":{"href":"https://link.webropolsurveys.com/S/EB89556E704FA59B","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"vastaa kyselyyn"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kyselyyn ei ole pakko antaa henkilötietoja (esimerkiksi nimeä), vaikka niitä ensimmäisellä sivulla kysytäänkin."}]},{"type":"comment","value":"vastaava teksti löytyy osioista 3-1, 5-1 ja 6-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Kurssin tehtävien tekemisestä"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvosteluperusteet"}]},{"type":"text","value":" toteavat, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä."}]},{"type":"text","value":" Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan"}]},{"type":"text","value":". Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisen osan lopussa opimme käyttämään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while True"}]},{"type":"text","value":" -silmukkaa koodin toistamiseen. Tässä tapauksessa silmukan ehtona on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", joka on aina tosi. Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulosta lukuja kunnes muuttujan a arvo on 5"}]},{"type":"text","value":"\na "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n2\n3\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan toimintaa voidaan monipuolistaa käyttämällä ehtoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-määrittelyssä. Yleisemmin voimme siis käyttää silmukkaa näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"ehtolauseke"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"lohko"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ideana on, että silmukka vuorotellen tarkastaa ehdon ja suorittaa lohkossa olevan koodin, jos ehto on tosi. Sitten kun ehto on epätosi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 417px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/424da59634e40bf73e0e8f025df3bf97/f27fb/3_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 103.04347826086956%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAABtUlEQVQ4y42Vya7CMAxF+//fhdgghFjAgklQxCTmqcz46VhyZdLCi6WqSRpfX187aSIR9n6/9f14PORyueRrtu4tCZ38Rhvb/Hq9yn6/L+wvBQw/eofX66XjLMuk3+8XgvmnwPB8PsvxeCyNvl6vpdFoKNNvVgDcbrcKajYajWQ8HstwOJRutyvL5VLfrG02G9WU/bBXhkbV0trtdrnwrDWbTZnNZpKmqQwGAwXqdDoynU6VMfvRlTnMk5CyB7zdbnn69s0cQzscDuqXEJWn1+tpOkS1lO/3u6xWqw+ner2ey0MGNjYiCRFJCa3QBAAPSAAMpuyp1Wq6B8289gCyVkgZPXzKxhD2zK19KJ6xxE6nkzb+z6I8n09lD+h8PpfFYiGtVkuD+gbHly6YTCblbROmgwFqxUAS5PENTvWRrwCIk2nojx0pAUpAdDVw/11Tjjl6GDKQJo5Um4L9LMqvywFDQwoDQ7QMi8Jc2yb26oIdBalUKgperVYVGC2RgDVYRwPiSMVxhA1jY+gbPBoQjWDEQ+plnfBxfcWAkpI/2+FdGM3QNgPWbrfjb+z/GHL0TLtv/5Q/PCdoDvdVsp0AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/424da59634e40bf73e0e8f025df3bf97/a0b58/3_1_1.webp 230w","/static/424da59634e40bf73e0e8f025df3bf97/b6b2f/3_1_1.webp 417w"],"sizes":"(max-width: 417px) 100vw, 417px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/424da59634e40bf73e0e8f025df3bf97/81c8e/3_1_1.png 230w","/static/424da59634e40bf73e0e8f025df3bf97/f27fb/3_1_1.png 417w"],"sizes":"(max-width: 417px) 100vw, 417px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/424da59634e40bf73e0e8f025df3bf97/f27fb/3_1_1.png","alt":"3 1 1","title":"3 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa silmukassa ehtona on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku < 10"}]},{"type":"text","value":" eli silmukan koodi suoritetaan, jos luku on alle 10."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suoritus valmis.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus voi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n4\n5\n6\n7\n8\n9\nSuoritus valmis."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska ehto tarkastetaan aina ennen silmukan koodin suoritusta, on mahdollista, ettei koodia suoriteta kertaakaan. Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"12"}]},{"type":"text","value":"\nSuoritus valmis."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska 12 ei ole pienempi kuin 10, ohjelma ei tulosta yhtään lukua."}]},{"type":"element","tagName":"h2","properties":{"id":"alustus-testaus-ja-muutos","style":"position:relative;"},"children":[{"type":"text","value":"Alustus, testaus ja muutos"},{"type":"element","tagName":"a","properties":{"href":"#alustus-testaus-ja-muutos","ariaLabel":"alustus testaus ja muutos permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monessa silmukassa on kolme osaa: alustus, ehto ja muutos."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Alustus"}]},{"type":"text","value":" tarkoittaa silmukassa käytettävän muuttujan tai muuttujien alkuarvojen antamista. Tämä vaihe tehdään ennen silmukkaa. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ehto"}]},{"type":"text","value":" kirjoitetaan silmukan alkuun, ja se määrittelee, kuinka kauan silmukkaa suoritetaan. Joka kierroksella tapahtuva "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muutos"}]},{"type":"text","value":" vie silmukan askeleen lähemmäs sen loppumista. Esimerkiksi:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 508px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/773a3863d322b19f5fceeae0dc3638e2/2fd48/3_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 60%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB00lEQVQoz41T24riUBDM//+WqLDz4ouIL4IziTH3k5z7LTV064jswrANxTkdku6uqk4RQoS2Ds4HKG3hfMT/RggBzjnknPlujEExzzM+v0oYq9FNNca5xWI6LHrErFtoN/Ppg+WPDocDmqZB3/e4Xq+M7XaL0+mEZVlQhOC5C7AiZY+QLHzUiMkjRIOYHOfrmnmS+/0Oay2896jrGmVZ4ng84nK5YBxHFN4HSG2glMEiNbS2MMZDzBLOBWjjYOwjD/FfOdZ1fd1TSiiMsRimGYtUGMXjnBeJfpjQDROkMlxsEgtCTM8ijwJKKaZJp5SSUYzS4iYM+kmgvtewSkM2I9JT6P1+j7Ks0LYd2rZldF3HOhJNIQQ2mw1TZ1PyuiLmjJgSj0wU1pxfVEgv0u6H3jvIGMLtduNGrOEPd6ktxCKZrtLmRd04/+vqvDdjDSlxIaEaJZppwdfXJ3cioehl0ogcjTGyBO+gqchpWp2qqnja4tEloawqeOcwDgP6YUB2AclH/Pn44FUZ6PmTIoE0JN2o4G63w/l85qYF6edjQsyJdy9mj5QjYgqc/xb0UxAbcpfM4Qkn7dAsFkLNEPoOoRpIO0KaAYMsYZzkzn8b8r5/7/ENzfOeAgtI+uQAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/773a3863d322b19f5fceeae0dc3638e2/a0b58/3_1_2.webp 230w","/static/773a3863d322b19f5fceeae0dc3638e2/bc10c/3_1_2.webp 460w","/static/773a3863d322b19f5fceeae0dc3638e2/7b066/3_1_2.webp 508w"],"sizes":"(max-width: 508px) 100vw, 508px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/773a3863d322b19f5fceeae0dc3638e2/81c8e/3_1_2.png 230w","/static/773a3863d322b19f5fceeae0dc3638e2/08a84/3_1_2.png 460w","/static/773a3863d322b19f5fceeae0dc3638e2/2fd48/3_1_2.png 508w"],"sizes":"(max-width: 508px) 100vw, 508px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/773a3863d322b19f5fceeae0dc3638e2/2fd48/3_1_2.png","alt":"3 1 2","title":"3 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos jokin kolmesta osasta puuttuu, silmukka ei toimi oikein. Yksi tyypillinen virhe on muutoksen unohtaminen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suoritus valmis.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" arvo ei koskaan muutu, jää ohjelma suoritettaessa ikuiseen silmukkaan eli toistaa samaa koodia, kunnes käyttäjä katkaisee ohjelman suorituksen (esimerkiksi painamalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Control"}]},{"type":"text","value":" + "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"C"}]},{"type":"text","value":"):"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n1\n1\n1\n1\n(tämä jatkuu ikuisesti...)"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tulosta luvut","tmcname":"osa03-00_tulosta_luvut"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka tulostaa silmukassa luvut kahdesta kolmeenkymmeneen kahden luvun välein. Jokainen luku tulostetaan omalle rivilleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulosteen alku näytää siis tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n2\n4\n6\n8\njne...\n"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lähtölaskenta","tmcname":"osa03-01_lahtolaskenta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjaa tehtäväpohjassa oleva ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Valmiina?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nyt!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"siten että se toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Valmiina?\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n5\n4\n3\n2\n1\nNyt!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Älä tällä kertaa käytä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while True"}]},{"type":"text","value":" -silmukkaa!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"ehdoista-tarkemmin","style":"position:relative;"},"children":[{"type":"text","value":"Ehdoista tarkemmin"},{"type":"element","tagName":"a","properties":{"href":"#ehdoista-tarkemmin","ariaLabel":"ehdoista tarkemmin permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan ehtona voidaan käyttää mitä tahansa ehtolauseketta. Esimerkiksi seuraava ohjelma tulostaa lukuja kolmen välein niin kauan kuin luku on pienempi kuin 100 eikä se ole jaollinen 5:llä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi esimerkkitulostusta eri syötteillä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"28"}]},{"type":"text","value":"\n28\n31\n34\n37"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"96"}]},{"type":"text","value":"\n96\n99"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvun 28 kohdalla silmukka päättyy lukuun 37, koska seuraava luku 40 on jaollinen 5:llä. Luvun 96 kohdalla silmukka päättyy lukuun 99, koska seuraava luku 102 ei ole alle 100."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan ehtoa kirjoittaessa on tärkeä varmistua siitä, että silmukan suoritus päättyy. Esimerkiksi seuraava ohjelma on joko päättyvä tai ei-päättyvä riippuen alkuarvosta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos syötteenä on parillinen luku, joka on enintään 10, silmukan suoritus päättyy:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n4\n6\n8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muissa tapauksissa silmukka on kuitenkin ikuinen, koska muuttuja ei koskaan saavuta arvoa 10. Tällaisia syötteitä ovat esimerkiksi 3 ja 12."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Luvut","tmcname":"osa03-02_luvut"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa kaikki käyttäjän antamaa lukua pienemmät luvut alkaen luvusta yksi."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n1\n2\n3\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Älä käytä tässä tehtävässä while-komennon ehtona arvoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-debuggauksesta","style":"position:relative;"},"children":[{"type":"text","value":"Lisää debuggauksesta"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-debuggauksesta","ariaLabel":"lisaa debuggauksesta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hieman haastavampaa ohjelmaa, esim. seuraavaksi vuorossa olevaa tehtävää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Kahden potenssit"}]},{"type":"text","value":", koodatessa voitaisiin lähteä liikkeelle seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mihin asti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" asti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodia"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on aloitettu syötteen lukemisesta, minkä jälkeen ruvetaan miettimään silmukan lopetusehtoa sekä silmukan toimintaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Todennäköisesti ohjelma ei ensimmäisillä kokeilukerroilla toimi halutulla tavalla ja koodia on testailtava kymmeniä tai jopa satoja kertoja ennen kuin se alkaa toimia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska koodi lukee syötteitä käyttäjältä, sen toiminnan kokeileminen on hidasta ja vaivalloista, koska jokaisella testauskerralla on ohjelmalle annettava näppäimistöltä käsin sen haluamat syötteet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi tapa toimia on \"kovakoodata\" syöte aluksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kovakoodataan syötteen arvo aluksi"}]},{"type":"text","value":"\nasti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# int(input(\"Mihin asti\"))"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" asti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodia"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma toimii yhdellä syötteellä, sitä on helppo kokeilla muilla kovakoodatuilla syötteillä ja lopulta lukemalla syöte käyttäjältä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaava kikka toimii myös kurssien tehtäviin liittyvien testien ongelmatilanteita selvitellessä. Jos testi kertoo, että ohjelmasi toimii väärin, kun syöte on vaikkapa 42, niin kovakoodataan se syötteeksi bugin etsinnän ajaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# testi ilmoitti että koodi toimii väärin kun syöte on 42"}]},{"type":"text","value":"\nasti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# int(input(\"Mihin asti\"))"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" asti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodia"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin "},{"type":"element","tagName":"a","properties":{"href":"/osa-2"},"children":[{"type":"text","value":"edellisessä osassa"}]},{"type":"text","value":" oli jo pariinkin otteeseen puhetta tulostuskomennon avulla tapahtuvasta debuggaamisesta. Kurssin aikana vastaan tulevat ohjelmat muuttuvat koko ajan haastavammiksi ja debuggauksen tarve tulee kasvamaan entisestään. Esimerkiksi silmukoiden lopetusehtojen saaminen toimimaan kaikissa tapauksissa voi olla haastavaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuskomentoihin perustuva debuggaus kannattaa ottaa omaan työkalupakkiin viimeistään nyt. Kertaa tarvittaessa edellisen osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/1-ohjelmoinnin-termeja"},"children":[{"type":"text","value":"ensimmäisessä "}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/4-yksinkertainen-silmukka"},"children":[{"type":"text","value":"neljännessä"}]},{"type":"text","value":" luvussa olleet debuggausohjeet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostamisen lisäksi on olemassa muitakin debuggaukseen sopivia työkaluja. Eräs tälläinen on sivuston "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Python Tutor"}]},{"type":"text","value":" tarjoama "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisointityökalu"}]},{"type":"text","value":", jonka avulla oman ohjelman koodia on mahdollista suorittaa komento komennolta havainnoiden samalla, mitä arvoja ohjelman muuttujat saavat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa kuvassa Python Tutorilla visualisoidaan "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/4-yksinkertainen-silmukka"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" debuggausmateriaalissa olevan hieman rikkinäisen koodin toimintaa:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/d0cc22babf6824495497d96f07b56664/95fa1/3_1_0.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 69.1304347826087%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAABYlAAAWJQFJUiTwAAABYUlEQVQoz42S3VLcMAxG8/4v15vOMFN6AdklIRv/xIkVSbYlM8Sww7alcCbjKx99kpVOVetBBHwaLn6JIqIHtVZVned5mqZ2Lsuy77scqGqnqoi4huD86gPAnkTetHaez+e+78dxGMcRAFqSqopIV2sFAGstQBQpOTEzIWIppV26ttZoseWgy4lFxFo7jqO1LoSAuMcYc85N45Q4F2s982vhEMK1UCdMrdLpdHLOxRhb5pVfD88/7h5/nxyyXMd5lw8z5+ycI6J930spH7vtR/vzvn94ski53tKVUkQkpTQMw7Zt3vuPyX/P/KfcOKZFVSUiACCiZrbF/VsWEUT03htjAIA5AQAiMrO+82myiGzbdrlcvHNh8d6/Pngzv25bVUspKXHYYJoX4wLR//Z8Izvn2uqK1JRVbm9+1XbJxGystda0b57nEEJbYfuHP08ODM4Ha2Zj+r6fpmldVyL6TvIL8JgySYPZRccAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d0cc22babf6824495497d96f07b56664/a0b58/3_1_0.webp 230w","/static/d0cc22babf6824495497d96f07b56664/bc10c/3_1_0.webp 460w","/static/d0cc22babf6824495497d96f07b56664/966d8/3_1_0.webp 920w","/static/d0cc22babf6824495497d96f07b56664/445df/3_1_0.webp 1380w","/static/d0cc22babf6824495497d96f07b56664/a8768/3_1_0.webp 1816w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d0cc22babf6824495497d96f07b56664/81c8e/3_1_0.png 230w","/static/d0cc22babf6824495497d96f07b56664/08a84/3_1_0.png 460w","/static/d0cc22babf6824495497d96f07b56664/c0255/3_1_0.png 920w","/static/d0cc22babf6824495497d96f07b56664/b1001/3_1_0.png 1380w","/static/d0cc22babf6824495497d96f07b56664/95fa1/3_1_0.png 1816w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/d0cc22babf6824495497d96f07b56664/c0255/3_1_0.png","alt":"3 1 0","title":"3 1 0","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Punainen nuoli kertoo, missä kohtaa ohjelman suoritus on menossa. Visualisaattori näyttää, mitä ohjelma on tulostanut ruudulle ja mitkä ovat ohjelman muuttujien arvot kullakin suorituksen hetkellä. Koodin suoritus etenee komento komennolta painiketta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Next>"}]},{"type":"text","value":" painellessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattorin käyttö on erittäin helppoa, koska riittää että tarkasteltava koodi kopioidaan "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"koodi-ikkunaan"}]},{"type":"text","value":". Huomaa, että visualisaattori ei saalli ääkkösten käyttämistä muuttujien eikä funktioiden nimissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kokeneemmat ohjelmoijat tuskin käyttävät visualisaattoria koskaan, mutta aloittelijalle se voi olla oiva apuväline. Ohjelmointi ei nimittäin voi perustua tuuriin tai sattumaan. Ohjelmoijan on koko ajan tiedettävä tarkalleen, mitä muuttujien arvot ohjelman suorituksen aikana ovat. Jos muuttujien arvot eivät vastaakaan ohjelmoijan olettamaa, on tuloksena mitä suurimmalla todennäköisyydellä bugi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori ja debuggaustulostukset ovat erinomainen väline siihen, että ohjelmoija voi omin silmin varmistaa, että ohjelma todellakin toimii kuten sen olettaa toimivan."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Kahden potenssit","tmcname":"osa03-03_kahden_potenssit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa ensin luvun 1 ja sen jälkeen kerta toisensa jälkeen aina kaksi kertaa suuremman luvun. Ohjelma siis tulostaa luvun kaksi potensseja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus päättyy, kun on tulostettu luku, joka on korkeintaan käyttäjän syötteen suuruinen. Yhtään käyttäjän syötettä suurempaa lukua ei siis tulosteta!"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\n1\n2\n4\n8"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\n1\n2\n4\n8\n16"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n1\n2\n4\n8\n16\n32\n64"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Älä käytä tässä tehtävässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-komennon ehtona arvoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Miten kahden potenssit lasketaan?"}]},{"type":"text","value":" Ensimmäinen kahden potenssi on luku 1. Seuraava saadaan kertomalla 1 luvulla 2, eli se on 2. Sitä seuraava saadaan taas kertomalla edellinen kahden potenssi kahdella, eli kyseessä on 2 * 2 eli 4, ja seuraava saadaan kertomalla kahdella 4 * 2 eli kyseessä on 8, jne..."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Luvun n potenssit","tmcname":"osa03-04_luvun_n_potenssit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta edellistä ohjelmaa siten, että käyttäjä saa määrätä kertoimen (edellisessä ohjelmassa kerroin oli aina 2), eli sen, minkä luvun potensseja ohjelma tulostaa."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"27"}]},{"type":"text","value":"\nMikä kerroin: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n1\n3\n9\n27"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1234567"}]},{"type":"text","value":"\nMikä kerroin: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n1\n10\n100\n1000\n10000\n100000\n1000000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Älä käytä tässä tehtävässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-komennon ehtona arvoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"!"}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Peräkkäisten summa, versio 1","tmcname":"osa03-04a_perakkaisten_summa_helpompi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka laskee peräkkäisten lukujen summaa 1 + 2 + 3 + ... kunnes sen arvo on vähintään käyttäjän syöttämä luku. Ohjelma toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n3"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n10"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"18"}]},{"type":"text","value":"\n21"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että käyttäjän antama luku on 2 tai suurempi."}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijonon-rakentaminen-paloista","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijonon rakentaminen paloista"},{"type":"element","tagName":"a","properties":{"href":"#merkkijonon-rakentaminen-paloista","ariaLabel":"merkkijonon rakentaminen paloista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jo kurssin "},{"type":"element","tagName":"a","properties":{"href":"/osa-1/2-tietoa-kayttajalta"},"children":[{"type":"text","value":"ensimetreillä"}]},{"type":"text","value":" opimme, että merkkijono on mahdollista \"rakentaa\" useammasta pienemmästä merkkijonosta +-operaattorin avulla. Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suo\""}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", kuokka\""}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ja python\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suo, kuokka ja python"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että edellinen on mahdollista kirjoittaa hieman tiiviimmin operaattorin += avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suo\""}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", kuokka\""}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ja python\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhdistettävä merkkijonon pätkä voi olla myös f-merkkijono. Tämä saattaa olla kätevää, jos rakennettavaan merkkijonoon lisätään muuttujissa olevia arvoja. Voimme siis tehdä esim. seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"text","value":"\narvosana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n\nlausunto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olet saanut \""}]},{"type":"text","value":"\nlausunto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"kurssilta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" \""}]}]},{"type":"text","value":"\nlausunto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"arvosanan "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lausunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olet saanut kurssilta Ohjelmoinnin perusteet arvosanan 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä tehtävässä laskettiin lukujen summaa kasvattamalla sen arvoa silmukan sisällä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täsmälleen samalla idealla on mahdollista rakentaa myös merkkijonoa siten, että siihen lisätään yksi osa kerrallaan silmukassa..."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Peräkkäisten summa, versio 2","tmcname":"osa03-05_perakkaisten_summa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee edellisestä ohjelmasta hieman kehittyneempi versio, joka tulostaa lopputuloksen lisäksi myös sen miten kyseinen summa lasketaan:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nLaskettiin 1 + 2 = 3"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nLaskettiin 1 + 2 + 3 + 4 = 10"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin asti: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"18"}]},{"type":"text","value":"\nLaskettiin 1 + 2 + 3 + 4 + 5 + 6 = 21"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että käyttäjän antama luku on 2 tai suurempi."}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat tehdä while-silmukan, jonka alkurivillä on ehto
    • \n
    • Tiedät, mikä merkitys alustuksella, ehdolla ja muutoksella on silmukassa
    • \n
    • Osaat käyttää erilaisia ehtoja silmukoissa
    • \n

    Osallistu tutkimukseen - vastaa kyselyyn

    Alla olevan linkin takaa löytyy Hannu Pesosen väitöskirjatutkimukseen liittyvä kysely. Kurssin suorittaminen ei edellytä kyselyyn vastaamista, mutta yliopistoissa tutkimus on luonnollisesti tärkeässä osassa myös opetuksen kehittämisessä.

    Jos sinulta siis löytyy hetki aikaa, niin vastaa kyselyyn.

    Kyselyyn ei ole pakko antaa henkilötietoja (esimerkiksi nimeä), vaikka niitä ensimmäisellä sivulla kysytäänkin.

    Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

    Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten arvosteluperusteet toteavat, kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä.

    Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää.

    Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta.

    Edellisen osan lopussa opimme käyttämään while True -silmukkaa koodin toistamiseen. Tässä tapauksessa silmukan ehtona on True, joka on aina tosi. Esimerkiksi

    # Tulosta lukuja kunnes muuttujan a arvo on 5\na = 1\nwhile True:\n    print(a)\n    a += 1\n    if a == 5:\n        break

    1\n2\n3\n4

    Silmukan toimintaa voidaan monipuolistaa käyttämällä ehtoa while-määrittelyssä. Yleisemmin voimme siis käyttää silmukkaa näin:

    while <ehtolauseke>:\n    <lohko>

    Ideana on, että silmukka vuorotellen tarkastaa ehdon ja suorittaa lohkossa olevan koodin, jos ehto on tosi. Sitten kun ehto on epätosi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä.

    \n \n

    Tämän osion jälkeen

      \n
    • Osaat tehdä while-silmukan, jonka alkurivillä on ehto
    • \n
    • Tiedät, mikä merkitys alustuksella, ehdolla ja muutoksella on silmukassa
    • \n
    • Osaat käyttää erilaisia ehtoja silmukoissa
    • \n

    Osallistu tutkimukseen - vastaa kyselyyn

    Alla olevan linkin takaa löytyy Hannu Pesosen väitöskirjatutkimukseen liittyvä kysely. Kurssin suorittaminen ei edellytä kyselyyn vastaamista, mutta yliopistoissa tutkimus on luonnollisesti tärkeässä osassa myös opetuksen kehittämisessä.

    Jos sinulta siis löytyy hetki aikaa, niin vastaa kyselyyn.

    Kyselyyn ei ole pakko antaa henkilötietoja (esimerkiksi nimeä), vaikka niitä ensimmäisellä sivulla kysytäänkin.

    Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

    Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten arvosteluperusteet toteavat, kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä.

    Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää.

    Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta.

    Edellisen osan lopussa opimme käyttämään while True -silmukkaa koodin toistamiseen. Tässä tapauksessa silmukan ehtona on True, joka on aina tosi. Esimerkiksi

    # Tulosta lukuja kunnes muuttujan a arvo on 5\na = 1\nwhile True:\n    print(a)\n    a += 1\n    if a == 5:\n        break

    1\n2\n3\n4

    Silmukan toimintaa voidaan monipuolistaa käyttämällä ehtoa while-määrittelyssä. Yleisemmin voimme siis käyttää silmukkaa näin:

    while <ehtolauseke>:\n    <lohko>

    Ideana on, että silmukka vuorotellen tarkastaa ehdon ja suorittaa lohkossa olevan koodin, jos ehto on tosi. Sitten kun ehto on epätosi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä.

    \n \n "}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen merkki: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Merkkijono on tyhjä eli ensimmäistä merkkiä ei ole\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä koodissa tyhjä syöte (käyttäjä painaa ainoastaan Enter) aiheuttaisi virheen, ellei koodari olisi lisännyt tarkastusta tilanteen varalta."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lopusta alkuun","tmcname":"osa03-05c_lopusta_alkuun"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten merkkijonon merkit allekkain käänteisessä järjestyksessä lopusta alkuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heippa"}]},{"type":"text","value":"\na\np\np\ni\ne\nh"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Toinen ja toiseksi viimeinen","tmcname":"osa03-06_toinen_ja_toiseksi_viimeinen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä sanan ja kertoo, ovatko sen toinen ja toiseksi viimeinen merkki samoja."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nToinen ja toiseksi viimeinen kirjain eroavat"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pascal"}]},{"type":"text","value":"\nToinen ja toiseksi viimeinen kirjain on a"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Risuaitaviiva","tmcname":"osa03-09_risuaitaviiva"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää käyttäjän määräämän levyisen risuaitaviivan."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leveys: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"###\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leveys: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"########\n"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Risuaitasuorakulmio","tmcname":"osa03-10_risuaitanelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna edellistä niin, että käyttäjä syöttää myös piirrettävien rivien määrän"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leveys: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nKorkeus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n##########\n##########\n##########"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Alleviivaus","tmcname":"osa03-11_alleviivaus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjältä merkkijonoja ja tulostaa kunkin merkkijonon oheisen esimerkin mukaisesti alleviivattuna. Ohjelman suoritus päättyy, kun käyttäjä syöttää tyhjän merkkijonon, eli merkkijonon jonka pituus on 0."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Moi kaikki!\n-----------\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tämä on testijono"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Tämä on testijono\n-----------------\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"a\n-\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono:"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tasaus oikeaan","tmcname":"osa03-12_tasaus_oikeaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sen niin, että tulostetuksi tulee tasan 20 merkkiä. Jos merkkijono on lyhyempi, alkuun tulee tarvittava määrä tähtiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että syötetyssä merkkijonossa on enintään 20 merkkiä."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"**************python\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pitkämerkkijono"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*****pitkämerkkijono\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tosipitkämerkkijono"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*tosipitkämerkkijono\n"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Sanalaatikko","tmcname":"osa03-13_sanalaatikko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä sanaa ja tulostaa sanan tähtiraameihin, joissa sana on keskellä. Raamien leveys on 30 merkkiä, ja voit olettaa, että sana mahtuu raameihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Jos sanan pituus on pariton, voit tulostaa sanan kumpaan tahansa mahdollisista keskikohdista."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koe"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"******************************\n* koe *\n******************************\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"******************************\n* python *\n******************************\n"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"osajonot","style":"position:relative;"},"children":[{"type":"text","value":"Osajonot"},{"type":"element","tagName":"a","properties":{"href":"#osajonot","ariaLabel":"osajonot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonon "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"osajono"}]},{"type":"text","value":" muodostuu peräkkäisistä merkeistä, jotka ovat merkkijonon osana. Esimerkiksi merkkijonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"esimerkki"}]},{"type":"text","value":" osajonoja ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"esi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"imer"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkki"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme erottaa halutussa kohdassa olevan osajonon syntaksilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[a:b]"}]},{"type":"text","value":", mikä tarkoittaa, että osajono alkaa kohdasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" ja päättyy juuri ennen kohtaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":". Voimme ajatella alku- ja loppukohdan merkkien vasemmalle puolelle piirretyiksi viivoiksi alla olevan kuvan mukaisesti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 436px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/49c600ef1e17a304f10d29a288a47467/8574c/3_2_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 33.04347826086957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABNklEQVQoz42R3W7CMAxG+/4vtAuYxIaAq0mTENJumCgM2ib9SdOWlqTtmRI2xi4mzZLjWIpP7M+BEIKiKLDW0jQNu92OOI4Jw5AkSfzdvfm2cRzdcY1f+XiXB6fTyRdprcmyzHue5x4mkoTj8YgUgqapfxX/5YFSykMc0IFcl65bYwzG9iQiRcgM24/8x4Ku625J3/fejbWMwwDnE7QhnEPG6h2jtz7aastwllg7YMzl+rkxDMNAsF6vKcvSA123blQXq1LTHlfow4T28Ei7n6L2E/roiWL3QBtvkNLJ8yOR4wT3YjuQW0CapuhS08kX+nzFOXrmksy5pEtsuqTPl5TxBqUqpBQ3mNtFcL8tp5+D1nVNVVUY9YrJFuThlDqaoT5mXNIFnZyjxBu6aihLhZTSjxxFEZ/CpxdM7lQktAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/49c600ef1e17a304f10d29a288a47467/a0b58/3_2_3.webp 230w","/static/49c600ef1e17a304f10d29a288a47467/bfa8c/3_2_3.webp 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/49c600ef1e17a304f10d29a288a47467/81c8e/3_2_3.png 230w","/static/49c600ef1e17a304f10d29a288a47467/8574c/3_2_3.png 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/49c600ef1e17a304f10d29a288a47467/8574c/3_2_3.png","alt":"3 2 3","title":"3 2 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki esittelee osajonojen hakemista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saippuakauppias\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# jos alkukohta puuttuu, se on oletuksena 0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# jos loppukohta puuttuu, se on oletuksena merkkijonon pituus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sai\npuakau\nsai\npuakauppias"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Puoliavoimet välit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonojen käsittelyssä väli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[a:b]"}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puoliavoin"}]},{"type":"text","value":" eli alkukohta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\nkuuluu väliin mutta loppukohta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":" ei kuulu väliin. Miksi näin?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän ei ole syvällistä syytä, vaan kyseessä on käytäntö, joka esiintyy\nmonessa ohjelmointikielessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi etu tästä on, että osajonon pituus saadaan helposti laskettua kaavalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b-a"}]},{"type":"text","value":".\nToisaalta täytyy aina muistaa, että kohdassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":" oleva merkki\nei tule mukaan osajonoon."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Osajonot 1","tmcname":"osa03-07_osajonot1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen ensimmäisestä merkistä alkavat osajonot pituusjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\nt\nte\ntes\ntest\ntesti"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Osajonot 2","tmcname":"osa03-08_osajonot2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen viimeiseen merkkiin päättyvät osajonot pituusjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\ni\nti\nsti\nesti\ntesti"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"osajonon-etsiminen","style":"position:relative;"},"children":[{"type":"text","value":"Osajonon etsiminen"},{"type":"element","tagName":"a","properties":{"href":"#osajonon-etsiminen","ariaLabel":"osajonon etsiminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme tutkia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":"-operaattorin avulla, onko merkkijonossa tiettyä osajonoa.\nLauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a in b"}]},{"type":"text","value":" on tosi, jos merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":" on osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"t\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"x\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"est\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ets\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nTrue\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma antaa käyttäjän etsiä merkkijonon osajonoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saippuakauppias\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mitä etsit? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Löytyi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kaup"}]},{"type":"text","value":"\nLöytyi\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"abc"}]},{"type":"text","value":"\nEi löytynyt\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ippu"}]},{"type":"text","value":"\nLöytyi\n..."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Löytyvätkö vokaalit","tmcname":"osa03-13b_loytyvatko_vokaalit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten tiedon löytyvätkö vokaalit a, e ja o merkkijonosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että merkkijono on syötetty kokonaan pienillä kirjaimilla. Katso mallia esimerkkitulostuksesta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heippa sulle"}]},{"type":"text","value":"\na löytyy\ne löytyy\no ei löydy"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moi"}]},{"type":"text","value":"\na ei löydy\ne ei löydy\no löytyy"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" palauttaa tiedon osajonon esiintymisestä, muttei tietoa siitä, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mistä"}]},{"type":"text","value":" se löytyy. Tätä varten löytyy Pythonin merkkijonojen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodi"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":", joka saa parametrikseen etsittävän osajonon ja palauttaa joko ensimmäisen indeksin, josta osajono löytyy, tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":", jos osajonoa ei löydy merkkijonosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodia käytetään seuraavasti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 227px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5ce89dd815f6b20f038005e995598c4f/9b5be/3_2_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.11453744493392%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB00lEQVQoz3VTaW/iQAzN//835QNdFRSQEBINhxCkFWTJQdE2J4TcISF5KzuwBbYdybJn4tjvPc8IeFx13RiFVcVeURT8en5GTxQxHA7RbrcxGAzYNFW9/FazCdfg0Tjp0iNOEli2DdO24bguTNOE5Th85gfBXa5wV+CxaJoCYQgkCZBlQJ4DUQTEcRPTGX2jfRw3CK9Mqwu921VlGU5pivp8pgRURYEizxFTk7rG+XRqGIQhSmpOBU9FgclsBlXTsFFV9r83G4RRhO3HB3TDYP/2/o6lLOPTNKFpGtaKAsMwsFguWWN9u20ol1mGP7qOz90OnmWxObsd4uMRxyDAYb+H67qwLIt9EkWsl+26cDyPG5RliTAIbigTdLLjsdGG4H8jAS/6TpqRftd83wdIFkK43+8RpSn8C6Iky5DmOc5U8IfpB74P3/OQHA5IaRhVxagZYafTQeflhe9Xt9tFv9+H9PrKunw7eQDT2QxPrRZGkoTpdAoCdc1lykmSQNd1TCYTyLKMgqZZFP9dp9vbQPkEgrS9bSg0suRYrVaYz+fsvx5N/fCIvvY06fF4DNu27xoJFEiShF6vh9FoxM9qsVj8SJeQEzJRFDm/1WphvV7/o/wXf9aQyTTf/MkAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5ce89dd815f6b20f038005e995598c4f/7d72c/3_2_4.webp 227w"],"sizes":"(max-width: 227px) 100vw, 227px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5ce89dd815f6b20f038005e995598c4f/9b5be/3_2_4.png 227w"],"sizes":"(max-width: 227px) 100vw, 227px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5ce89dd815f6b20f038005e995598c4f/9b5be/3_2_4.png","alt":"3 2 4","title":"3 2 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä metodin käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"t\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"x\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"est\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ets\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n-1\n1\n-1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös laajentaa hakuohjelmaa näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saippuakauppias\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mitä etsit? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Löytyi kohdasta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kaup"}]},{"type":"text","value":"\nLöytyi kohdasta 7\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"abc"}]},{"type":"text","value":"\nEi löytynyt\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ippu"}]},{"type":"text","value":"\nLöytyi kohdasta 2\n..."}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Metodi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonon sisältä merkkijonoa etsivä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":" on siis "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodi"}]},{"type":"text","value":". Metodit ovat sukua jo meille tutuille asioille eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"funktioille"}]},{"type":"text","value":". Metodit ovatkin eräänlaisia funktioita, mutta niiden suorittama operaatio kohdistuu siihen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioon"}]},{"type":"text","value":", jonka kautta metodia kutsutaan, eli joka esiintyy metodikutsun alussa ennen metodin nimeä. Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":" tapauksessa oliona on merkkijono, jonka osajonoa etsitään."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ensimmäisen osajonon haku","tmcname":"osa03-13c_osajonon_haku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonoa ja yksittäistä merkkiä. Ohjelma tulostaa merkkijonosta löytyvän ensimmäisen kolmen merkin pituisen osajonon, jonka alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apinatalo"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\napi"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"banaani"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"\nnaa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tomaatti"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"x"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"n"}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Kaikkien osajonojen haku","tmcname":"osa03-14_osajonojen_haku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee edellisestä ohjelmasta laajennettu versio, joka tulostaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kaikki merkkijonon sisältämät kolmen merkin pituiset osajonot"}]},{"type":"text","value":", joiden alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apinatalo"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\napi\nata\nalo"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"banaani"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"\nnaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" seuraava esimerkki saattaa antaa jotain inspiraatiota eräästä tavasta miten tätä tehtävää voi lähestyä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apinatalo"}]},{"type":"text","value":"\napinatalo\ninatalo\natalo\nalo\no"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Toinen esiintymä","tmcname":"osa03-15_toinen_esiintyma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka etsii merkkijonosta osajonon toisen esiintymän. Jos toista (tai edes ensimmäistä) esiintymää ei löydy, ohjelma tulostaa tästä tiedon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määritellään tässä yhteydessä, että esiintymät "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"eivät"}]},{"type":"text","value":" voi mennä päällekkäin, merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aaaa"}]},{"type":"text","value":" osajonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aa"}]},{"type":"text","value":" toinen esiintymä löytyy siis indeksin 2 kohdalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"abcabc"}]},{"type":"text","value":"\nAnna osajono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ab"}]},{"type":"text","value":"\nOsajonon toinen esiintymä on kohdassa 3."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"saippuakauppias"}]},{"type":"text","value":"\nAnna osajono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\nOsajonon toinen esiintymä on kohdassa 6."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aybabtu"}]},{"type":"text","value":"\nAnna osajono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ba"}]},{"type":"text","value":"\nOsajono ei esiinny merkkijonossa kahdesti."}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää operaattoreita + ja * merkkijonojen kanssa
    • \n
    • Osaat laskea merkkijonon pituuden
    • \n
    • Tiedät, mitä tarkoittaa merkkijonon indeksointi
    • \n
    • Osaat etsiä osajonoja merkkijonosta
    • \n

    Merkkijono-operaatiot

    Merkkijonojen yhdistäminen tapahtuu +-operaattorin avulla:

    alku = \"esi\"\nloppu = \"merkki\"\nsana = alku+loppu\nprint(sana)

    esimerkki

    Myös *-operaattoria voidaan käyttää merkkijonojen yhteydessä. Jos toinen operandi kertolaskussa on merkkijono ja toinen kokonaisluku, saadaan merkkijonoa monistettua annettu määrä. Esimerkiksi:

    sana = \"apina\"\nprint(sana*3)

    apinaapinaapina

    Silmukan ja merkkijono-operaatioiden avulla voimme tehdä ohjelman, joka piirtää pyramidin:

    n = 10 # pyramidin kerrosten määrä\nrivi = \"*\"\n\nwhile n > 0:\n    print(\" \" * n + rivi)\n    rivi += \"**\"\n    n -= 1

    Ohjelman tulostus on seuraava:

              *\n         ***\n        *****\n       *******\n      *********\n     ***********\n    *************\n   ***************\n  *****************\n *******************

    Silmukassa oleva print-komento tulostaa rivin, jonka alussa on n välilyöntiä ja sitten muuttujan rivi sisältö. Tämän jälkeen muuttujan rivi loppuun lisätään kaksi tähteä ja muuttujan n arvo vähenee yhdellä.

    Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja määrän ja tulostaa sitten annettua merkkijonoa annetun määrän. Tulostuksen tulee tapahtua yhdelle riville yhteen pötköön.

    Esimerkkisuoritus:

    Anna merkkijono: heippa\nAnna määrä: 4\nheippaheippaheippaheippa

    Merkkijonon pituus ja indeksointi

    Funktio len palauttaa kokonaisluvun, joka on merkkijonon pituus merkkeinä. Esimerkiksi len(\"moi\") palauttaa 3, koska merkkijonossa moi on 3 merkkiä.

    Seuraava ohjelma tulostaa käyttäjän syöttämän merkkijonon \"alleviivattuna\" monistamalla merkkiä - syötteen pituuden mukaisen määrän:

    mjono = input(\"Anna merkkijono: \")\nprint(mjono)\nprint(\"-\"*len(mjono))

    Anna merkkijono: Moi kaikki!

    \nMoi kaikki!\n-----------\n

    Pituuteen lasketaan mukaan kaikki merkkijonossa olevat merkit, mukaan lukien välilyönnit. Esimerkiksi merkkijonon moi moi pituus on 7.

    Kirjoita ohjelma, joka kysyy käyttäjältä kaksi merkkijonoa ja tulostaa jonoista pidemmän (ts. sen, jossa on enemmän merkkejä). Jos jonot ovat yhtä pitkiä tulostetaan viesti \"Jonot ovat yhtä pitkät\"

    Esimerkkisuorituksia:

    Anna jono 1: moi\nAnna jono 2: heippa\nheippa on pidempi

    Anna jono 1: moikkelis koikkelis\nAnna jono 2: heipparallaa\nmoikkelis koikkelis on pidempi

    Anna jono 1: moi\nAnna jono 2: hei\nJonot ovat yhtä pitkät

    Yksittäinen merkkijonon merkki voidaan hakea operaattorin [] avulla. Operaattori kirjoitetaan merkkijonon perään, ja hakasulkeiden väliin kirjoitetaan halutun merkin indeksi eli kohta merkkijonossa.

    Huomaa, että merkkien indeksointi alkaa nollasta: ensimmäinen merkki on indeksin 0 kohdalla, toinen indeksin 1 kohdalla jne.

    \n \n \n \n \n \n \"3\n \n \n

    Tämän avulla aiempi ohjelma voidaan toteuttaa paremmin näin:

    mjono = input(\"Anna merkkijono: \")\nprint(\"Ensimmäinen: \" + mjono[0])\nprint(\"Viimeinen: \" + mjono[-1])

    Anna merkkijono: testi\nEnsimmäinen: t\nViimeinen: i

    IndexError: string index out of range

    Merkkijonon käsittelyssä tulee olla tarkkana indeksien kanssa. Jos viitataan merkkijonon ulkopuolelle, on seurauksena virheilmoitus IndexError: string index out of range:

    mjono = input(\"Anna merkkijono: \")\nprint(\"Kymmenes merkki: \" + mjono[9])

    Anna merkkijono: ohjelmoinnin perusteet\nKymmenes merkki: n

    Anna merkkijono: python

    Traceback (most recent call last):\nFile \"\", line 1, in \nIndexError: string index out of range

    Joskus virhetilanne johtuu ohjelmointivirheestä. Esimerkiksi merkkijonon viimeistä merkkiä tarkasteltaessa on yleistä indeksoida vahingossa yhtä liian pitkälle:

    mjono = input(\"Anna merkkijono: \")\nprint(\"Viimeinen merkki: \" + mjono[len(mjono)])

    Koska merkkijonojen indeksit alkavat nollasta, niin viimeinen merkki on indeksissä len(mjono) - 1 eikä len(mjono).

    On myös tilanteita, joissa ohjelman on syytä varautua siihen, että virheen lähde on käyttäjän antama syöte:

    mjono = input(\"Anna merkkijono: \")\nif len(mjono) > 0:\n    print(\"Ensimmäinen merkki: \" + mjono[0])\nelse:\n    print(\"Merkkijono on tyhjä eli ensimmäistä merkkiä ei ole\")

    Tässä koodissa tyhjä syöte (käyttäjä painaa ainoastaan Enter) aiheuttaisi virheen, ellei koodari olisi lisännyt tarkastusta tilanteen varalta.

    Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten merkkijonon merkit allekkain käänteisessä järjestyksessä lopusta alkuun.

    Esimerkkisuoritus:

    Anna merkkijono: heippa\na\np\np\ni\ne\nh

    Tee ohjelma, joka kysyy käyttäjältä sanan ja kertoo, ovatko sen toinen ja toiseksi viimeinen merkki samoja.

    Anna sana: python\nToinen ja toiseksi viimeinen kirjain eroavat

    Anna sana: pascal\nToinen ja toiseksi viimeinen kirjain on a

    Tee ohjelma, joka piirtää käyttäjän määräämän levyisen risuaitaviivan.

    Leveys: 3

    \n###\n

    Leveys: 8

    \n########\n

    Laajenna edellistä niin, että käyttäjä syöttää myös piirrettävien rivien määrän

    Leveys: 10\nKorkeus: 3\n##########\n##########\n##########

    Tee ohjelma, joka pyytää käyttäjältä merkkijonoja ja tulostaa kunkin merkkijonon oheisen esimerkin mukaisesti alleviivattuna. Ohjelman suoritus päättyy, kun käyttäjä syöttää tyhjän merkkijonon, eli merkkijonon jonka pituus on 0.

    Anna merkkijono: Moi kaikki!

    \nMoi kaikki!\n-----------\n

    Anna merkkijono: Tämä on testijono

    \nTämä on testijono\n-----------------\n

    Anna merkkijono: a

    \na\n-\n

    Anna merkkijono:

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sen niin, että tulostetuksi tulee tasan 20 merkkiä. Jos merkkijono on lyhyempi, alkuun tulee tarvittava määrä tähtiä *.

    Voit olettaa, että syötetyssä merkkijonossa on enintään 20 merkkiä.

    Sana: python

    \n**************python\n

    Sana: pitkämerkkijono

    \n*****pitkämerkkijono\n

    Sana: tosipitkämerkkijono

    \n*tosipitkämerkkijono\n

    Tee ohjelma, joka kysyy käyttäjältä sanaa ja tulostaa sanan tähtiraameihin, joissa sana on keskellä. Raamien leveys on 30 merkkiä, ja voit olettaa, että sana mahtuu raameihin.

    Huom! Jos sanan pituus on pariton, voit tulostaa sanan kumpaan tahansa mahdollisista keskikohdista.

    Sana: koe

    \n******************************\n*            koe             *\n******************************\n

    Sana: python

    \n******************************\n*           python           *\n******************************\n

    Osajonot

    Merkkijonon osajono muodostuu peräkkäisistä merkeistä, jotka ovat merkkijonon osana. Esimerkiksi merkkijonon esimerkki osajonoja ovat esi, imer ja merkki.

    Voimme erottaa halutussa kohdassa olevan osajonon syntaksilla [a:b], mikä tarkoittaa, että osajono alkaa kohdasta a ja päättyy juuri ennen kohtaa b. Voimme ajatella alku- ja loppukohdan merkkien vasemmalle puolelle piirretyiksi viivoiksi alla olevan kuvan mukaisesti:

    \n \n \n \n \n \n \"3\n \n \n

    Seuraava esimerkki esittelee osajonojen hakemista:

    mjono = \"saippuakauppias\"\n\nprint(mjono[0:3])\nprint(mjono[4:10])\n\n# jos alkukohta puuttuu, se on oletuksena 0\nprint(mjono[:3])\n\n# jos loppukohta puuttuu, se on oletuksena merkkijonon pituus\nprint(mjono[4:])

    sai\npuakau\nsai\npuakauppias

    Merkkijonojen käsittelyssä väli [a:b] on puoliavoin eli alkukohta a\nkuuluu väliin mutta loppukohta b ei kuulu väliin. Miksi näin?

    Tähän ei ole syvällistä syytä, vaan kyseessä on käytäntö, joka esiintyy\nmonessa ohjelmointikielessä.

    Yksi etu tästä on, että osajonon pituus saadaan helposti laskettua kaavalla b-a.\nToisaalta täytyy aina muistaa, että kohdassa b oleva merkki\nei tule mukaan osajonoon.

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen ensimmäisestä merkistä alkavat osajonot pituusjärjestyksessä.

    Esimerkkitulostus:

    Anna merkkijono: testi\nt\nte\ntes\ntest\ntesti

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen viimeiseen merkkiin päättyvät osajonot pituusjärjestyksessä.

    Esimerkkitulostus:

    Anna merkkijono: testi\ni\nti\nsti\nesti\ntesti

    Osajonon etsiminen

    Voimme tutkia in-operaattorin avulla, onko merkkijonossa tiettyä osajonoa.\nLauseke a in b on tosi, jos merkkijonossa b on osajono a.

    Esimerkiksi

    mjono = \"testi\"\n\nprint(\"t\" in mjono)\nprint(\"x\" in mjono)\nprint(\"est\" in mjono)\nprint(\"ets\" in mjono)

    True\nFalse\nTrue\nFalse

    Seuraava ohjelma antaa käyttäjän etsiä merkkijonon osajonoja:

    mjono = \"saippuakauppias\"\n\nwhile True:\n    osa = input(\"Mitä etsit? \")\n    if osa in mjono:\n        print(\"Löytyi\")\n    else:\n        print(\"Ei löytynyt\")

    Mitä etsit? kaup\nLöytyi\nMitä etsit? abc\nEi löytynyt\nMitä etsit? ippu\nLöytyi\n...

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten tiedon löytyvätkö vokaalit a, e ja o merkkijonosta.

    Voit olettaa, että merkkijono on syötetty kokonaan pienillä kirjaimilla. Katso mallia esimerkkitulostuksesta.

    Esimerkkitulostus:

    Anna merkkijono: heippa sulle\na löytyy\ne löytyy\no ei löydy

    Anna merkkijono: moi\na ei löydy\ne ei löydy\no löytyy

    Operaattori in palauttaa tiedon osajonon esiintymisestä, muttei tietoa siitä, mistä se löytyy. Tätä varten löytyy Pythonin merkkijonojen metodi find, joka saa parametrikseen etsittävän osajonon ja palauttaa joko ensimmäisen indeksin, josta osajono löytyy, tai -1, jos osajonoa ei löydy merkkijonosta.

    Metodia käytetään seuraavasti:

    \n \n

    Merkkijonon sisältä merkkijonoa etsivä find on siis metodi. Metodit ovat sukua jo meille tutuille asioille eli funktioille. Metodit ovatkin eräänlaisia funktioita, mutta niiden suorittama operaatio kohdistuu siihen olioon, jonka kautta metodia kutsutaan, eli joka esiintyy metodikutsun alussa ennen metodin nimeä. Metodin find tapauksessa oliona on merkkijono, jonka osajonoa etsitään.

    Tee ohjelma, joka kysyy käyttäjältä merkkijonoa ja yksittäistä merkkiä. Ohjelma tulostaa merkkijonosta löytyvän ensimmäisen kolmen merkin pituisen osajonon, jonka alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen.

    Sana: apinatalo\nMerkki: a\napi

    Sana: banaani\nMerkki: n\nnaa

    Sana: tomaatti\nMerkki: x

    Sana: python\nMerkki: n

    Tee edellisestä ohjelmasta laajennettu versio, joka tulostaa kaikki merkkijonon sisältämät kolmen merkin pituiset osajonot, joiden alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen.

    Sana: apinatalo\nMerkki: a\napi\nata\nalo

    Sana: banaani\nMerkki: n\nnaa

    Vihje seuraava esimerkki saattaa antaa jotain inspiraatiota eräästä tavasta miten tätä tehtävää voi lähestyä

    sana = input(\"Sana: \")\nwhile True:\n    if len(sana) == 0:\n        break\n    print(sana)\n    sana = sana[2:]

    Sana: apinatalo\napinatalo\ninatalo\natalo\nalo\no

    Tee ohjelma, joka etsii merkkijonosta osajonon toisen esiintymän. Jos toista (tai edes ensimmäistä) esiintymää ei löydy, ohjelma tulostaa tästä tiedon.

    Määritellään tässä yhteydessä, että esiintymät eivät voi mennä päällekkäin, merkkijonossa aaaa osajonon aa toinen esiintymä löytyy siis indeksin 2 kohdalta.

    Muutama esimerkkisuoritus:

    Anna merkkijono: abcabc\nAnna osajono: ab\nOsajonon toinen esiintymä on kohdassa 3.

    Anna merkkijono: saippuakauppias\nAnna osajono: a\nOsajonon toinen esiintymä on kohdassa 6.

    Anna merkkijono: aybabtu\nAnna osajono: ba\nOsajono ei esiinny merkkijonossa kahdesti.

    ","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-3/2-merkkijonojen-kasittely.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää operaattoreita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" merkkijonojen kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat laskea merkkijonon pituuden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoittaa merkkijonon indeksointi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat etsiä osajonoja merkkijonosta"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijono-operaatiot","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijono-operaatiot"},{"type":"element","tagName":"a","properties":{"href":"#merkkijono-operaatiot","ariaLabel":"merkkijono operaatiot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonojen yhdistäminen tapahtuu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattorin avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esi\""}]},{"type":"text","value":"\nloppu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkki\""}]},{"type":"text","value":"\nsana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"loppu\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"esimerkki"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"-operaattoria voidaan käyttää merkkijonojen yhteydessä. Jos toinen operandi kertolaskussa on merkkijono ja toinen kokonaisluku, saadaan merkkijonoa monistettua annettu määrä. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"apinaapinaapina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukan ja merkkijono-operaatioiden avulla voimme tehdä ohjelman, joka piirtää pyramidin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pyramidin kerrosten määrä"}]},{"type":"text","value":"\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"**\""}]},{"type":"text","value":"\n n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":" *\n ***\n *****\n *******\n *********\n ***********\n *************\n ***************\n *****************\n *******************"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukassa oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komento tulostaa rivin, jonka alussa on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" välilyöntiä ja sitten muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivi"}]},{"type":"text","value":" sisältö. Tämän jälkeen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivi"}]},{"type":"text","value":" loppuun lisätään kaksi tähteä ja muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" arvo vähenee yhdellä."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Monta jonoa","tmcname":"osa03-05a_monistetut_jonot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja määrän ja tulostaa sitten annettua merkkijonoa annetun määrän. Tulostuksen tulee tapahtua yhdelle riville yhteen pötköön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heippa"}]},{"type":"text","value":"\nAnna määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nheippaheippaheippaheippa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijonon-pituus-ja-indeksointi","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijonon pituus ja indeksointi"},{"type":"element","tagName":"a","properties":{"href":"#merkkijonon-pituus-ja-indeksointi","ariaLabel":"merkkijonon pituus ja indeksointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" palauttaa kokonaisluvun, joka on merkkijonon pituus merkkeinä. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(\"moi\")"}]},{"type":"text","value":" palauttaa 3, koska merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"moi"}]},{"type":"text","value":" on 3 merkkiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma tulostaa käyttäjän syöttämän merkkijonon \"alleviivattuna\" monistamalla merkkiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" syötteen pituuden mukaisen määrän:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Moi kaikki!\n-----------\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pituuteen lasketaan mukaan kaikki merkkijonossa olevat merkit, mukaan lukien välilyönnit. Esimerkiksi merkkijonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"moi moi"}]},{"type":"text","value":" pituus on 7."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Pidempi jono","tmcname":"osa03-05b_pidempi_jono"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjältä kaksi merkkijonoa ja tulostaa jonoista pidemmän (ts. sen, jossa on enemmän merkkejä). Jos jonot ovat yhtä pitkiä tulostetaan viesti \"Jonot ovat yhtä pitkät\""}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna jono 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moi"}]},{"type":"text","value":"\nAnna jono 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heippa"}]},{"type":"text","value":"\nheippa on pidempi"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna jono 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moikkelis koikkelis"}]},{"type":"text","value":"\nAnna jono 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heipparallaa"}]},{"type":"text","value":"\nmoikkelis koikkelis on pidempi"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna jono 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moi"}]},{"type":"text","value":"\nAnna jono 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"hei"}]},{"type":"text","value":"\nJonot ovat yhtä pitkät"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäinen merkkijonon merkki voidaan hakea operaattorin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":" avulla. Operaattori kirjoitetaan merkkijonon perään, ja hakasulkeiden väliin kirjoitetaan halutun merkin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"indeksi"}]},{"type":"text","value":" eli kohta merkkijonossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että merkkien indeksointi alkaa nollasta: ensimmäinen merkki on indeksin 0 kohdalla, toinen indeksin 1 kohdalla jne."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 436px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5fd25536ae63a100630f2df0e41f42a2/8574c/3_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 27.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAv0lEQVQY042QVw7DMAxDff/r5QrZ29mbxRPgoH9tAIK2RFJyXJ7nKstS0zRpXVc7p2lqyLJM9OM4tv7zPD/hEIJ933Vdl87z1DiO6vte3nvrwYj/+RxmwsK3bZtxCDiOwzgMhO/7Nh3DuaOhxwtdFEVKkuQNbNvWGmyGqes6Mw3DoHme7U6dF7AMdfSEVlUl970uwqZpVNe1GWBM1PifMIGAoKIoXgb4HeuDEEgQIjaEqREazPSXZXmHcw6DyPkAEHPQodT6lKAAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5fd25536ae63a100630f2df0e41f42a2/a0b58/3_2_1.webp 230w","/static/5fd25536ae63a100630f2df0e41f42a2/bfa8c/3_2_1.webp 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5fd25536ae63a100630f2df0e41f42a2/81c8e/3_2_1.png 230w","/static/5fd25536ae63a100630f2df0e41f42a2/8574c/3_2_1.png 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5fd25536ae63a100630f2df0e41f42a2/8574c/3_2_1.png","alt":"3 2 1","title":"3 2 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apina"}]},{"type":"text","value":"\na\np\nn"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska merkkijonon ensimmäinen merkki on indeksin 0 kohdalla, on viimeinen merkki vastaavasti indeksin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":" – 1 kohdalla. Esimerkiksi seuraava ohjelma tulostaa merkkijonon ensimmäisen ja viimeisen merkin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\nEnsimmäinen: t\nViimeinen: i"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma puolestaan käy läpi kaikki merkkijonon merkit vasemmalta oikealle silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\nt\ne\ns\nt\ni"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa merkkeihin voi viitata myös alkaen merkkijonon lopusta käyttämällä negatiivisia indeksejä. Merkkijonon viimeinen merkki on indeksin -1 kohdalla, toiseksi viimeinen indeksin -2 kohdalla jne. Onkin kätevämpi kirjoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"mjono[-1]"}]},{"type":"text","value":" kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"mjono[len(mjono) - 1]"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 436px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8a3725dd40636e3419c7e27e82163b5a/8574c/3_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 27.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVQY042RVw7DMAxDff/r5QrZ29lbxSPgoH+tAYKyJVFU4vI8t7IsbZomW9dVcZqmQpZlRj6OY+Wf5/kJRyHY992u67LzPG0cR/PeC+Rgiv85jmbEwiG+79uO49A9MO4ZuG2bOBiAMUEddxdFkSVJ8gr2fS9HdV3bPM82DIPEqqqSWNu2cg3zHragDnbfdmlAqGkaFcJsAPMt4a7rBAR4g4ui0MBlWcyxHgiCOAzTYFZClCbu5GnEHQOIYRzzUz7RE9BZcbNucQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8a3725dd40636e3419c7e27e82163b5a/a0b58/3_2_2.webp 230w","/static/8a3725dd40636e3419c7e27e82163b5a/bfa8c/3_2_2.webp 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8a3725dd40636e3419c7e27e82163b5a/81c8e/3_2_2.png 230w","/static/8a3725dd40636e3419c7e27e82163b5a/8574c/3_2_2.png 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8a3725dd40636e3419c7e27e82163b5a/8574c/3_2_2.png","alt":"3 2 2","title":"3 2 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän avulla aiempi ohjelma voidaan toteuttaa paremmin näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\nEnsimmäinen: t\nViimeinen: i"}]}]},{"type":"element","tagName":"h2","properties":{"id":"indexerror-string-index-out-of-range","style":"position:relative;"},"children":[{"type":"text","value":"IndexError: string index out of range"},{"type":"element","tagName":"a","properties":{"href":"#indexerror-string-index-out-of-range","ariaLabel":"indexerror string index out of range permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonon käsittelyssä tulee olla tarkkana indeksien kanssa. Jos viitataan merkkijonon ulkopuolelle, on seurauksena virheilmoitus "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"IndexError: string index out of range"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kymmenes merkki: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ohjelmoinnin perusteet"}]},{"type":"text","value":"\nKymmenes merkki: n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Traceback (most recent call last):\nFile \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nIndexError: string index out of range"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus virhetilanne johtuu ohjelmointivirheestä. Esimerkiksi merkkijonon viimeistä merkkiä tarkasteltaessa on yleistä indeksoida vahingossa yhtä liian pitkälle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen merkki: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska merkkijonojen indeksit alkavat nollasta, niin viimeinen merkki on indeksissä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(mjono) - 1"}]},{"type":"text","value":" eikä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(mjono)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On myös tilanteita, joissa ohjelman on syytä varautua siihen, että virheen lähde on käyttäjän antama syöte:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ensimmäinen merkki: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Merkkijono on tyhjä eli ensimmäistä merkkiä ei ole\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä koodissa tyhjä syöte (käyttäjä painaa ainoastaan Enter) aiheuttaisi virheen, ellei koodari olisi lisännyt tarkastusta tilanteen varalta."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Lopusta alkuun","tmcname":"osa03-05c_lopusta_alkuun"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten merkkijonon merkit allekkain käänteisessä järjestyksessä lopusta alkuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heippa"}]},{"type":"text","value":"\na\np\np\ni\ne\nh"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Toinen ja toiseksi viimeinen","tmcname":"osa03-06_toinen_ja_toiseksi_viimeinen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä sanan ja kertoo, ovatko sen toinen ja toiseksi viimeinen merkki samoja."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nToinen ja toiseksi viimeinen kirjain eroavat"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pascal"}]},{"type":"text","value":"\nToinen ja toiseksi viimeinen kirjain on a"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Risuaitaviiva","tmcname":"osa03-09_risuaitaviiva"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka piirtää käyttäjän määräämän levyisen risuaitaviivan."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leveys: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"###\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leveys: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"########\n"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Risuaitasuorakulmio","tmcname":"osa03-10_risuaitanelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna edellistä niin, että käyttäjä syöttää myös piirrettävien rivien määrän"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leveys: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nKorkeus: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n##########\n##########\n##########"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Alleviivaus","tmcname":"osa03-11_alleviivaus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjältä merkkijonoja ja tulostaa kunkin merkkijonon oheisen esimerkin mukaisesti alleviivattuna. Ohjelman suoritus päättyy, kun käyttäjä syöttää tyhjän merkkijonon, eli merkkijonon jonka pituus on 0."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Moi kaikki!\n-----------\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tämä on testijono"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Tämä on testijono\n-----------------\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"a\n-\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono:"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Tasaus oikeaan","tmcname":"osa03-12_tasaus_oikeaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sen niin, että tulostetuksi tulee tasan 20 merkkiä. Jos merkkijono on lyhyempi, alkuun tulee tarvittava määrä tähtiä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että syötetyssä merkkijonossa on enintään 20 merkkiä."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"**************python\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pitkämerkkijono"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*****pitkämerkkijono\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tosipitkämerkkijono"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*tosipitkämerkkijono\n"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Sanalaatikko","tmcname":"osa03-13_sanalaatikko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä sanaa ja tulostaa sanan tähtiraameihin, joissa sana on keskellä. Raamien leveys on 30 merkkiä, ja voit olettaa, että sana mahtuu raameihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Jos sanan pituus on pariton, voit tulostaa sanan kumpaan tahansa mahdollisista keskikohdista."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koe"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"******************************\n* koe *\n******************************\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"******************************\n* python *\n******************************\n"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"osajonot","style":"position:relative;"},"children":[{"type":"text","value":"Osajonot"},{"type":"element","tagName":"a","properties":{"href":"#osajonot","ariaLabel":"osajonot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonon "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"osajono"}]},{"type":"text","value":" muodostuu peräkkäisistä merkeistä, jotka ovat merkkijonon osana. Esimerkiksi merkkijonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"esimerkki"}]},{"type":"text","value":" osajonoja ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"esi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"imer"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkki"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme erottaa halutussa kohdassa olevan osajonon syntaksilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[a:b]"}]},{"type":"text","value":", mikä tarkoittaa, että osajono alkaa kohdasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" ja päättyy juuri ennen kohtaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":". Voimme ajatella alku- ja loppukohdan merkkien vasemmalle puolelle piirretyiksi viivoiksi alla olevan kuvan mukaisesti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 436px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/49c600ef1e17a304f10d29a288a47467/8574c/3_2_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 33.04347826086957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABNklEQVQoz42R3W7CMAxG+/4vtAuYxIaAq0mTENJumCgM2ib9SdOWlqTtmRI2xi4mzZLjWIpP7M+BEIKiKLDW0jQNu92OOI4Jw5AkSfzdvfm2cRzdcY1f+XiXB6fTyRdprcmyzHue5x4mkoTj8YgUgqapfxX/5YFSykMc0IFcl65bYwzG9iQiRcgM24/8x4Ku625J3/fejbWMwwDnE7QhnEPG6h2jtz7aastwllg7YMzl+rkxDMNAsF6vKcvSA123blQXq1LTHlfow4T28Ei7n6L2E/roiWL3QBtvkNLJ8yOR4wT3YjuQW0CapuhS08kX+nzFOXrmksy5pEtsuqTPl5TxBqUqpBQ3mNtFcL8tp5+D1nVNVVUY9YrJFuThlDqaoT5mXNIFnZyjxBu6aihLhZTSjxxFEZ/CpxdM7lQktAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/49c600ef1e17a304f10d29a288a47467/a0b58/3_2_3.webp 230w","/static/49c600ef1e17a304f10d29a288a47467/bfa8c/3_2_3.webp 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/49c600ef1e17a304f10d29a288a47467/81c8e/3_2_3.png 230w","/static/49c600ef1e17a304f10d29a288a47467/8574c/3_2_3.png 436w"],"sizes":"(max-width: 436px) 100vw, 436px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/49c600ef1e17a304f10d29a288a47467/8574c/3_2_3.png","alt":"3 2 3","title":"3 2 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki esittelee osajonojen hakemista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saippuakauppias\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# jos alkukohta puuttuu, se on oletuksena 0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# jos loppukohta puuttuu, se on oletuksena merkkijonon pituus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sai\npuakau\nsai\npuakauppias"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Puoliavoimet välit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonojen käsittelyssä väli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[a:b]"}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puoliavoin"}]},{"type":"text","value":" eli alkukohta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\nkuuluu väliin mutta loppukohta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":" ei kuulu väliin. Miksi näin?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän ei ole syvällistä syytä, vaan kyseessä on käytäntö, joka esiintyy\nmonessa ohjelmointikielessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi etu tästä on, että osajonon pituus saadaan helposti laskettua kaavalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b-a"}]},{"type":"text","value":".\nToisaalta täytyy aina muistaa, että kohdassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":" oleva merkki\nei tule mukaan osajonoon."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Osajonot 1","tmcname":"osa03-07_osajonot1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen ensimmäisestä merkistä alkavat osajonot pituusjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\nt\nte\ntes\ntest\ntesti"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Osajonot 2","tmcname":"osa03-08_osajonot2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen viimeiseen merkkiin päättyvät osajonot pituusjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":"\ni\nti\nsti\nesti\ntesti"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"osajonon-etsiminen","style":"position:relative;"},"children":[{"type":"text","value":"Osajonon etsiminen"},{"type":"element","tagName":"a","properties":{"href":"#osajonon-etsiminen","ariaLabel":"osajonon etsiminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme tutkia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":"-operaattorin avulla, onko merkkijonossa tiettyä osajonoa.\nLauseke "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a in b"}]},{"type":"text","value":" on tosi, jos merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":" on osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"t\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"x\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"est\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ets\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse\nTrue\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma antaa käyttäjän etsiä merkkijonon osajonoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saippuakauppias\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mitä etsit? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Löytyi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kaup"}]},{"type":"text","value":"\nLöytyi\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"abc"}]},{"type":"text","value":"\nEi löytynyt\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ippu"}]},{"type":"text","value":"\nLöytyi\n..."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Löytyvätkö vokaalit","tmcname":"osa03-13b_loytyvatko_vokaalit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten tiedon löytyvätkö vokaalit a, e ja o merkkijonosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että merkkijono on syötetty kokonaan pienillä kirjaimilla. Katso mallia esimerkkitulostuksesta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkitulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"heippa sulle"}]},{"type":"text","value":"\na löytyy\ne löytyy\no ei löydy"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"moi"}]},{"type":"text","value":"\na ei löydy\ne ei löydy\no löytyy"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattori "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" palauttaa tiedon osajonon esiintymisestä, muttei tietoa siitä, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mistä"}]},{"type":"text","value":" se löytyy. Tätä varten löytyy Pythonin merkkijonojen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodi"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":", joka saa parametrikseen etsittävän osajonon ja palauttaa joko ensimmäisen indeksin, josta osajono löytyy, tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":", jos osajonoa ei löydy merkkijonosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodia käytetään seuraavasti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 227px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5ce89dd815f6b20f038005e995598c4f/9b5be/3_2_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.11453744493392%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB00lEQVQoz3VTaW/iQAzN//835QNdFRSQEBINhxCkFWTJQdE2J4TcISF5KzuwBbYdybJn4tjvPc8IeFx13RiFVcVeURT8en5GTxQxHA7RbrcxGAzYNFW9/FazCdfg0Tjp0iNOEli2DdO24bguTNOE5Th85gfBXa5wV+CxaJoCYQgkCZBlQJ4DUQTEcRPTGX2jfRw3CK9Mqwu921VlGU5pivp8pgRURYEizxFTk7rG+XRqGIQhSmpOBU9FgclsBlXTsFFV9r83G4RRhO3HB3TDYP/2/o6lLOPTNKFpGtaKAsMwsFguWWN9u20ol1mGP7qOz90OnmWxObsd4uMRxyDAYb+H67qwLIt9EkWsl+26cDyPG5RliTAIbigTdLLjsdGG4H8jAS/6TpqRftd83wdIFkK43+8RpSn8C6Iky5DmOc5U8IfpB74P3/OQHA5IaRhVxagZYafTQeflhe9Xt9tFv9+H9PrKunw7eQDT2QxPrRZGkoTpdAoCdc1lykmSQNd1TCYTyLKMgqZZFP9dp9vbQPkEgrS9bSg0suRYrVaYz+fsvx5N/fCIvvY06fF4DNu27xoJFEiShF6vh9FoxM9qsVj8SJeQEzJRFDm/1WphvV7/o/wXf9aQyTTf/MkAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5ce89dd815f6b20f038005e995598c4f/7d72c/3_2_4.webp 227w"],"sizes":"(max-width: 227px) 100vw, 227px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5ce89dd815f6b20f038005e995598c4f/9b5be/3_2_4.png 227w"],"sizes":"(max-width: 227px) 100vw, 227px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5ce89dd815f6b20f038005e995598c4f/9b5be/3_2_4.png","alt":"3 2 4","title":"3 2 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä metodin käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"t\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"x\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"est\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ets\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n-1\n1\n-1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös laajentaa hakuohjelmaa näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saippuakauppias\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mitä etsit? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Löytyi kohdasta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kaup"}]},{"type":"text","value":"\nLöytyi kohdasta 7\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"abc"}]},{"type":"text","value":"\nEi löytynyt\nMitä etsit? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ippu"}]},{"type":"text","value":"\nLöytyi kohdasta 2\n..."}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Metodi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonon sisältä merkkijonoa etsivä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":" on siis "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodi"}]},{"type":"text","value":". Metodit ovat sukua jo meille tutuille asioille eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"funktioille"}]},{"type":"text","value":". Metodit ovatkin eräänlaisia funktioita, mutta niiden suorittama operaatio kohdistuu siihen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioon"}]},{"type":"text","value":", jonka kautta metodia kutsutaan, eli joka esiintyy metodikutsun alussa ennen metodin nimeä. Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":" tapauksessa oliona on merkkijono, jonka osajonoa etsitään."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ensimmäisen osajonon haku","tmcname":"osa03-13c_osajonon_haku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä merkkijonoa ja yksittäistä merkkiä. Ohjelma tulostaa merkkijonosta löytyvän ensimmäisen kolmen merkin pituisen osajonon, jonka alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apinatalo"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\napi"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"banaani"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"\nnaa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tomaatti"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"x"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"n"}]}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Kaikkien osajonojen haku","tmcname":"osa03-14_osajonojen_haku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee edellisestä ohjelmasta laajennettu versio, joka tulostaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kaikki merkkijonon sisältämät kolmen merkin pituiset osajonot"}]},{"type":"text","value":", joiden alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apinatalo"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\napi\nata\nalo"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"banaani"}]},{"type":"text","value":"\nMerkki: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"\nnaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" seuraava esimerkki saattaa antaa jotain inspiraatiota eräästä tavasta miten tätä tehtävää voi lähestyä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apinatalo"}]},{"type":"text","value":"\napinatalo\ninatalo\natalo\nalo\no"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Toinen esiintymä","tmcname":"osa03-15_toinen_esiintyma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka etsii merkkijonosta osajonon toisen esiintymän. Jos toista (tai edes ensimmäistä) esiintymää ei löydy, ohjelma tulostaa tästä tiedon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määritellään tässä yhteydessä, että esiintymät "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"eivät"}]},{"type":"text","value":" voi mennä päällekkäin, merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aaaa"}]},{"type":"text","value":" osajonon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aa"}]},{"type":"text","value":" toinen esiintymä löytyy siis indeksin 2 kohdalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"abcabc"}]},{"type":"text","value":"\nAnna osajono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ab"}]},{"type":"text","value":"\nOsajonon toinen esiintymä on kohdassa 3."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"saippuakauppias"}]},{"type":"text","value":"\nAnna osajono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"\nOsajonon toinen esiintymä on kohdassa 6."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aybabtu"}]},{"type":"text","value":"\nAnna osajono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ba"}]},{"type":"text","value":"\nOsajono ei esiinny merkkijonossa kahdesti."}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää operaattoreita + ja * merkkijonojen kanssa
    • \n
    • Osaat laskea merkkijonon pituuden
    • \n
    • Tiedät, mitä tarkoittaa merkkijonon indeksointi
    • \n
    • Osaat etsiä osajonoja merkkijonosta
    • \n

    Merkkijono-operaatiot

    Merkkijonojen yhdistäminen tapahtuu +-operaattorin avulla:

    alku = \"esi\"\nloppu = \"merkki\"\nsana = alku+loppu\nprint(sana)

    esimerkki

    Myös *-operaattoria voidaan käyttää merkkijonojen yhteydessä. Jos toinen operandi kertolaskussa on merkkijono ja toinen kokonaisluku, saadaan merkkijonoa monistettua annettu määrä. Esimerkiksi:

    sana = \"apina\"\nprint(sana*3)

    apinaapinaapina

    Silmukan ja merkkijono-operaatioiden avulla voimme tehdä ohjelman, joka piirtää pyramidin:

    n = 10 # pyramidin kerrosten määrä\nrivi = \"*\"\n\nwhile n > 0:\n    print(\" \" * n + rivi)\n    rivi += \"**\"\n    n -= 1

    Ohjelman tulostus on seuraava:

              *\n         ***\n        *****\n       *******\n      *********\n     ***********\n    *************\n   ***************\n  *****************\n *******************

    Silmukassa oleva print-komento tulostaa rivin, jonka alussa on n välilyöntiä ja sitten muuttujan rivi sisältö. Tämän jälkeen muuttujan rivi loppuun lisätään kaksi tähteä ja muuttujan n arvo vähenee yhdellä.

    Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja määrän ja tulostaa sitten annettua merkkijonoa annetun määrän. Tulostuksen tulee tapahtua yhdelle riville yhteen pötköön.

    Esimerkkisuoritus:

    Anna merkkijono: heippa\nAnna määrä: 4\nheippaheippaheippaheippa

    Merkkijonon pituus ja indeksointi

    Funktio len palauttaa kokonaisluvun, joka on merkkijonon pituus merkkeinä. Esimerkiksi len(\"moi\") palauttaa 3, koska merkkijonossa moi on 3 merkkiä.

    Seuraava ohjelma tulostaa käyttäjän syöttämän merkkijonon \"alleviivattuna\" monistamalla merkkiä - syötteen pituuden mukaisen määrän:

    mjono = input(\"Anna merkkijono: \")\nprint(mjono)\nprint(\"-\"*len(mjono))

    Anna merkkijono: Moi kaikki!

    \nMoi kaikki!\n-----------\n

    Pituuteen lasketaan mukaan kaikki merkkijonossa olevat merkit, mukaan lukien välilyönnit. Esimerkiksi merkkijonon moi moi pituus on 7.

    Kirjoita ohjelma, joka kysyy käyttäjältä kaksi merkkijonoa ja tulostaa jonoista pidemmän (ts. sen, jossa on enemmän merkkejä). Jos jonot ovat yhtä pitkiä tulostetaan viesti \"Jonot ovat yhtä pitkät\"

    Esimerkkisuorituksia:

    Anna jono 1: moi\nAnna jono 2: heippa\nheippa on pidempi

    Anna jono 1: moikkelis koikkelis\nAnna jono 2: heipparallaa\nmoikkelis koikkelis on pidempi

    Anna jono 1: moi\nAnna jono 2: hei\nJonot ovat yhtä pitkät

    Yksittäinen merkkijonon merkki voidaan hakea operaattorin [] avulla. Operaattori kirjoitetaan merkkijonon perään, ja hakasulkeiden väliin kirjoitetaan halutun merkin indeksi eli kohta merkkijonossa.

    Huomaa, että merkkien indeksointi alkaa nollasta: ensimmäinen merkki on indeksin 0 kohdalla, toinen indeksin 1 kohdalla jne.

    \n \n \n \n \n \n \"3\n \n \n

    Tämän avulla aiempi ohjelma voidaan toteuttaa paremmin näin:

    mjono = input(\"Anna merkkijono: \")\nprint(\"Ensimmäinen: \" + mjono[0])\nprint(\"Viimeinen: \" + mjono[-1])

    Anna merkkijono: testi\nEnsimmäinen: t\nViimeinen: i

    IndexError: string index out of range

    Merkkijonon käsittelyssä tulee olla tarkkana indeksien kanssa. Jos viitataan merkkijonon ulkopuolelle, on seurauksena virheilmoitus IndexError: string index out of range:

    mjono = input(\"Anna merkkijono: \")\nprint(\"Kymmenes merkki: \" + mjono[9])

    Anna merkkijono: ohjelmoinnin perusteet\nKymmenes merkki: n

    Anna merkkijono: python

    Traceback (most recent call last):\nFile \"\", line 1, in \nIndexError: string index out of range

    Joskus virhetilanne johtuu ohjelmointivirheestä. Esimerkiksi merkkijonon viimeistä merkkiä tarkasteltaessa on yleistä indeksoida vahingossa yhtä liian pitkälle:

    mjono = input(\"Anna merkkijono: \")\nprint(\"Viimeinen merkki: \" + mjono[len(mjono)])

    Koska merkkijonojen indeksit alkavat nollasta, niin viimeinen merkki on indeksissä len(mjono) - 1 eikä len(mjono).

    On myös tilanteita, joissa ohjelman on syytä varautua siihen, että virheen lähde on käyttäjän antama syöte:

    mjono = input(\"Anna merkkijono: \")\nif len(mjono) > 0:\n    print(\"Ensimmäinen merkki: \" + mjono[0])\nelse:\n    print(\"Merkkijono on tyhjä eli ensimmäistä merkkiä ei ole\")

    Tässä koodissa tyhjä syöte (käyttäjä painaa ainoastaan Enter) aiheuttaisi virheen, ellei koodari olisi lisännyt tarkastusta tilanteen varalta.

    Kirjoita ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten merkkijonon merkit allekkain käänteisessä järjestyksessä lopusta alkuun.

    Esimerkkisuoritus:

    Anna merkkijono: heippa\na\np\np\ni\ne\nh

    Tee ohjelma, joka kysyy käyttäjältä sanan ja kertoo, ovatko sen toinen ja toiseksi viimeinen merkki samoja.

    Anna sana: python\nToinen ja toiseksi viimeinen kirjain eroavat

    Anna sana: pascal\nToinen ja toiseksi viimeinen kirjain on a

    Tee ohjelma, joka piirtää käyttäjän määräämän levyisen risuaitaviivan.

    Leveys: 3

    \n###\n

    Leveys: 8

    \n########\n

    Laajenna edellistä niin, että käyttäjä syöttää myös piirrettävien rivien määrän

    Leveys: 10\nKorkeus: 3\n##########\n##########\n##########

    Tee ohjelma, joka pyytää käyttäjältä merkkijonoja ja tulostaa kunkin merkkijonon oheisen esimerkin mukaisesti alleviivattuna. Ohjelman suoritus päättyy, kun käyttäjä syöttää tyhjän merkkijonon, eli merkkijonon jonka pituus on 0.

    Anna merkkijono: Moi kaikki!

    \nMoi kaikki!\n-----------\n

    Anna merkkijono: Tämä on testijono

    \nTämä on testijono\n-----------------\n

    Anna merkkijono: a

    \na\n-\n

    Anna merkkijono:

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sen niin, että tulostetuksi tulee tasan 20 merkkiä. Jos merkkijono on lyhyempi, alkuun tulee tarvittava määrä tähtiä *.

    Voit olettaa, että syötetyssä merkkijonossa on enintään 20 merkkiä.

    Sana: python

    \n**************python\n

    Sana: pitkämerkkijono

    \n*****pitkämerkkijono\n

    Sana: tosipitkämerkkijono

    \n*tosipitkämerkkijono\n

    Tee ohjelma, joka kysyy käyttäjältä sanaa ja tulostaa sanan tähtiraameihin, joissa sana on keskellä. Raamien leveys on 30 merkkiä, ja voit olettaa, että sana mahtuu raameihin.

    Huom! Jos sanan pituus on pariton, voit tulostaa sanan kumpaan tahansa mahdollisista keskikohdista.

    Sana: koe

    \n******************************\n*            koe             *\n******************************\n

    Sana: python

    \n******************************\n*           python           *\n******************************\n

    Osajonot

    Merkkijonon osajono muodostuu peräkkäisistä merkeistä, jotka ovat merkkijonon osana. Esimerkiksi merkkijonon esimerkki osajonoja ovat esi, imer ja merkki.

    Voimme erottaa halutussa kohdassa olevan osajonon syntaksilla [a:b], mikä tarkoittaa, että osajono alkaa kohdasta a ja päättyy juuri ennen kohtaa b. Voimme ajatella alku- ja loppukohdan merkkien vasemmalle puolelle piirretyiksi viivoiksi alla olevan kuvan mukaisesti:

    \n \n \n \n \n \n \"3\n \n \n

    Seuraava esimerkki esittelee osajonojen hakemista:

    mjono = \"saippuakauppias\"\n\nprint(mjono[0:3])\nprint(mjono[4:10])\n\n# jos alkukohta puuttuu, se on oletuksena 0\nprint(mjono[:3])\n\n# jos loppukohta puuttuu, se on oletuksena merkkijonon pituus\nprint(mjono[4:])

    sai\npuakau\nsai\npuakauppias

    Merkkijonojen käsittelyssä väli [a:b] on puoliavoin eli alkukohta a\nkuuluu väliin mutta loppukohta b ei kuulu väliin. Miksi näin?

    Tähän ei ole syvällistä syytä, vaan kyseessä on käytäntö, joka esiintyy\nmonessa ohjelmointikielessä.

    Yksi etu tästä on, että osajonon pituus saadaan helposti laskettua kaavalla b-a.\nToisaalta täytyy aina muistaa, että kohdassa b oleva merkki\nei tule mukaan osajonoon.

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen ensimmäisestä merkistä alkavat osajonot pituusjärjestyksessä.

    Esimerkkitulostus:

    Anna merkkijono: testi\nt\nte\ntes\ntest\ntesti

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten kaikki sen viimeiseen merkkiin päättyvät osajonot pituusjärjestyksessä.

    Esimerkkitulostus:

    Anna merkkijono: testi\ni\nti\nsti\nesti\ntesti

    Osajonon etsiminen

    Voimme tutkia in-operaattorin avulla, onko merkkijonossa tiettyä osajonoa.\nLauseke a in b on tosi, jos merkkijonossa b on osajono a.

    Esimerkiksi

    mjono = \"testi\"\n\nprint(\"t\" in mjono)\nprint(\"x\" in mjono)\nprint(\"est\" in mjono)\nprint(\"ets\" in mjono)

    True\nFalse\nTrue\nFalse

    Seuraava ohjelma antaa käyttäjän etsiä merkkijonon osajonoja:

    mjono = \"saippuakauppias\"\n\nwhile True:\n    osa = input(\"Mitä etsit? \")\n    if osa in mjono:\n        print(\"Löytyi\")\n    else:\n        print(\"Ei löytynyt\")

    Mitä etsit? kaup\nLöytyi\nMitä etsit? abc\nEi löytynyt\nMitä etsit? ippu\nLöytyi\n...

    Tee ohjelma, joka kysyy käyttäjältä merkkijonon ja tulostaa sitten tiedon löytyvätkö vokaalit a, e ja o merkkijonosta.

    Voit olettaa, että merkkijono on syötetty kokonaan pienillä kirjaimilla. Katso mallia esimerkkitulostuksesta.

    Esimerkkitulostus:

    Anna merkkijono: heippa sulle\na löytyy\ne löytyy\no ei löydy

    Anna merkkijono: moi\na ei löydy\ne ei löydy\no löytyy

    Operaattori in palauttaa tiedon osajonon esiintymisestä, muttei tietoa siitä, mistä se löytyy. Tätä varten löytyy Pythonin merkkijonojen metodi find, joka saa parametrikseen etsittävän osajonon ja palauttaa joko ensimmäisen indeksin, josta osajono löytyy, tai -1, jos osajonoa ei löydy merkkijonosta.

    Metodia käytetään seuraavasti:

    \n \n

    Merkkijonon sisältä merkkijonoa etsivä find on siis metodi. Metodit ovat sukua jo meille tutuille asioille eli funktioille. Metodit ovatkin eräänlaisia funktioita, mutta niiden suorittama operaatio kohdistuu siihen olioon, jonka kautta metodia kutsutaan, eli joka esiintyy metodikutsun alussa ennen metodin nimeä. Metodin find tapauksessa oliona on merkkijono, jonka osajonoa etsitään.

    Tee ohjelma, joka kysyy käyttäjältä merkkijonoa ja yksittäistä merkkiä. Ohjelma tulostaa merkkijonosta löytyvän ensimmäisen kolmen merkin pituisen osajonon, jonka alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen.

    Sana: apinatalo\nMerkki: a\napi

    Sana: banaani\nMerkki: n\nnaa

    Sana: tomaatti\nMerkki: x

    Sana: python\nMerkki: n

    Tee edellisestä ohjelmasta laajennettu versio, joka tulostaa kaikki merkkijonon sisältämät kolmen merkin pituiset osajonot, joiden alkukirjain on käyttäjän syöttämä merkki. Voit olettaa, että merkkijono on vähintään kolmen merkin pituinen.

    Sana: apinatalo\nMerkki: a\napi\nata\nalo

    Sana: banaani\nMerkki: n\nnaa

    Vihje seuraava esimerkki saattaa antaa jotain inspiraatiota eräästä tavasta miten tätä tehtävää voi lähestyä

    sana = input(\"Sana: \")\nwhile True:\n    if len(sana) == 0:\n        break\n    print(sana)\n    sana = sana[2:]

    Sana: apinatalo\napinatalo\ninatalo\natalo\nalo\no

    Tee ohjelma, joka etsii merkkijonosta osajonon toisen esiintymän. Jos toista (tai edes ensimmäistä) esiintymää ei löydy, ohjelma tulostaa tästä tiedon.

    Määritellään tässä yhteydessä, että esiintymät eivät voi mennä päällekkäin, merkkijonossa aaaa osajonon aa toinen esiintymä löytyy siis indeksin 2 kohdalta.

    Muutama esimerkkisuoritus:

    Anna merkkijono: abcabc\nAnna osajono: ab\nOsajonon toinen esiintymä on kohdassa 3.

    Anna merkkijono: saippuakauppias\nAnna osajono: a\nOsajonon toinen esiintymä on kohdassa 6.

    Anna merkkijono: aybabtu\nAnna osajono: ba\nOsajono ei esiinny merkkijonossa kahdesti.

    ","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-3/2-merkkijonojen-kasittely.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-3/3-lisaa-silmukoista/page-data.json b/page-data/osa-3/3-lisaa-silmukoista/page-data.json index 5f20ea16c..92b3ed637 100644 --- a/page-data/osa-3/3-lisaa-silmukoista/page-data.json +++ b/page-data/osa-3/3-lisaa-silmukoista/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-3/3-lisaa-silmukoista", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät milloin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komentoa tarvitaan silmukan keskeyttämiseen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat siirtyä silmukan seuraavalle kierrokselle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"-komennolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät sisäkkäisen silmukan toiminnan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"break-komento","style":"position:relative;"},"children":[{"type":"text","value":"break-komento"},{"type":"element","tagName":"a","properties":{"href":"#break-komento","ariaLabel":"break komento permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aiemmin silmukoiden yhteydessä tutustuttiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komentoon. Komennolla voidaan katkaista silmukan suoritus välittömästi. Tyypillinen esimerkki komennon käytöstä on silmukka, jossa kysytään käyttäjältä syötteitä, ja suoritus päättyy, kun käyttäjä antaa tietyn syötteen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavaan toiminnallisuuteen päästään myös ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komentoa sopivan ehdon avulla. Alla olevat esimerkit toteuttavat molemmat ohjelman, joka laskee käyttäjän syötteiden summan kunnes käyttäjä syöttää luvun -1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 1. versio break-komennon avulla"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Summa on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 2. versio ilman break-komentoa"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Summa on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molempien ohjelmien esimerkkisuoritus voisi näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma on 14"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molemmat versiot ovat toiminnallisuudeltaan siis käytännössä samanlaisia. Ensimmäinen tapa on kuitenkin usein helpompi, koska ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku == -1"}]},{"type":"text","value":" riittää kirjoittaa vain kerran eikä muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" tarvitse alustaa silmukan ulkopuolella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":" voidaan käyttää myös silloin, kun silmukassa on annettu jokin muu ehto kuin pelkkä totuusarvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":". Esimerkiksi seuraava silmukka jatkuu niin kauan, kuin annettujen lukujen summa on enintään 100. Kuitenkin silmukka katkeaa myös, jos käyttäjä antaa luvun -1."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Summa on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mahdollisia suorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma on 44"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"21"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"17"}]},{"type":"text","value":"\nSumma on 106"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisessä tapauksessa silmukka päättyy, koska käyttäjä antaa luvun -1. Toisessa tapauksessa silmukka päättyy, koska lukujen summa on yli 100."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisaalta voisimme toteuttaa vastaavasti toimivan silmukan myös näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Summa on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"continue-komento","style":"position:relative;"},"children":[{"type":"text","value":"continue-komento"},{"type":"element","tagName":"a","properties":{"href":"#continue-komento","ariaLabel":"continue komento permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" on toinen tapa vaikuttaa silmukan suoritukseen. Kun silmukan sisällä tulee vastaan komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":", hyppää suoritus välittömästi silmukan alkuun riville, jossa on silmukan ehto. Tämän jälkeen silmukan suoritus jatkuu normaalisti ehdon tarkastamisella:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 546px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e4c20762d6e18dc80431b1926dfe4222/76aed/3_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 78.69565217391303%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB0ElEQVQ4y41U2U7DMBD0/38QbxWCByjiCalqKb3SM4l7pjmcNMegcevghqpgybFjz653dscWuLSqqpCmaT23x1trxN7aF5yY7vt+vWl3e60sS/0vpaznNlaYE7IsQ6/XQ1EUaDY7EtP6/T7iOP61LngKIxsMBpjP53rk/+Fw0D1Jkhq8XC4xnU4xGo30OBwO9ZrBhmF4phxFEaT04bkupO8jjiMdFaMmkO10OmGz2eio1msJ13XheR6Ox6Nmxb7f738oFxXwNRjBJkdQEAR1SmyKk7GDLM2u0kKsSLMTVLSH8jvovD4gW3dRFenFYX7lkBEmKsFyN8PjWwufiy5Unlw7PAQh0lAicZ4guy2o6TOqPKppGofMNSMM4xCdxQfavRe8D9sI1DklRVlgt9tBKKVuVPU8siAskpHHvcb0jMdjCJMXGnGxqspaJnn+Q7mpSWJpY2vwnMPL7TBlN1U1hqyirUU6MVhW1Y5eO+THcRytQWqLI/+ZChrSyHbIvG63W0wmE61BapIseTCLJkiLelqtVnqTcwqbhnTK/aZDGlLUxFKPBsux1iFPYJVI5dbVsykTQyzZNa+lsBfuPQ5Nx38+DtyczWb/fr6Ya1JsHvQNn8ja+ah5+/cAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e4c20762d6e18dc80431b1926dfe4222/a0b58/3_3.webp 230w","/static/e4c20762d6e18dc80431b1926dfe4222/bc10c/3_3.webp 460w","/static/e4c20762d6e18dc80431b1926dfe4222/a3666/3_3.webp 546w"],"sizes":"(max-width: 546px) 100vw, 546px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e4c20762d6e18dc80431b1926dfe4222/81c8e/3_3.png 230w","/static/e4c20762d6e18dc80431b1926dfe4222/08a84/3_3.png 460w","/static/e4c20762d6e18dc80431b1926dfe4222/76aed/3_3.png 546w"],"sizes":"(max-width: 546px) 100vw, 546px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e4c20762d6e18dc80431b1926dfe4222/76aed/3_3.png","alt":"3 3","title":"3 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma laskee summaan mukaan vain luvut, jotka ovat pienempiä kuin 10. Jos luku on 10 tai suurempi, suoritus palaa silmukan alkuun eikä lukua lisätä summaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku, -1 lopettaa: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" luku\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Summa on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"99"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna luku, -1 lopettaa: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma on 16"}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-silmukat","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset silmukat"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-silmukat","ariaLabel":"sisakkaiset silmukat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukoita voidaan kirjoittaa toisten silmukoiden sisään. Esimerkiksi seuraava ohjelma kysyy käyttäjältä silmukassa luvun ja tulostaa sen avulla lukujonon toisen silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n4\n3\n2\n1\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n3\n2\n1\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\n6\n5\n4\n3\n2\n1\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kun silmukoita on sisäkkäin, komennot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" vaikuttavat vain sisimpään silmukkaan. Esimerkiksi voisimme toteuttaa äskeisen ohjelman vähän eri tavalla myös näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt jälkimmäinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"-komento keskeyttää vain sisimmän silmukan, joka tulostaa lukuja, jos ehto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku <= 0"}]},{"type":"text","value":" pätee."}]},{"type":"element","tagName":"h2","properties":{"id":"silmukoiden-apumuuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Silmukoiden apumuuttujat"},{"type":"element","tagName":"a","properties":{"href":"#silmukoiden-apumuuttujat","ariaLabel":"silmukoiden apumuuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme jo monesti käyttäneet silmukoissa apu- tai indeksimuuttujaa, jonka arvo kasvaa tai laskee jokaisella silmukan lohkon suorituskerralla. Esimerkiksi seuraava ohjelma tulostaa parilliset luvut käyttäjän haluamaan lukuun asti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"raja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ni "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" raja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\n0\n2\n4\n6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Apumuuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"i"}]},{"type":"text","value":" arvo on silmukkaan ensimmäistä kertaa mentäessä 0 ja se kasvaa jokaisella silmukan suorituskerralla kahdella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäkkäisten silmukoiden tapauksessa on tilanteita, joissa sisempi silmukka tarvitsee oman indeksimuuttujansa. Seuraava ohjelma tulostaa käyttäjän antamaan lukuun perustuvan \"lukupyramidin\":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" \""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n0 1 2 3 4\n0 1 2 3\n0 1 2\n0 1\n0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt sisemmässä silmukassa on käytössä apumuuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"i"}]},{"type":"text","value":", jonka arvo on aina sisempään silmukkaan mentäessä 0. Muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"i"}]},{"type":"text","value":" arvo kasvaa yhden välein, kunnes se on yhtä suuri kuin muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" nykyinen arvo, joka taas vähenee ulomman silmukan vuoksi kohti nollaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisempi silmukka tulostaa apumuuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"i"}]},{"type":"text","value":" arvot välilyönnillä eroteltuna samalle riville. Kun sisempi silmukka päättyy, tulostetaan aina rivinvaihto komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et ole täysin varma, että ymmärrät esimerkkikoodin toiminnan, kokeile kopioida koodi Python Tutorin "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattoriin"}]},{"type":"text","value":" ja tarkastele, mitä ohjelma tulostaa ja miten muuttujien arvot vaihtuvat koodin edetessä."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Kertotaulut","tmcname":"osa03-15b_kertotaulut"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä positiivisen kokonaisluvun. Ohjelma tulostaa esimerkkitulostuksen mukaisesti kertolaskuja lukuun asti:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: 2\n1 x 1 = 1\n1 x 2 = 2\n2 x 1 = 2\n2 x 2 = 4"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: 3\n1 x 1 = 1\n1 x 2 = 2\n1 x 3 = 3\n2 x 1 = 2\n2 x 2 = 4\n2 x 3 = 6\n3 x 1 = 3\n3 x 2 = 6\n3 x 3 = 9"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Sanojen ensimmäiset kirjaimet","tmcname":"osa03-16_sanojen_ensimmaiset_kirjaimet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lauseen. Ohjelma tulostaa jokaisen sanan ensimmäisen kirjaimen ruudulle omille riveilleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lause: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vesihiisi sihisi hississä"}]},{"type":"text","value":"\nV\ns\nh"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Kertomat","tmcname":"osa03-17_kertomat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun. Jos käyttäjä syöttää negatiivisen luvun tai nollan, ohjelman suoritus päättyy. Muuten ohjelma tulostaa luvun kertoman."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertoma lasketaan kertomalla keskenään luku ja kaikki sitä pienemmät positiiviset kokonaisluvut. Esim. luvun 5 kertoma on 1 * 2 * 3 * 4 * 5 = 120."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLuvun 3 kertoma on 6\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nLuvun 4 kertoma on 24\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nKiitos ja moi!"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLuvun 1 kertoma on 1\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nKiitos ja moi!"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Parit ympäri","tmcname":"osa03-18_parit_ympari"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa luvut 1:stä käyttäjän antamaan lukuun. Luvut on kuitenkin käännetty pareittain ympäri."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n2\n1\n4\n3\n5"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\n2\n1\n4\n3\n6\n5"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Vuorotellen","tmcname":"osa03-19_vuorotellen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä luvun ja tulostaa sitten lukuja vuorotellen seuraavien esimerkkien mukaisesti."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n1\n5\n2\n4\n3"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\n1\n6\n2\n5\n3\n4"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Ymmärrät milloin break-komentoa tarvitaan silmukan keskeyttämiseen
    • \n
    • Osaat siirtyä silmukan seuraavalle kierrokselle continue-komennolla
    • \n
    • Ymmärrät sisäkkäisen silmukan toiminnan
    • \n

    break-komento

    Aiemmin silmukoiden yhteydessä tutustuttiin break-komentoon. Komennolla voidaan katkaista silmukan suoritus välittömästi. Tyypillinen esimerkki komennon käytöstä on silmukka, jossa kysytään käyttäjältä syötteitä, ja suoritus päättyy, kun käyttäjä antaa tietyn syötteen.

    Vastaavaan toiminnallisuuteen päästään myös ilman break-komentoa sopivan ehdon avulla. Alla olevat esimerkit toteuttavat molemmat ohjelman, joka laskee käyttäjän syötteiden summan kunnes käyttäjä syöttää luvun -1:

    # 1. versio break-komennon avulla\n\nsumma = 0\n\nwhile True:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku == -1:\n        break\n    summa += luku\n\nprint (f\"Summa on {summa}\")
    # 2. versio ilman break-komentoa\n\nsumma = 0\nluku = 0\n\nwhile luku != -1:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku != -1:\n        summa += luku\n\nprint (f\"Summa on {summa}\")

    Molempien ohjelmien esimerkkisuoritus voisi näyttää seuraavalta:

    Anna luku, -1 lopettaa: 2\nAnna luku, -1 lopettaa: 4\nAnna luku, -1 lopettaa: 5\nAnna luku, -1 lopettaa: 3\nAnna luku, -1 lopettaa: -1\nSumma on 14

    Molemmat versiot ovat toiminnallisuudeltaan siis käytännössä samanlaisia. Ensimmäinen tapa on kuitenkin usein helpompi, koska ehto luku == -1 riittää kirjoittaa vain kerran eikä muuttujaa luku tarvitse alustaa silmukan ulkopuolella.

    Komentoa break voidaan käyttää myös silloin, kun silmukassa on annettu jokin muu ehto kuin pelkkä totuusarvo True. Esimerkiksi seuraava silmukka jatkuu niin kauan, kuin annettujen lukujen summa on enintään 100. Kuitenkin silmukka katkeaa myös, jos käyttäjä antaa luvun -1.

    summa = 0\n\nwhile summa <= 100:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku == -1:\n        break\n    summa += luku\n\nprint (f\"Summa on {summa}\")

    Mahdollisia suorituksia:

    Anna luku, -1 lopettaa: 15\nAnna luku, -1 lopettaa: 8\nAnna luku, -1 lopettaa: 21\nAnna luku, -1 lopettaa: -1\nSumma on 44

    Anna luku, -1 lopettaa: 15\nAnna luku, -1 lopettaa: 8\nAnna luku, -1 lopettaa: 21\nAnna luku, -1 lopettaa: 45\nAnna luku, -1 lopettaa: 17\nSumma on 106

    Ensimmäisessä tapauksessa silmukka päättyy, koska käyttäjä antaa luvun -1. Toisessa tapauksessa silmukka päättyy, koska lukujen summa on yli 100.

    Toisaalta voisimme toteuttaa vastaavasti toimivan silmukan myös näin:

    summa = 0\n\nwhile True:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku == -1:\n        break\n    summa += luku\n    if summa > 100:\n        break\n\nprint (f\"Summa on {summa}\")

    continue-komento

    Komento continue on toinen tapa vaikuttaa silmukan suoritukseen. Kun silmukan sisällä tulee vastaan komento continue, hyppää suoritus välittömästi silmukan alkuun riville, jossa on silmukan ehto. Tämän jälkeen silmukan suoritus jatkuu normaalisti ehdon tarkastamisella:

    \n \n

    Tämän osion jälkeen

      \n
    • Ymmärrät milloin break-komentoa tarvitaan silmukan keskeyttämiseen
    • \n
    • Osaat siirtyä silmukan seuraavalle kierrokselle continue-komennolla
    • \n
    • Ymmärrät sisäkkäisen silmukan toiminnan
    • \n

    break-komento

    Aiemmin silmukoiden yhteydessä tutustuttiin break-komentoon. Komennolla voidaan katkaista silmukan suoritus välittömästi. Tyypillinen esimerkki komennon käytöstä on silmukka, jossa kysytään käyttäjältä syötteitä, ja suoritus päättyy, kun käyttäjä antaa tietyn syötteen.

    Vastaavaan toiminnallisuuteen päästään myös ilman break-komentoa sopivan ehdon avulla. Alla olevat esimerkit toteuttavat molemmat ohjelman, joka laskee käyttäjän syötteiden summan kunnes käyttäjä syöttää luvun -1:

    # 1. versio break-komennon avulla\n\nsumma = 0\n\nwhile True:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku == -1:\n        break\n    summa += luku\n\nprint (f\"Summa on {summa}\")
    # 2. versio ilman break-komentoa\n\nsumma = 0\nluku = 0\n\nwhile luku != -1:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku != -1:\n        summa += luku\n\nprint (f\"Summa on {summa}\")

    Molempien ohjelmien esimerkkisuoritus voisi näyttää seuraavalta:

    Anna luku, -1 lopettaa: 2\nAnna luku, -1 lopettaa: 4\nAnna luku, -1 lopettaa: 5\nAnna luku, -1 lopettaa: 3\nAnna luku, -1 lopettaa: -1\nSumma on 14

    Molemmat versiot ovat toiminnallisuudeltaan siis käytännössä samanlaisia. Ensimmäinen tapa on kuitenkin usein helpompi, koska ehto luku == -1 riittää kirjoittaa vain kerran eikä muuttujaa luku tarvitse alustaa silmukan ulkopuolella.

    Komentoa break voidaan käyttää myös silloin, kun silmukassa on annettu jokin muu ehto kuin pelkkä totuusarvo True. Esimerkiksi seuraava silmukka jatkuu niin kauan, kuin annettujen lukujen summa on enintään 100. Kuitenkin silmukka katkeaa myös, jos käyttäjä antaa luvun -1.

    summa = 0\n\nwhile summa <= 100:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku == -1:\n        break\n    summa += luku\n\nprint (f\"Summa on {summa}\")

    Mahdollisia suorituksia:

    Anna luku, -1 lopettaa: 15\nAnna luku, -1 lopettaa: 8\nAnna luku, -1 lopettaa: 21\nAnna luku, -1 lopettaa: -1\nSumma on 44

    Anna luku, -1 lopettaa: 15\nAnna luku, -1 lopettaa: 8\nAnna luku, -1 lopettaa: 21\nAnna luku, -1 lopettaa: 45\nAnna luku, -1 lopettaa: 17\nSumma on 106

    Ensimmäisessä tapauksessa silmukka päättyy, koska käyttäjä antaa luvun -1. Toisessa tapauksessa silmukka päättyy, koska lukujen summa on yli 100.

    Toisaalta voisimme toteuttaa vastaavasti toimivan silmukan myös näin:

    summa = 0\n\nwhile True:\n    luku = int(input(\"Anna luku, -1 lopettaa: \"))\n    if luku == -1:\n        break\n    summa += luku\n    if summa > 100:\n        break\n\nprint (f\"Summa on {summa}\")

    continue-komento

    Komento continue on toinen tapa vaikuttaa silmukan suoritukseen. Kun silmukan sisällä tulee vastaan komento continue, hyppää suoritus välittömästi silmukan alkuun riville, jossa on silmukan ehto. Tämän jälkeen silmukan suoritus jatkuu normaalisti ehdon tarkastamisella:

    \n \n

    Tämän osion jälkeen

      \n
    • Osaat luoda oman funktion ja kutsua sitä
    • \n
    • Ymmärrät, mikä on funktion parametri
    • \n
    • Osaat käyttää parametreja omissa funktioissa
    • \n

    Aikaisemmissa osissa on käytetty esimerkiksi funktioita len, print ja input eri tarkoituksiin. Nämä ovat Pythonin sisäänrakennettuja funktioita, mutta voimme myös määritellä omia funktioita.

    Funktion määrittely

    Oma funktio määritellään avainsanalla def (lyhenne sanasta define). Funktiolle annetaan jokin nimi, jonka jälkeen on alku- ja loppusulku. Tämän jälkeen annetaan lohkossa funktioon kuuluva koodi.

    Esimerkiksi seuraava koodi määrittelee funktion viesti:

    def viesti():\n    print(\"Tämä on oma funktio!\")

    Jos yllä oleva ohjelma suoritetaan, se ei näytä tekevän mitään. Tämä johtuu siitä, että funktion sisältämä koodi suoritetaan vasta silloin, kun funktiota kutsutaan.

    Funktion kutsuminen tapahtuu funktion nimellä. Esimerkiksi seuraava koodi kutsuu funktiota:

    def viesti():\n    print(\"Tämä on oma funktio!\")\n\nviesti()

    Tämä on oma funktio!

    Samaa funktiota voidaan määrittelyn jälkeen kutsua useita kertoja.

    def viesti():\n    print(\"Tämä on oma funktio!\")\n\nviesti()\nviesti()\nviesti()

    Tämä on oma funktio!\nTämä on oma funktio!\nTämä on oma funktio!

    Huom! Tästä eteenpäin valtaosassa kurssin tehtäviä pyydetään kirjoittamaan oma funktio (tai funktioita).

    Kun ohjelma koostuu pelkästään funktiosta, ei sen suorittaminen näytä tekevän mitään. Esimerkiksi seuraava ohjelma ei tulosta mitään:

    def moikkaa():\n    print(\"Moi!\")

    Funktion moikkaa sisällä oleva koodi suoritetaan vasta, kun funktiota kutsutaan.

    Funktion alla olevaan \"pääohjelmaan\" kannattaa siis kirjoittaa sopivia funktiokutsuja ohjelman testaamiseksi, esimerkiksi:

    def moikkaa():\n    print(\"Moi!\")\n\n# Pääohjelma on se ohjelman osa, joka ei ole minkään funktion sisällä\n# Kutsutaan omaa funktiota\n\nmoikkaa()

    Tärkeä huomio: kurssin tehtävien testit edellyttävät, että funktioita testaava pääohjelma tulee kirjoittaa seuraavasti määriteltyyn if-lohkoon:

    def moikkaa():\n    print(\"Moi!\")\n\n# Kirjoita pääohjelma aina seuraavanlaisen lohkon sisälle\nif __name__ == \"__main__\":\n    moikkaa()

    Lohkon ulkopuolelle jätetty testikoodi aiheuttaa seuraavan virheilmoituksen:

    \n \n \n \n \n \n \"3\n \n \n

    Kannattaa myös huomata, että testit eivät suorita if __name__ == \"__main__\" -lohkon sisälle kirjoitettua koodia eikä sinne tule sijoittaa tehtävien edellyttämää koodia.

    Tee funktio seitseman_veljesta jonka kutsuminen tulostaa seitsemän veljeksen nimet aakkosjärjestyksessä:

    Aapo\nEero\nJuhani\nLauri\nSimeoni\nTimo\nTuomas

    Funktion parametri

    Usein funktiolla on yksi tai useampi parametri, jolla sen toimintaan voi vaikuttaa. Esimerkiksi Pythonin valmiissa funktioissa print ja input parametrin avulla annetaan näytettävä teksti:

    print(\"Hei!\")                     # parametrina merkkijono \"Hei!\"\nnimi = input(\"Kerro nimesi: \")    # parametrina merkkijono \"Kerro nimesi: \"\nprint(nimi)                       # parametrina muuttujan nimi arvo

    Voimme määritellä parametreja myös omille funktioillemme. Parametrit määritellään funktion nimen jälkeen olevien sulkujen sisällä:

    def tervehdi(kohde):\n    print(\"Hei\", kohde)

    Jos funktiota kutsutaan kaksi kertaa

    tervehdi(\"Emilia\")\ntervehdi(\"maailma!\")

    tulostaa se kaksi erilaista tervehdystä:

    Hei Emilia\nHei maailma!

    Katsotaan funktion määrittelyä vielä tarkemmin:

    def tervehdi(kohde):\n    print(\"Hei\", kohde)

    Määrittelimme ensimmäisellä rivillä, että funktion parametri on nimeltään kohde. Toisella rivillä print-komento käyttää parametrissa kohde olevaa arvoa.

    Kun funktiota kutsutaan, saa parametri funktiokutsussa annettavan arvon. Esimerkiksi kun kutsutaan

    nimi = \"Antti\"\ntervehdi(nimi)

    niin parametrin kohde arvo funktiossa on merkkijono Antti.

    Funktioiden ja parametrien nimeämistä koskevat samat periaatteet kuin mitä olemme jo aiemmin käsitelleet, eli nimien kannattaa olla kuvaavia ja käytössä ovat ensisijaisesti pienet kirjaimet sekä alaviiva.

    Täydennä koodipohjassa oleva funktio ensimmainen siten, että se tulostaa parametrinaan saamansa merkkijonon ensimmäisen merkin.

    def ensimmainen(merkkijono):\n     # kirjoita koodia tähän\n\n# kokeillaan funktiota:\nif __name__ == \"__main__\":\n    ensimmainen('python')\n    ensimmainen('yhtälö')\n    ensimmainen('tieto')\n    ensimmainen('huominen')\n    ensimmainen('omena')\n    ensimmainen('nukkumaanmenoaika')

    p\ny\nt\nh\no\nn

    Kun omassa funktiossa on määritelty yksi tai useampia parametreja, kannattaa funktiota testata usealla erilaisella parametrilla.

    Kannattaa erityisesti miettiä, toimivatko myös \"erikoistapaukset\": mitä funktio esimerkiksi tekee, jos sille annetaan negatiivinen luku tai liukuluku kokonaisluvun sijasta.

    Jos tehtävänannossa ei ole erityisesti käsketty kirjoittamaan tiettyjä funktiokutsuja, voit vapaasti lisätä omia kutsujasi pääohjelmaan ja testit jättävät nämä huomiotta.

    Lisää esimerkkejä

    Katsotaan vielä pari muuta esimerkkiä parametrien käyttämisestä. Seuraavassa funktiossa parametri on luku:

    def nelio(x):\n    print(f\"Luvun {x} neliö on {x * x}\")\n\nnelio(2)\nnelio(5)

    Luvun 2 neliö on 4\nLuvun 5 neliö on 25

    Seuraavassa esimerkissä funktion sisällä on ehtorakenne:

    def tervehdi(nimi):\n    if nimi == \"Emilia\":\n        print(\"Heippa,\", nimi)\n    else:\n        print(\"Moikka,\", nimi)\n\ntervehdi(\"Emilia\")\ntervehdi(\"Matti\")

    Heippa, Emilia\nMoikka, Matti

    Seuraavassa funktiossa puolestaan on kaksi parametria:

    def summa(x, y):\n    tulos = x + y\n    print(f\"Parametrien {x} ja {y} summa on {tulos} \")\n\nsumma(1, 2)\nsumma(5, 24)

    Parametrien 1 ja 2 summa on 3\nParametrien 5 ja 24 summa on 29

    Funktio myös määrittelee \"apumuuttujan\" tulos, mihin se sijoittaa parametriensa summan.

    Huomaa, että parametrien nimillä ei ole mitään tekemistä funktion ulkopuolella olevien muuttujien kanssa. Esimerkiksi jos kutsumme äskeistä funktiota

    x = 100\ny = 30\nsumma(1, 2)\nsumma(x + y, 10)

    niin tuloksena on:

    Parametrien 1 ja 2 summa on 3\nParametrien 130 ja 10 summa on 140

    Ensimmäisessä kutsussa parametrien arvot funktion sisällä ovat x = 1 ja y = 2, ja toisessa kutsussa arvot ovat x = 130 ja y = 10.

    Palaamme funktioihin ja parametrien määrittelyyn tarkemmin seuraavan osan alussa.

    Varoitus: globaalin muuttujan käyttö funktion sisällä

    Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan globaaleiksi muuttujiksi.

    Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin.

    Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:

    # globaali muuttuja\nnimi = \"Emilia\"\n\ndef tervehdi(etunimi):\n    # tulostetaan vahingossa parametrin sijaan globaalin muuttujan arvo\n    print(\"Hei\", nimi)\n\ntervehdi(\"Antti\")\ntervehdi(\"Emilia\")

    Hei Emilia\nHei Emilia

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa olevan nimen Emilia.

    Tee funktio keskiarvo, joka saa parametrina kolme kokonaislukua. Funktio tulostaa parametriensa keskiarvon.

    keskiarvo(5, 3, 1)\nkeskiarvo(10, 1, 1)

    3.0\n4.0

    Tee funktio tulosta_monesti(merkkijono, kertaa), joka saa parametriksi merkkijonon sekä kokonaisluvun, joka kertoo, montako kertaa funktion tulee tulostaa parametrina saamansa merkkijono:

    tulosta_monesti(\"hei\", 5)\n\nprint()\n\nmerkkijono = \"Alussa olivat suo, kuokka ja Python\"\nkertaa = 3\ntulosta_monesti(merkkijono, kertaa)

    hei\nhei\nhei\nhei\nhei

    Alussa olivat suo, kuokka ja Python.\nAlussa olivat suo, kuokka ja Python.\nAlussa olivat suo, kuokka ja Python.

    Tee funktio risunelio(pituus) joka saa parametriksi kokonaisluvun, joka kertoo kuinka suuri risuneliö funktion pitää tulostaa:

    risunelio(3)\nprint()\nrisunelio(5)
    \n###\n###\n###\n\n#####\n#####\n#####\n#####\n#####\n

    Tee funktio shakkilauta, joka tulostaa shakkilaudan numeroista 0 ja 1 alla olevien esimerkkien mukaisesti.

    shakkilauta(3)\nprint()\nshakkilauta(6)
    \n101\n010\n101\n\n101010\n010101\n101010\n010101\n101010\n010101\n

    Tee funktio nelio, joka tulostaa sananeliön alla olevien esimerkkien mukaisesti.

    nelio(\"ab\", 3)\nprint()\nnelio(\"aybabtu\", 5)
    \naba\nbab\naba\n\naybab\ntuayb\nabtua\nybabt\nuayba\n

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-3/4-omat-funktiot.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda oman funktion ja kutsua sitä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mikä on funktion parametri"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää parametreja omissa funktioissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmissa osissa on käytetty esimerkiksi funktioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" eri tarkoituksiin. Nämä ovat Pythonin sisäänrakennettuja funktioita, mutta voimme myös määritellä omia funktioita."}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-maarittely","style":"position:relative;"},"children":[{"type":"text","value":"Funktion määrittely"},{"type":"element","tagName":"a","properties":{"href":"#funktion-maarittely","ariaLabel":"funktion maarittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oma funktio määritellään avainsanalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" (lyhenne sanasta define). Funktiolle annetaan jokin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", jonka jälkeen on alku- ja loppusulku. Tämän jälkeen annetaan lohkossa funktioon kuuluva koodi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi määrittelee funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viesti"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"viesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on oma funktio!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos yllä oleva ohjelma suoritetaan, se ei näytä tekevän mitään. Tämä johtuu siitä, että funktion sisältämä koodi suoritetaan vasta silloin, kun funktiota "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kutsutaan"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion kutsuminen tapahtuu funktion nimellä. Esimerkiksi seuraava koodi kutsuu funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"viesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on oma funktio!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nviesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on oma funktio!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samaa funktiota voidaan määrittelyn jälkeen kutsua useita kertoja."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"viesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on oma funktio!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nviesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on oma funktio!\nTämä on oma funktio!\nTämä on oma funktio!"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Omien funktioiden testaaminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Tästä eteenpäin valtaosassa kurssin tehtäviä pyydetään kirjoittamaan oma funktio (tai funktioita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun ohjelma koostuu pelkästään funktiosta, ei sen suorittaminen näytä tekevän mitään. Esimerkiksi seuraava ohjelma ei tulosta mitään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"moikkaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"moikkaa"}]},{"type":"text","value":" sisällä oleva koodi suoritetaan vasta, kun funktiota kutsutaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion alla olevaan \"pääohjelmaan\" kannattaa siis kirjoittaa sopivia funktiokutsuja ohjelman testaamiseksi, esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"moikkaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Pääohjelma on se ohjelman osa, joka ei ole minkään funktion sisällä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan omaa funktiota"}]},{"type":"text","value":"\n\nmoikkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tärkeä huomio"}]},{"type":"text","value":": kurssin tehtävien testit edellyttävät, että funktioita testaava pääohjelma tulee kirjoittaa seuraavasti määriteltyyn "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkoon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"moikkaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kirjoita pääohjelma aina seuraavanlaisen lohkon sisälle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n moikkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lohkon ulkopuolelle jätetty testikoodi aiheuttaa seuraavan virheilmoituksen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/198bfb36dc5d02ba030280b89c26ecee/7575b/3_4_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 70.43478260869564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAABYlAAAWJQFJUiTwAAABpUlEQVQoz8WTPW8TQRCG7ycixEdFigiQECKipOEn0OQXEIFMESw7HyBEkFKkCDFWFBGwIM7Zudjn+4739nbvbmd3ZsEBghREFCoePZpiRm81M07Gsr7fLwVIWZZClKUEALwcjgJQ2jBWRUGWjkc5m2oNRHixiAbROKDBoOE8LwrOeS5kcTa7QK2hrmtHa20t2d/QJSWis/A/S4T/MWzOh2cgERAZol8tIkvC2B+WpxWQnKU9eWVZzq2Kmy15tcFuPI2vLSULa/njd8XDV/mddn5vlV9virmVotUdNXeG7a7X6IQvtr3NQ+483xO31tX9DZjfwNvPooUnnx8sHjS2sjcfi9aH/GWHtXeyR2/l3ddyfXe00nHXuoPmbrj8frjlcke5B/aob09SmwR2GluWWpZiNIEw0HGo01gbTajJ2op+WqOt0Goip+ztn/Q+HXve5GgY+/5oMDh23WQ8zpN4GoV5moqiYIwRnb+C2Z6r3n729Ys3CcIwGvt+EIaFkELKqq65EAbR/oVZuHQPIYkBUSkFAEopRCQiY8zsSo3Rp5g/+P4Y3wBFRBaDdLVPZAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/198bfb36dc5d02ba030280b89c26ecee/a0b58/3_4_1.webp 230w","/static/198bfb36dc5d02ba030280b89c26ecee/bc10c/3_4_1.webp 460w","/static/198bfb36dc5d02ba030280b89c26ecee/966d8/3_4_1.webp 920w","/static/198bfb36dc5d02ba030280b89c26ecee/445df/3_4_1.webp 1380w","/static/198bfb36dc5d02ba030280b89c26ecee/40fa0/3_4_1.webp 1608w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/198bfb36dc5d02ba030280b89c26ecee/81c8e/3_4_1.png 230w","/static/198bfb36dc5d02ba030280b89c26ecee/08a84/3_4_1.png 460w","/static/198bfb36dc5d02ba030280b89c26ecee/c0255/3_4_1.png 920w","/static/198bfb36dc5d02ba030280b89c26ecee/b1001/3_4_1.png 1380w","/static/198bfb36dc5d02ba030280b89c26ecee/7575b/3_4_1.png 1608w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/198bfb36dc5d02ba030280b89c26ecee/c0255/3_4_1.png","alt":"3 4 1","title":"3 4 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa myös huomata, että testit eivät suorita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":" -lohkon sisälle kirjoitettua koodia eikä sinne tule sijoittaa tehtävien edellyttämää koodia."}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Seitsemän veljestä","tmcname":"osa03-21_seitseman_veljesta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"seitseman_veljesta"}]},{"type":"text","value":" jonka kutsuminen tulostaa seitsemän veljeksen nimet aakkosjärjestyksessä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aapo\nEero\nJuhani\nLauri\nSimeoni\nTimo\nTuomas"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-parametri","style":"position:relative;"},"children":[{"type":"text","value":"Funktion parametri"},{"type":"element","tagName":"a","properties":{"href":"#funktion-parametri","ariaLabel":"funktion parametri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein funktiolla on yksi tai useampi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parametri"}]},{"type":"text","value":", jolla sen toimintaan voi vaikuttaa. Esimerkiksi Pythonin valmiissa funktioissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" parametrin avulla annetaan näytettävä teksti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# parametrina merkkijono \"Hei!\""}]},{"type":"text","value":"\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kerro nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# parametrina merkkijono \"Kerro nimesi: \""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# parametrina muuttujan nimi arvo"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme määritellä parametreja myös omille funktioillemme. Parametrit määritellään funktion nimen jälkeen olevien sulkujen sisällä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktiota kutsutaan kaksi kertaa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"maailma!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostaa se kaksi erilaista tervehdystä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Emilia\nHei maailma!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan funktion määrittelyä vielä tarkemmin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kohde"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrittelimme ensimmäisellä rivillä, että funktion parametri on nimeltään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde"}]},{"type":"text","value":". Toisella rivillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komento käyttää parametrissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde"}]},{"type":"text","value":" olevaa arvoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun funktiota kutsutaan, saa parametri "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"funktiokutsussa"}]},{"type":"text","value":" annettavan arvon. Esimerkiksi kun kutsutaan"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohde"}]},{"type":"text","value":" arvo funktiossa on merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Antti"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden ja parametrien nimeämistä koskevat samat periaatteet kuin mitä olemme jo aiemmin käsitelleet, eli nimien kannattaa olla kuvaavia ja käytössä ovat ensisijaisesti pienet kirjaimet sekä alaviiva."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Ensimmäinen merkki","tmcname":"osa03-22_ensimmainen_merkki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä koodipohjassa oleva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ensimmainen"}]},{"type":"text","value":" siten, että se tulostaa parametrinaan saamansa merkkijonon ensimmäisen merkin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ensimmainen"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kirjoita koodia tähän"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kokeillaan funktiota:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ensimmainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'python'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ensimmainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'yhtälö'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ensimmainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'tieto'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ensimmainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'huominen'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ensimmainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'omena'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ensimmainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'nukkumaanmenoaika'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"p\ny\nt\nh\no\nn"}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Omien funktioiden testaaminen: parametrit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun omassa funktiossa on määritelty yksi tai useampia parametreja, kannattaa funktiota testata usealla erilaisella parametrilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa erityisesti miettiä, toimivatko myös \"erikoistapaukset\": mitä funktio esimerkiksi tekee, jos sille annetaan negatiivinen luku tai liukuluku kokonaisluvun sijasta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tehtävänannossa ei ole erityisesti käsketty kirjoittamaan tiettyjä funktiokutsuja, voit vapaasti lisätä omia kutsujasi pääohjelmaan ja testit jättävät nämä huomiotta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-esimerkkeja","style":"position:relative;"},"children":[{"type":"text","value":"Lisää esimerkkejä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-esimerkkeja","ariaLabel":"lisaa esimerkkeja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan vielä pari muuta esimerkkiä parametrien käyttämisestä. Seuraavassa funktiossa parametri on luku:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nelio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Luvun "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" neliö on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nnelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvun 2 neliö on 4\nLuvun 5 neliö on 25"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä funktion sisällä on ehtorakenne:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Heippa,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Heippa, Emilia\nMoikka, Matti"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa funktiossa puolestaan on kaksi parametria:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" y\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Parametrien "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" summa on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" \""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametrien 1 ja 2 summa on 3\nParametrien 5 ja 24 summa on 29"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio myös määrittelee \"apumuuttujan\" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":", mihin se sijoittaa parametriensa summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että parametrien nimillä ei ole mitään tekemistä funktion ulkopuolella olevien muuttujien kanssa. Esimerkiksi jos kutsumme äskeistä funktiota"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\ny "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\nsumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin tuloksena on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametrien 1 ja 2 summa on 3\nParametrien 130 ja 10 summa on 140"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisessä kutsussa parametrien arvot funktion sisällä ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x = 1"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y = 2"}]},{"type":"text","value":", ja toisessa kutsussa arvot ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x = 130"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y = 10"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palaamme funktioihin ja parametrien määrittelyyn tarkemmin seuraavan osan alussa."}]},{"type":"comment","value":"vastaava varoitusteksti löytyy osioista 3-4, 4-6 ja 5-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"h2","properties":{"id":"varoitus-globaalin-muuttujan-kaytto-funktion-sisalla","style":"position:relative;"},"children":[{"type":"text","value":"Varoitus: globaalin muuttujan käyttö funktion sisällä"},{"type":"element","tagName":"a","properties":{"href":"#varoitus-globaalin-muuttujan-kaytto-funktion-sisalla","ariaLabel":"varoitus globaalin muuttujan kaytto funktion sisalla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"globaaleiksi"}]},{"type":"text","value":" muuttujiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan vahingossa parametrin sijaan globaalin muuttujan arvo"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Emilia\nHei Emilia"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa olevan nimen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Emilia"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Keskiarvo","tmcname":"osa03-25_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":", joka saa parametrina kolme kokonaislukua. Funktio tulostaa parametriensa keskiarvon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkeskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3.0\n4.0"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Monta tulostusta","tmcname":"osa03-24_monta_tulostusta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_monesti(merkkijono, kertaa)"}]},{"type":"text","value":", joka saa parametriksi merkkijonon sekä kokonaisluvun, joka kertoo, montako kertaa funktion tulee tulostaa parametrina saamansa merkkijono:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulosta_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmerkkijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Alussa olivat suo, kuokka ja Python\""}]},{"type":"text","value":"\nkertaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntulosta_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kertaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"hei\nhei\nhei\nhei\nhei"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alussa olivat suo, kuokka ja Python.\nAlussa olivat suo, kuokka ja Python.\nAlussa olivat suo, kuokka ja Python."}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Risuneliö","tmcname":"osa03-23_risunelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"risunelio(pituus)"}]},{"type":"text","value":" joka saa parametriksi kokonaisluvun, joka kertoo kuinka suuri risuneliö funktion pitää tulostaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"risunelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrisunelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"###\n###\n###\n\n#####\n#####\n#####\n#####\n#####\n"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Shakkilauta","tmcname":"osa03-26_shakkilauta"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"shakkilauta"}]},{"type":"text","value":", joka tulostaa shakkilaudan numeroista 0 ja 1 alla olevien esimerkkien mukaisesti."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"shakkilauta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nshakkilauta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"101\n010\n101\n\n101010\n010101\n101010\n010101\n101010\n010101\n"}]}]}]},{"type":"element","tagName":"in-browser-programming-exercise","properties":{"name":"Sananeliö","tmcname":"osa03-27_sananelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nelio"}]},{"type":"text","value":", joka tulostaa sananeliön alla olevien esimerkkien mukaisesti."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ab\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"aybabtu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"aba\nbab\naba\n\naybab\ntuayb\nabtua\nybabt\nuayba\n"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda oman funktion ja kutsua sitä
    • \n
    • Ymmärrät, mikä on funktion parametri
    • \n
    • Osaat käyttää parametreja omissa funktioissa
    • \n

    Aikaisemmissa osissa on käytetty esimerkiksi funktioita len, print ja input eri tarkoituksiin. Nämä ovat Pythonin sisäänrakennettuja funktioita, mutta voimme myös määritellä omia funktioita.

    Funktion määrittely

    Oma funktio määritellään avainsanalla def (lyhenne sanasta define). Funktiolle annetaan jokin nimi, jonka jälkeen on alku- ja loppusulku. Tämän jälkeen annetaan lohkossa funktioon kuuluva koodi.

    Esimerkiksi seuraava koodi määrittelee funktion viesti:

    def viesti():\n    print(\"Tämä on oma funktio!\")

    Jos yllä oleva ohjelma suoritetaan, se ei näytä tekevän mitään. Tämä johtuu siitä, että funktion sisältämä koodi suoritetaan vasta silloin, kun funktiota kutsutaan.

    Funktion kutsuminen tapahtuu funktion nimellä. Esimerkiksi seuraava koodi kutsuu funktiota:

    def viesti():\n    print(\"Tämä on oma funktio!\")\n\nviesti()

    Tämä on oma funktio!

    Samaa funktiota voidaan määrittelyn jälkeen kutsua useita kertoja.

    def viesti():\n    print(\"Tämä on oma funktio!\")\n\nviesti()\nviesti()\nviesti()

    Tämä on oma funktio!\nTämä on oma funktio!\nTämä on oma funktio!

    Huom! Tästä eteenpäin valtaosassa kurssin tehtäviä pyydetään kirjoittamaan oma funktio (tai funktioita).

    Kun ohjelma koostuu pelkästään funktiosta, ei sen suorittaminen näytä tekevän mitään. Esimerkiksi seuraava ohjelma ei tulosta mitään:

    def moikkaa():\n    print(\"Moi!\")

    Funktion moikkaa sisällä oleva koodi suoritetaan vasta, kun funktiota kutsutaan.

    Funktion alla olevaan \"pääohjelmaan\" kannattaa siis kirjoittaa sopivia funktiokutsuja ohjelman testaamiseksi, esimerkiksi:

    def moikkaa():\n    print(\"Moi!\")\n\n# Pääohjelma on se ohjelman osa, joka ei ole minkään funktion sisällä\n# Kutsutaan omaa funktiota\n\nmoikkaa()

    Tärkeä huomio: kurssin tehtävien testit edellyttävät, että funktioita testaava pääohjelma tulee kirjoittaa seuraavasti määriteltyyn if-lohkoon:

    def moikkaa():\n    print(\"Moi!\")\n\n# Kirjoita pääohjelma aina seuraavanlaisen lohkon sisälle\nif __name__ == \"__main__\":\n    moikkaa()

    Lohkon ulkopuolelle jätetty testikoodi aiheuttaa seuraavan virheilmoituksen:

    \n \n \n \n \n \n \"3\n \n \n

    Kannattaa myös huomata, että testit eivät suorita if __name__ == \"__main__\" -lohkon sisälle kirjoitettua koodia eikä sinne tule sijoittaa tehtävien edellyttämää koodia.

    Tee funktio seitseman_veljesta jonka kutsuminen tulostaa seitsemän veljeksen nimet aakkosjärjestyksessä:

    Aapo\nEero\nJuhani\nLauri\nSimeoni\nTimo\nTuomas

    Funktion parametri

    Usein funktiolla on yksi tai useampi parametri, jolla sen toimintaan voi vaikuttaa. Esimerkiksi Pythonin valmiissa funktioissa print ja input parametrin avulla annetaan näytettävä teksti:

    print(\"Hei!\")                     # parametrina merkkijono \"Hei!\"\nnimi = input(\"Kerro nimesi: \")    # parametrina merkkijono \"Kerro nimesi: \"\nprint(nimi)                       # parametrina muuttujan nimi arvo

    Voimme määritellä parametreja myös omille funktioillemme. Parametrit määritellään funktion nimen jälkeen olevien sulkujen sisällä:

    def tervehdi(kohde):\n    print(\"Hei\", kohde)

    Jos funktiota kutsutaan kaksi kertaa

    tervehdi(\"Emilia\")\ntervehdi(\"maailma!\")

    tulostaa se kaksi erilaista tervehdystä:

    Hei Emilia\nHei maailma!

    Katsotaan funktion määrittelyä vielä tarkemmin:

    def tervehdi(kohde):\n    print(\"Hei\", kohde)

    Määrittelimme ensimmäisellä rivillä, että funktion parametri on nimeltään kohde. Toisella rivillä print-komento käyttää parametrissa kohde olevaa arvoa.

    Kun funktiota kutsutaan, saa parametri funktiokutsussa annettavan arvon. Esimerkiksi kun kutsutaan

    nimi = \"Antti\"\ntervehdi(nimi)

    niin parametrin kohde arvo funktiossa on merkkijono Antti.

    Funktioiden ja parametrien nimeämistä koskevat samat periaatteet kuin mitä olemme jo aiemmin käsitelleet, eli nimien kannattaa olla kuvaavia ja käytössä ovat ensisijaisesti pienet kirjaimet sekä alaviiva.

    Täydennä koodipohjassa oleva funktio ensimmainen siten, että se tulostaa parametrinaan saamansa merkkijonon ensimmäisen merkin.

    def ensimmainen(merkkijono):\n     # kirjoita koodia tähän\n\n# kokeillaan funktiota:\nif __name__ == \"__main__\":\n    ensimmainen('python')\n    ensimmainen('yhtälö')\n    ensimmainen('tieto')\n    ensimmainen('huominen')\n    ensimmainen('omena')\n    ensimmainen('nukkumaanmenoaika')

    p\ny\nt\nh\no\nn

    Kun omassa funktiossa on määritelty yksi tai useampia parametreja, kannattaa funktiota testata usealla erilaisella parametrilla.

    Kannattaa erityisesti miettiä, toimivatko myös \"erikoistapaukset\": mitä funktio esimerkiksi tekee, jos sille annetaan negatiivinen luku tai liukuluku kokonaisluvun sijasta.

    Jos tehtävänannossa ei ole erityisesti käsketty kirjoittamaan tiettyjä funktiokutsuja, voit vapaasti lisätä omia kutsujasi pääohjelmaan ja testit jättävät nämä huomiotta.

    Lisää esimerkkejä

    Katsotaan vielä pari muuta esimerkkiä parametrien käyttämisestä. Seuraavassa funktiossa parametri on luku:

    def nelio(x):\n    print(f\"Luvun {x} neliö on {x * x}\")\n\nnelio(2)\nnelio(5)

    Luvun 2 neliö on 4\nLuvun 5 neliö on 25

    Seuraavassa esimerkissä funktion sisällä on ehtorakenne:

    def tervehdi(nimi):\n    if nimi == \"Emilia\":\n        print(\"Heippa,\", nimi)\n    else:\n        print(\"Moikka,\", nimi)\n\ntervehdi(\"Emilia\")\ntervehdi(\"Matti\")

    Heippa, Emilia\nMoikka, Matti

    Seuraavassa funktiossa puolestaan on kaksi parametria:

    def summa(x, y):\n    tulos = x + y\n    print(f\"Parametrien {x} ja {y} summa on {tulos} \")\n\nsumma(1, 2)\nsumma(5, 24)

    Parametrien 1 ja 2 summa on 3\nParametrien 5 ja 24 summa on 29

    Funktio myös määrittelee \"apumuuttujan\" tulos, mihin se sijoittaa parametriensa summan.

    Huomaa, että parametrien nimillä ei ole mitään tekemistä funktion ulkopuolella olevien muuttujien kanssa. Esimerkiksi jos kutsumme äskeistä funktiota

    x = 100\ny = 30\nsumma(1, 2)\nsumma(x + y, 10)

    niin tuloksena on:

    Parametrien 1 ja 2 summa on 3\nParametrien 130 ja 10 summa on 140

    Ensimmäisessä kutsussa parametrien arvot funktion sisällä ovat x = 1 ja y = 2, ja toisessa kutsussa arvot ovat x = 130 ja y = 10.

    Palaamme funktioihin ja parametrien määrittelyyn tarkemmin seuraavan osan alussa.

    Varoitus: globaalin muuttujan käyttö funktion sisällä

    Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan globaaleiksi muuttujiksi.

    Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin.

    Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:

    # globaali muuttuja\nnimi = \"Emilia\"\n\ndef tervehdi(etunimi):\n    # tulostetaan vahingossa parametrin sijaan globaalin muuttujan arvo\n    print(\"Hei\", nimi)\n\ntervehdi(\"Antti\")\ntervehdi(\"Emilia\")

    Hei Emilia\nHei Emilia

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa olevan nimen Emilia.

    Tee funktio keskiarvo, joka saa parametrina kolme kokonaislukua. Funktio tulostaa parametriensa keskiarvon.

    keskiarvo(5, 3, 1)\nkeskiarvo(10, 1, 1)

    3.0\n4.0

    Tee funktio tulosta_monesti(merkkijono, kertaa), joka saa parametriksi merkkijonon sekä kokonaisluvun, joka kertoo, montako kertaa funktion tulee tulostaa parametrina saamansa merkkijono:

    tulosta_monesti(\"hei\", 5)\n\nprint()\n\nmerkkijono = \"Alussa olivat suo, kuokka ja Python\"\nkertaa = 3\ntulosta_monesti(merkkijono, kertaa)

    hei\nhei\nhei\nhei\nhei

    Alussa olivat suo, kuokka ja Python.\nAlussa olivat suo, kuokka ja Python.\nAlussa olivat suo, kuokka ja Python.

    Tee funktio risunelio(pituus) joka saa parametriksi kokonaisluvun, joka kertoo kuinka suuri risuneliö funktion pitää tulostaa:

    risunelio(3)\nprint()\nrisunelio(5)
    \n###\n###\n###\n\n#####\n#####\n#####\n#####\n#####\n

    Tee funktio shakkilauta, joka tulostaa shakkilaudan numeroista 0 ja 1 alla olevien esimerkkien mukaisesti.

    shakkilauta(3)\nprint()\nshakkilauta(6)
    \n101\n010\n101\n\n101010\n010101\n101010\n010101\n101010\n010101\n

    Tee funktio nelio, joka tulostaa sananeliön alla olevien esimerkkien mukaisesti.

    nelio(\"ab\", 3)\nprint()\nnelio(\"aybabtu\", 5)
    \naba\nbab\naba\n\naybab\ntuayb\nabtua\nybabt\nuayba\n

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-3/4-omat-funktiot.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-3/page-data.json b/page-data/osa-3/page-data.json index cb5eccd47..f2e4a8b74 100644 --- a/page-data/osa-3/page-data.json +++ b/page-data/osa-3/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-3", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-3","title":"Osa 3"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-3/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-3","title":"Osa 3"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-3/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/1-vscode/page-data.json b/page-data/osa-4/1-vscode/page-data.json index 80f6f5362..64d9b1aa0 100644 --- a/page-data/osa-4/1-vscode/page-data.json +++ b/page-data/osa-4/1-vscode/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-4/1-vscode", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää Visual studio Code -editoria kurssin tehtävien tekemiseen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat suorittaa koodia interaktiivisen Python-tulkin avulla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän mennessä ohjelmoineet kaikki tehtävät kurssisivuille upotettuihin editori-ikkunoihin. Selaineditorissa tapahtuva ohjelmointi sopii hyvin kurssin alkuun, mutta siirrymme nyt käyttämään erillistä ohjelmointiin tarkoitettua editoria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erilaisia ohjelmointiin sopivia editoreja on kymmeniä. Käytämme kurssilla viime vuosina suureen suosioon noussutta "},{"type":"element","tagName":"a","properties":{"href":"https://code.visualstudio.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visual Studio Code"}]},{"type":"text","value":" -editoria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asenna nyt Visual Studio Code ja kurssin tehtävien testien suorittamiseen käytettävä TMC-plugin "},{"type":"element","tagName":"a","properties":{"href":"https://www.mooc.fi/fi/installation/vscode","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tämän ohjeen"}]},{"type":"text","value":" avulla. Valitse TMC-pluginissa organisaatioksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"MOOC"}]},{"type":"text","value":" ja kurssiksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin MOOC 2023"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hello Visual Studio Code","tmcname":"osa04-01_hello_visualstudio_code"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä, mikä editori on käytössä. Ohjelma jatkaa, kunnes vastaus on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Visual Studio Code"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava käyttöesimerkki havainnollistaa ohjelman haluttua tulostusta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Editori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Emacs"}]},{"type":"text","value":"\nei ole hyvä\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vim"}]},{"type":"text","value":"\nei ole hyvä\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Word"}]},{"type":"text","value":"\nsurkea\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Atom"}]},{"type":"text","value":"\nei ole hyvä\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Visual Studio Code"}]},{"type":"text","value":"\nloistava valinta!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos käyttäjä kirjoittaa Word tai Notepad, ohjelma vastaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"surkea"}]},{"type":"text","value":". Muissa epäkelvoissa tapauksissa vastaus on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole hyvä"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia siten, että \"oikean vastauksen\" kirjoitusasu ei riipu siitä, kirjoitetaanko vastaus isoja vai pieniä kirjaimia käyttämällä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Editori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"NOTEPAD"}]},{"type":"text","value":"\nsurkea\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"viSUal STudiO cODe"}]},{"type":"text","value":"\nloistava valinta!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjainten koon voi jättää huomiotta esim. muuttamalla kirjaimet pieniksi merkkijonojen metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lower"}]},{"type":"text","value":", jota voi käyttää seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Visual Studio CODE\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"visual studio code\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lower"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkkijono oli etsitty!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"koodin-suorittaminen","style":"position:relative;"},"children":[{"type":"text","value":"Koodin suorittaminen"},{"type":"element","tagName":"a","properties":{"href":"#koodin-suorittaminen","ariaLabel":"koodin suorittaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visual Studio Codessa koodi suoritetaan painamalla vihreää kolmiota. Joskus koodisi suoritus voi jää kesken, esimerkiksi odottamaan käyttäjän syötettä tai ikuiseen silmukkaan, ja siirryt jo seuraavaan tehtävään. Kun yrität suorittaa seuraavan tehtävän koodia, tuleekin esille edellisen tehtävän kesken ollut suoritus. Joissain tilanteissa joudut sammuttamaan edellisen suorituksen painamalla yhtä aikaa näppäimiä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Control"}]},{"type":"text","value":"+"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"C"}]},{"type":"text","value":", jotta saat suoritetuksi uuden tehtävän koodin."}]},{"type":"element","tagName":"h2","properties":{"id":"interaktiivinen-python-tulkki","style":"position:relative;"},"children":[{"type":"text","value":"Interaktiivinen Python-tulkki"},{"type":"element","tagName":"a","properties":{"href":"#interaktiivinen-python-tulkki","ariaLabel":"interaktiivinen python tulkki permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Emme ole toistaiseksi puhuneet kurssilla sanallakaan eräästä Python-ohjelmoinnin tärkeimmästä työkalusta, interaktiivisesta komentotulkista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkki käynnistyy antamalla komentoriviltä komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python3"}]},{"type":"text","value":" (joissain tapauksissa, esim. Windowsilla komento saattaa olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"). Esim. Macilla komentotulkin avaaminen näyttää seuraavalta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/0f246/4_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 17.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAArUlEQVQI13XLywqDMBCFYd//tbroMhiYZFppBG/YJAQTN+o4sVS77bc6HPiL2/Pe1E3ftc8HlmWJiFprKWVVVQAgpUT8/gCglBJCGGPatm1ORV2Zruve49s5F2O01nrvnXMppb7vQwjHfwU+cBxHRBRCAIB5GaUUIg7DoLUGgJRSjDGEME2T995aO8/zLyainDMzExEzH8ex7zsz55yvvW0bEW2ndV2XZSGiK/4AItbceE5Q2z8AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/a0b58/4_1_1.webp 230w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/bc10c/4_1_1.webp 460w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/966d8/4_1_1.webp 920w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/34186/4_1_1.webp 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/81c8e/4_1_1.png 230w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/08a84/4_1_1.png 460w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/c0255/4_1_1.png 920w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/0f246/4_1_1.png 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/c0255/4_1_1.png","alt":"4 1 1","title":"4 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkki on myös mahdollista avata Visual Studio Coden sisälle, ensin suorittamalla jokin ohjelma \"vihreällä kolmiolla\" ja sen jälkeen kirjoittamalla avautuvaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Terminal"}]},{"type":"text","value":"-näkymään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python3"}]},{"type":"text","value":" (tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python"}]},{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/895b071970fc467ecad71d69e6d70d5a/e431d/4_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 49.130434782608695%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABYlAAAWJQFJUiTwAAABF0lEQVQoz52RWW7DIBCGuUcLw2I2Ox42O7hZrtCXqve/SgVOokh5aNVPCM32s8wQjDHFlHIOIRhjnfP78r7ttgVuEWedMuZo58mNNak4e+JHnxYsBXPBcfbaaGOsbSKntZZqMM4111qplGfySyYL4h2AASeUUiG4EJxzAAD6BOs8uwr4G6MUGPQU6Wl2K/wNym4y9hD/GwIAfyyFO7vdxLajtUbEaZqsMcZZLsUDKSXnfBzHdV0Ph8M8z62kt5PUWtd1RcRSSs4ZQ9hy+UjLmkuKMYSwx2OMy7KkNtOcOqUUcr1eL5dLrXXbtvPpVOrxO54/h4jSDEoJIeD+yNdfkG3bEHE/MvarQgiD1koPzjml1GNmrw37AVG5Vxy3ozSFAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/895b071970fc467ecad71d69e6d70d5a/a0b58/4_1_2.webp 230w","/static/895b071970fc467ecad71d69e6d70d5a/bc10c/4_1_2.webp 460w","/static/895b071970fc467ecad71d69e6d70d5a/966d8/4_1_2.webp 920w","/static/895b071970fc467ecad71d69e6d70d5a/445df/4_1_2.webp 1380w","/static/895b071970fc467ecad71d69e6d70d5a/78de1/4_1_2.webp 1840w","/static/895b071970fc467ecad71d69e6d70d5a/609ff/4_1_2.webp 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/895b071970fc467ecad71d69e6d70d5a/81c8e/4_1_2.png 230w","/static/895b071970fc467ecad71d69e6d70d5a/08a84/4_1_2.png 460w","/static/895b071970fc467ecad71d69e6d70d5a/c0255/4_1_2.png 920w","/static/895b071970fc467ecad71d69e6d70d5a/b1001/4_1_2.png 1380w","/static/895b071970fc467ecad71d69e6d70d5a/161ec/4_1_2.png 1840w","/static/895b071970fc467ecad71d69e6d70d5a/e431d/4_1_2.png 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/895b071970fc467ecad71d69e6d70d5a/c0255/4_1_2.png","alt":"4 1 2","title":"4 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On olemassa myös selaimessa toimivia interaktiivisia tulkkeja, kuten "},{"type":"element","tagName":"a","properties":{"href":"https://www.python.org/shell/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://www.python.org/shell/"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkki tarjoaa interaktiivisen tavan suorittaa Python-koodia rivi riviltä sitä mukaa kuin käyttäjä kirjoittaa koodia. Ideana on, että kun käyttäjä kirjoittaa rivin koodia, Python suorittaa rivin välittömästi ja näyttää rivin operaation tuloksen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/7977922a8e37fd253a7fd34e364e6d58/0f246/4_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 19.565217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAkElEQVQI143LwQqDMAwAUP//53qQRq0zKmJALe0wB3HRZtDtOti7v6Kua0QchmEcRwCoqso5BwDOub7vjTFEpKoi8srO8xQRzYppmh4ZESHiuq7HcXjvY4zMHELw3jPzM4sxLsvCzN88z3PTNGVZtm2773tKSUTu+9Y/FETUdZ21FgAQcdu2kF3Xparph09+Az024L8JLoKAAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7977922a8e37fd253a7fd34e364e6d58/a0b58/4_1_3.webp 230w","/static/7977922a8e37fd253a7fd34e364e6d58/bc10c/4_1_3.webp 460w","/static/7977922a8e37fd253a7fd34e364e6d58/966d8/4_1_3.webp 920w","/static/7977922a8e37fd253a7fd34e364e6d58/34186/4_1_3.webp 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7977922a8e37fd253a7fd34e364e6d58/81c8e/4_1_3.png 230w","/static/7977922a8e37fd253a7fd34e364e6d58/08a84/4_1_3.png 460w","/static/7977922a8e37fd253a7fd34e364e6d58/c0255/4_1_3.png 920w","/static/7977922a8e37fd253a7fd34e364e6d58/0f246/4_1_3.png 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7977922a8e37fd253a7fd34e364e6d58/c0255/4_1_3.png","alt":"4 1 3","title":"4 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkkiin on mahdollista kirjoittaa mitä tahansa Pythonia, muuttujien ja metodienkin määrittely on mahdollista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" t "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"itseisarvo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"luku\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luku\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" itseisarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nTraceback "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"most recent call last"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n File "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" line "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"module"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"\nNameError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" name "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'luku'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" defined\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" itseisarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" itseisarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parhaimmillaan komentotulkki on pienten tarkistusten tekemiseen, esim. miten tietty metodi toimii tai onko metodia ylipäätään olemassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"TekstIä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"toupper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nTraceback "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"most recent call last"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n File "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" line "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"module"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"\nAttributeError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'str'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"object"}]},{"type":"text","value":" has no attribute "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'toupper'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"TekstIä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'TEKSTIÄ'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos muistaa melkein jonkin metodin nimen, googlaamisen sijaan voi olla nopeampi käyttää komentotulkkia ja kysyä funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"dir"}]},{"type":"text","value":", mitä metodeja tietyllä oliolla on:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"teksti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__add__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__class__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__contains__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__delattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__dir__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__doc__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__eq__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__format__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ge__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getattribute__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getnewargs__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__gt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__hash__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init_subclass__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__iter__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__le__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__len__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__lt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__mod__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__mul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ne__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__new__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce_ex__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__repr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__rmod__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__rmul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__setattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__sizeof__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__str__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__subclasshook__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'capitalize'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'casefold'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'center'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'count'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'encode'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'endswith'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'expandtabs'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'find'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'format'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'format_map'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'index'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isalnum'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isalpha'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isascii'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isdecimal'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isdigit'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isidentifier'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'islower'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isnumeric'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isprintable'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isspace'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'istitle'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isupper'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'join'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'ljust'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'lower'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'lstrip'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'maketrans'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'partition'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'replace'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rfind'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rindex'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rjust'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rpartition'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rsplit'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rstrip'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'split'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'splitlines'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'startswith'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'strip'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'swapcase'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'title'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'translate'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'upper'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'zfill'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten näemme, merkkijonoilla on suuri määrä metodeja. Kurssin tässä vaiheessa ei kannata välittää alaviivoja sisältävistä metodeista, mutta muut voivat olla käyttökelpoisia. Osa metodien toiminnasta voi selvitä kokeilemalla, osan toiminta selviää googlaamalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listojen metodeista käy ilmi seuraavaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__add__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__class__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__contains__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__delattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__delitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__dir__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__doc__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__eq__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__format__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ge__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getattribute__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__gt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__hash__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__iadd__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__imul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init_subclass__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__iter__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__le__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__len__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__lt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__mul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ne__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__new__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce_ex__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__repr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reversed__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__rmul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__setattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__setitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__sizeof__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__str__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__subclasshook__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'append'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'clear'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'copy'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'count'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'extend'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'index'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'insert'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'pop'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'remove'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'reverse'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'sort'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarjolla näyttää siis olevan mm. metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reverse"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"clear"}]},{"type":"text","value":". Kokeillaan niitä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"reverse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"clear"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit siis tekevät aika lailla sen, mitä nimen perusteella voi olettaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että komentotulkki ei näytä mitään tulosta, kun kutsutaan esim. metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista.reverse()"}]},{"type":"text","value":". Mistä tämä johtuu? Komentotulkki tekee komentojen suorituksen yhteydessä tulostuksen vain, jos suoritetulla koodirivillä on jokin arvo. Edellisessä esimerkissä saatiin tulostettua listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":" arvo kirjoittamalla komentotulkkiin pelkkä muuttujan nimi. Komentotulkissa ei siis useinkaan ole tarvetta kirjottaa erikseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tärkeä komento on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit()"}]},{"type":"text","value":", joka sulkee komentotulkin. Erityisesti jos käytät komentotulkkia Visual Studio Codessa, se tulee muistaa sulkea, ennen kuin suoritat jonkin ohjelman uudelleen \"vihreällä kolmiolla\". Jos tämä unohtuu, on seurauksena hieman erikoinen virheilmoitus:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/030410f1be5c4a9d02209afb96fe30e4/966ce/4_1_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 28.695652173913043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA7klEQVQY023G0W6EIBCFYd9jBQZQgWEERdx1FTdbTd//lZqYthdNT76T/FXOkyMa0phzTikhekRy1nXGInrvyVqrlP4DVBNJVwbtOA8u9tA2QggAkFJKgO+4kv+MMc6uc8YAZKV0E4YQxwRaMyFqzm91fWOXK2rGfoGSoJSQwEEwwatnTFtM52MtcVrD+KA4O8rWz67PjiaDFz9Znwy+0v2dl1ea15BWjNVxnp/HeX4ceynPZdme615KWbfXvpdtC9QTInnfe+o92c5YYwjRIS4uVHcfHxgWGobGRt1FbaI2wyXqLsj2H6oj1S7KfgH1/DpLnHkC8gAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/030410f1be5c4a9d02209afb96fe30e4/a0b58/4_1_4.webp 230w","/static/030410f1be5c4a9d02209afb96fe30e4/bc10c/4_1_4.webp 460w","/static/030410f1be5c4a9d02209afb96fe30e4/966d8/4_1_4.webp 920w","/static/030410f1be5c4a9d02209afb96fe30e4/445df/4_1_4.webp 1380w","/static/030410f1be5c4a9d02209afb96fe30e4/78de1/4_1_4.webp 1840w","/static/030410f1be5c4a9d02209afb96fe30e4/df82e/4_1_4.webp 2050w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/030410f1be5c4a9d02209afb96fe30e4/81c8e/4_1_4.png 230w","/static/030410f1be5c4a9d02209afb96fe30e4/08a84/4_1_4.png 460w","/static/030410f1be5c4a9d02209afb96fe30e4/c0255/4_1_4.png 920w","/static/030410f1be5c4a9d02209afb96fe30e4/b1001/4_1_4.png 1380w","/static/030410f1be5c4a9d02209afb96fe30e4/161ec/4_1_4.png 1840w","/static/030410f1be5c4a9d02209afb96fe30e4/966ce/4_1_4.png 2050w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/030410f1be5c4a9d02209afb96fe30e4/c0255/4_1_4.png","alt":"4 1 4","title":"4 1 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"debuggeri","style":"position:relative;"},"children":[{"type":"text","value":"Debuggeri"},{"type":"element","tagName":"a","properties":{"href":"#debuggeri","ariaLabel":"debuggeri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutamassa edellisessä osassa on jo korostettu debuggaustaitojen tärkeyttä ja demonstroitu tulostamalla tapahtuvaa debuggausta. Visual Studio Code sisältää debuggausta varten "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"visuaalisen debuggerin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggaus aloitetaan määrittelemällä koodiin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"breakpoint"}]},{"type":"text","value":" eli kohta, johon debuggeri pysäyttää koodin suorituksen. Breakpoint asetetaan klikkaamalla hiirellä halutun koodirivin vasemmalta puolelta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä breakpoint on asetettu "},{"type":"element","tagName":"a","properties":{"href":"/osa-3/1-ehdot-silmukoissa"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" tehtävän "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Peräkkäisten summa"}]},{"type":"text","value":" hieman virheellisen ratkaisun riville 5:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/b2aa8f4cae6fd0db736f2cf1d62607f9/6e29b/4_1_5.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 39.130434782608695%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAv0lEQVQY042NW66DMAwFWQiO47wdY7glJEXd/8Iq+nelVmJ0/o5GM6WUZN3O8zyOo/euuubCXEVk0UVFFpGFuX7dpLrlwr33R2vtHM/R/oRrrarKzKWUlBIAmG9MsqwAUHLWbQUENEAWLV7fPM8A8y/zkpPzAbGyvJ6vozWugmjxHlMM0dEV2x/7GCPmQuSN+Vn7V/YhOu+ttTnmMUZlRgAD9+QQovc+xhBT3PemqvnDXdkYJLJEZD+Qc0R0R34DaJdB2A9pXSUAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b2aa8f4cae6fd0db736f2cf1d62607f9/a0b58/4_1_5.webp 230w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/bc10c/4_1_5.webp 460w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/966d8/4_1_5.webp 920w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/445df/4_1_5.webp 1380w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/a9e74/4_1_5.webp 1610w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b2aa8f4cae6fd0db736f2cf1d62607f9/81c8e/4_1_5.png 230w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/08a84/4_1_5.png 460w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/c0255/4_1_5.png 920w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/b1001/4_1_5.png 1380w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/6e29b/4_1_5.png 1610w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/b2aa8f4cae6fd0db736f2cf1d62607f9/c0255/4_1_5.png","alt":"4 1 5","title":"4 1 5","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Breakpointin asetuksen jälkeen valitaan valikosta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Run"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Start debugging"}]},{"type":"text","value":". Tämä avaa valintanäkymän, josta valitaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Python File"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/4ab241b5d1246646156624044be64914/adef7/4_1_6.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 36.52173913043478%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/klEQVQY043PyW6DMBSFYT9HEyZPYBsINpMxeGjSpqCmUt//aaoIRUpX7a9vec/igrxgSspgFzebYJdz8NvH9XNbb9v6/XVb398uwbvZWDO52aim4ZwLIUQpyroCVVnjUsmwnexVTBfSWdq7fPC4tVAtmVwyOaPW3nUuwiw6HqJHQHBR1Kp/3U7mzAcrRi9GX2kP6+FQNLuXfCePkCRJnDwCKINS8ODcYiajR933Y9fpYagFpxjlBD+DaZo8BSDEZVVZ67quH7WWbdtIJVVbMH6/J7+kaRY/BTAmCCFKKUKYMQ4hiuN4fyn+K0AITdMMoYxQUjBGKS0YRxj/Z/wD++1E6Al0/nYAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/4ab241b5d1246646156624044be64914/a0b58/4_1_6.webp 230w","/static/4ab241b5d1246646156624044be64914/bc10c/4_1_6.webp 460w","/static/4ab241b5d1246646156624044be64914/966d8/4_1_6.webp 920w","/static/4ab241b5d1246646156624044be64914/445df/4_1_6.webp 1380w","/static/4ab241b5d1246646156624044be64914/211fa/4_1_6.webp 1716w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/4ab241b5d1246646156624044be64914/81c8e/4_1_6.png 230w","/static/4ab241b5d1246646156624044be64914/08a84/4_1_6.png 460w","/static/4ab241b5d1246646156624044be64914/c0255/4_1_6.png 920w","/static/4ab241b5d1246646156624044be64914/b1001/4_1_6.png 1380w","/static/4ab241b5d1246646156624044be64914/adef7/4_1_6.png 1716w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/4ab241b5d1246646156624044be64914/c0255/4_1_6.png","alt":"4 1 6","title":"4 1 6","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggeri käynnistyy ja alkaa suorittaa koodia normaaliin tapaan, kunnes se törmää breakpointiin ja pysähtyy:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8a01f8e6fba73266b2dd512d79dfb681/3145a/4_1_7.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 46.95652173913043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABUElEQVQoz2WP4Y6kIBCEfYvbyyAigjoobdOgpwaGGe/93+myzGVzuf1SP6p/VLqq8j7ElPZ9n6fZGKOUBgBH5Dwtdp5hASQAmMxdiLZt5b+qHDq0ON/t2I9KaSmlUsoui1RStaJtOOd1zeq6rvk3KnSEM9rJKqW1HrTqei1/P93jMaPjFn5Y+AD4CfBhv6miM3v0k5lLuFdKCSGMMUQkpeS8bpr/HzYNbwoVEbWl6ied6rpOylZpZQG01iX/DvyFc84Yu91ujLHKr3vY431GY53FVY9Tmd11neqH4Sv/3swYE0JM0wQAxphq3X7tR9qPeMYc02tBH0Ig8tu2necZQti2jYi890QUCjnn67pSShUiNo2QUpbCn7uv63o+nyml1+v1eDxyzsdxvM3XeRxHjLFyzoWwLguO473vh74fUko55xjjuq6I6JxbClh4e1f4A1GXWrWtxlxFAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8a01f8e6fba73266b2dd512d79dfb681/a0b58/4_1_7.webp 230w","/static/8a01f8e6fba73266b2dd512d79dfb681/bc10c/4_1_7.webp 460w","/static/8a01f8e6fba73266b2dd512d79dfb681/966d8/4_1_7.webp 920w","/static/8a01f8e6fba73266b2dd512d79dfb681/445df/4_1_7.webp 1380w","/static/8a01f8e6fba73266b2dd512d79dfb681/78de1/4_1_7.webp 1840w","/static/8a01f8e6fba73266b2dd512d79dfb681/407bd/4_1_7.webp 2112w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8a01f8e6fba73266b2dd512d79dfb681/81c8e/4_1_7.png 230w","/static/8a01f8e6fba73266b2dd512d79dfb681/08a84/4_1_7.png 460w","/static/8a01f8e6fba73266b2dd512d79dfb681/c0255/4_1_7.png 920w","/static/8a01f8e6fba73266b2dd512d79dfb681/b1001/4_1_7.png 1380w","/static/8a01f8e6fba73266b2dd512d79dfb681/161ec/4_1_7.png 1840w","/static/8a01f8e6fba73266b2dd512d79dfb681/3145a/4_1_7.png 2112w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8a01f8e6fba73266b2dd512d79dfb681/c0255/4_1_7.png","alt":"4 1 7","title":"4 1 7","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vasempaan reunaan on avautunut näkymä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Variables"}]},{"type":"text","value":", joka kertoo senhetkisten muuttujien arvot. Koodia voidaan suorittaa rivi riviltä painelemalla alaspäin osoittavaa nuolta ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Step into"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa tilanteessa silmukkaa on suoritettu muutamia kertoja:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/748cafbc68941c7eaaebec0f9b422806/cc418/4_1_8.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 51.73913043478261%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABYlAAAWJQFJUiTwAAABbElEQVQoz3WP7Y6jMAxFeY62gUmcLyctJAETKKCWoWjf/41WVNpqd6U5Orp/ri3LxTB20zKv6zcRpRCNxZjaIR8QUUtE40x5HMecQmMRjbEfiybEcbjffG2UUUoJAVqbJkTjvbNGAwhQnENVccaq0+lyPrOPRVPXjWsa36BBpbSWEvgXdYG6G6JQkkk4w1spL/9ZhH7sQ3fzN3VgjJJSVCnq16tLrfT+7P3pJ4tIg0M02mqljdIAEqT8qngI0TlfspKx6ieLEKKQGpSGd3JQXHClQBt7fGEM55yxC2OsLNnflCUrunx/bL8i3euUh3mtU2+MtcYgYgjBe3+9XhFRvlFKAQAiTtO0LEvRtl1ThxhSjG3b0tVfu66bpomIcs79m6Mg6vv+kznnY7mua865ECAEAEghxLLM+74/n89931+v17Zt67ouy/L9h23b5vmYKVJKj8eDqHfOaW2U0p/LMUb8F+ccIlprtdaI+Bvm42YuwG95FAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/748cafbc68941c7eaaebec0f9b422806/a0b58/4_1_8.webp 230w","/static/748cafbc68941c7eaaebec0f9b422806/bc10c/4_1_8.webp 460w","/static/748cafbc68941c7eaaebec0f9b422806/966d8/4_1_8.webp 920w","/static/748cafbc68941c7eaaebec0f9b422806/445df/4_1_8.webp 1380w","/static/748cafbc68941c7eaaebec0f9b422806/78de1/4_1_8.webp 1840w","/static/748cafbc68941c7eaaebec0f9b422806/75f48/4_1_8.webp 1992w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/748cafbc68941c7eaaebec0f9b422806/81c8e/4_1_8.png 230w","/static/748cafbc68941c7eaaebec0f9b422806/08a84/4_1_8.png 460w","/static/748cafbc68941c7eaaebec0f9b422806/c0255/4_1_8.png 920w","/static/748cafbc68941c7eaaebec0f9b422806/b1001/4_1_8.png 1380w","/static/748cafbc68941c7eaaebec0f9b422806/161ec/4_1_8.png 1840w","/static/748cafbc68941c7eaaebec0f9b422806/cc418/4_1_8.png 1992w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/748cafbc68941c7eaaebec0f9b422806/c0255/4_1_8.png","alt":"4 1 8","title":"4 1 8","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggerin välilehti "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Debug console"}]},{"type":"text","value":" mahdollistaa myös lausekkeiden arvojen näyttämisen debuggaushetken muuttujien arvoilla. Voidaan esimerkiksi kokeilla, mikä silmukan lopetusehdon arvo on:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/cb417e312ed6b45c9910c5a50d7fa175/cb1ac/4_1_9.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.913043478260875%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABLUlEQVQoz2WQ207EIBRF+Qs1GW7n1tJSyghMp3WeNPr/n6TTiUmjKysEEnbOBnXdrp9fX+u6nnMehxFZSrtTW4sxxpTnesmvpbQyhgAAeECVc63nGjgwCxEDABGmNDlnrTXGGGuNd87Zx1kfVUM/zDGFPnTSCQsTCMPnR3l/n2uDNL+k9Pzr02F/V01jarn1nYSuYxZEdM5OcSj1zILOa+e039f/qpTmaUpEzCx7mBABAV9LGcfRe2+tM8Zo/VdjrGIWACTiPUbeg3OWCIkZkFjEWqv3u0e01qfTSW3b2+WyxDjV2mpt3b08E9HjY4koxigix7zWGhFzzqrWy7Jsy3Ldttu63sIwxpRDCHthCwAiAgB/JjvnREQ93vmoTcTeQ993BGB+R+kd84+f2t90809R3YMDEQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cb417e312ed6b45c9910c5a50d7fa175/a0b58/4_1_9.webp 230w","/static/cb417e312ed6b45c9910c5a50d7fa175/bc10c/4_1_9.webp 460w","/static/cb417e312ed6b45c9910c5a50d7fa175/966d8/4_1_9.webp 920w","/static/cb417e312ed6b45c9910c5a50d7fa175/445df/4_1_9.webp 1380w","/static/cb417e312ed6b45c9910c5a50d7fa175/78de1/4_1_9.webp 1840w","/static/cb417e312ed6b45c9910c5a50d7fa175/cb61f/4_1_9.webp 1936w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cb417e312ed6b45c9910c5a50d7fa175/81c8e/4_1_9.png 230w","/static/cb417e312ed6b45c9910c5a50d7fa175/08a84/4_1_9.png 460w","/static/cb417e312ed6b45c9910c5a50d7fa175/c0255/4_1_9.png 920w","/static/cb417e312ed6b45c9910c5a50d7fa175/b1001/4_1_9.png 1380w","/static/cb417e312ed6b45c9910c5a50d7fa175/161ec/4_1_9.png 1840w","/static/cb417e312ed6b45c9910c5a50d7fa175/cb1ac/4_1_9.png 1936w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/cb417e312ed6b45c9910c5a50d7fa175/c0255/4_1_9.png","alt":"4 1 9","title":"4 1 9","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa voi olla myös useita breakpointeja. Pysähtymisen jälkeen koodi voidaan taas käynnistää sinisellä kolmiolla ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Continue"}]},{"type":"text","value":") ja suoritus jatkuu, kunnes ohjelma törmää seuraavaan breakpointiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visuaalinen debuggeri on vaihtoehto debug-tulostuksille, mutta on mieltymyksistä kiinni, mitä debuggaustekniikoita kukin ohjelmoija käyttää. On hyvä kokeilla erilaisia tapoja ja valita itselle sopiva tapa."}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää Visual studio Code -editoria kurssin tehtävien tekemiseen
    • \n
    • Osaat suorittaa koodia interaktiivisen Python-tulkin avulla
    • \n

    Olemme tähän mennessä ohjelmoineet kaikki tehtävät kurssisivuille upotettuihin editori-ikkunoihin. Selaineditorissa tapahtuva ohjelmointi sopii hyvin kurssin alkuun, mutta siirrymme nyt käyttämään erillistä ohjelmointiin tarkoitettua editoria.

    Erilaisia ohjelmointiin sopivia editoreja on kymmeniä. Käytämme kurssilla viime vuosina suureen suosioon noussutta Visual Studio Code -editoria.

    Asenna nyt Visual Studio Code ja kurssin tehtävien testien suorittamiseen käytettävä TMC-plugin tämän ohjeen avulla. Valitse TMC-pluginissa organisaatioksi MOOC ja kurssiksi Ohjelmoinnin MOOC 2023.

    Tee ohjelma, joka kysyy käyttäjältä, mikä editori on käytössä. Ohjelma jatkaa, kunnes vastaus on Visual Studio Code.

    Seuraava käyttöesimerkki havainnollistaa ohjelman haluttua tulostusta:

    Editori: Emacs\nei ole hyvä\nEditori: Vim\nei ole hyvä\nEditori: Word\nsurkea\nEditori: Atom\nei ole hyvä\nEditori: Visual Studio Code\nloistava valinta!

    Jos käyttäjä kirjoittaa Word tai Notepad, ohjelma vastaa surkea. Muissa epäkelvoissa tapauksissa vastaus on ei ole hyvä.

    Ohjelman tulee toimia siten, että \"oikean vastauksen\" kirjoitusasu ei riipu siitä, kirjoitetaanko vastaus isoja vai pieniä kirjaimia käyttämällä:

    Editori: NOTEPAD\nsurkea\nEditori: viSUal STudiO cODe\nloistava valinta!

    Kirjainten koon voi jättää huomiotta esim. muuttamalla kirjaimet pieniksi merkkijonojen metodilla lower, jota voi käyttää seuraavasti:

    mjono = \"Visual Studio CODE\"\nif \"visual studio code\" == mjono.lower():\n    print(\"merkkijono oli etsitty!\")

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Koodin suorittaminen

    Visual Studio Codessa koodi suoritetaan painamalla vihreää kolmiota. Joskus koodisi suoritus voi jää kesken, esimerkiksi odottamaan käyttäjän syötettä tai ikuiseen silmukkaan, ja siirryt jo seuraavaan tehtävään. Kun yrität suorittaa seuraavan tehtävän koodia, tuleekin esille edellisen tehtävän kesken ollut suoritus. Joissain tilanteissa joudut sammuttamaan edellisen suorituksen painamalla yhtä aikaa näppäimiä Control+C, jotta saat suoritetuksi uuden tehtävän koodin.

    Interaktiivinen Python-tulkki

    Emme ole toistaiseksi puhuneet kurssilla sanallakaan eräästä Python-ohjelmoinnin tärkeimmästä työkalusta, interaktiivisesta komentotulkista.

    Komentotulkki käynnistyy antamalla komentoriviltä komento python3 (joissain tapauksissa, esim. Windowsilla komento saattaa olla python). Esim. Macilla komentotulkin avaaminen näyttää seuraavalta:

    \n \n \n \n \n \n \"4\n \n \n

    On olemassa myös selaimessa toimivia interaktiivisia tulkkeja, kuten https://www.python.org/shell/.

    Komentotulkki tarjoaa interaktiivisen tavan suorittaa Python-koodia rivi riviltä sitä mukaa kuin käyttäjä kirjoittaa koodia. Ideana on, että kun käyttäjä kirjoittaa rivin koodia, Python suorittaa rivin välittömästi ja näyttää rivin operaation tuloksen:

    \n \n \n \n \n \n \"4\n \n \n

    Komentotulkkiin on mahdollista kirjoittaa mitä tahansa Pythonia, muuttujien ja metodienkin määrittely on mahdollista:

    >>> t = [1,2,3,4,5]\n>>> for luku in t:\n...   print(luku)\n...\n1\n2\n3\n4\n5\n>>> def itseisarvo(luku):\n...   if luku<0:\n...      luku = -luku\n...   return luku\n...\n>>> x = 10\n>>> y = -7\n>>> itseisarvo(luku)\nTraceback (most recent call last):\n  File \"<stdin>\", line 1, in <module>\nNameError: name 'luku' is not defined\n>>> itseisarvo(x)\n10\n>>> itseisarvo(y)\n7\n>>>

    Parhaimmillaan komentotulkki on pienten tarkistusten tekemiseen, esim. miten tietty metodi toimii tai onko metodia ylipäätään olemassa:

    >>> \"TekstIä\".toupper()\nTraceback (most recent call last):\n  File \"<stdin>\", line 1, in <module>\nAttributeError: 'str' object has no attribute 'toupper'\n>>> \"TekstIä\".upper()\n'TEKSTIÄ'\n>>>

    Jos muistaa melkein jonkin metodin nimen, googlaamisen sijaan voi olla nopeampi käyttää komentotulkkia ja kysyä funktiolla dir, mitä metodeja tietyllä oliolla on:

    >>> dir(\"teksti\")\n['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',\n'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__',\n'__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',\n'__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',\n'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',\n'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find',\n'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit',\n'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join',\n'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust','rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase',\n'title', 'translate', 'upper', 'zfill']

    Kuten näemme, merkkijonoilla on suuri määrä metodeja. Kurssin tässä vaiheessa ei kannata välittää alaviivoja sisältävistä metodeista, mutta muut voivat olla käyttökelpoisia. Osa metodien toiminnasta voi selvitä kokeilemalla, osan toiminta selviää googlaamalla.

    Listojen metodeista käy ilmi seuraavaa:

    >>> dir([])\n['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',\n'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__',\n'__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__',\n'__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',\n'__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__',\n'__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop',\n'remove', 'reverse', 'sort']\n>>>

    Tarjolla näyttää siis olevan mm. metodit reverse ja clear. Kokeillaan niitä:

    >>> luvut = [1,2,3,4,5]\n>>> luvut.reverse()\n>>> luvut\n[5, 4, 3, 2, 1]\n>>> luvut.clear()\n>>> luvut\n[]

    Metodit siis tekevät aika lailla sen, mitä nimen perusteella voi olettaa.

    Huomaa, että komentotulkki ei näytä mitään tulosta, kun kutsutaan esim. metodia lista.reverse(). Mistä tämä johtuu? Komentotulkki tekee komentojen suorituksen yhteydessä tulostuksen vain, jos suoritetulla koodirivillä on jokin arvo. Edellisessä esimerkissä saatiin tulostettua listan luvut arvo kirjoittamalla komentotulkkiin pelkkä muuttujan nimi. Komentotulkissa ei siis useinkaan ole tarvetta kirjottaa erikseen print-komentoja.

    Tärkeä komento on exit(), joka sulkee komentotulkin. Erityisesti jos käytät komentotulkkia Visual Studio Codessa, se tulee muistaa sulkea, ennen kuin suoritat jonkin ohjelman uudelleen \"vihreällä kolmiolla\". Jos tämä unohtuu, on seurauksena hieman erikoinen virheilmoitus:

    \n \n \n \n \n \n \"4\n \n \n

    Debuggeri

    Muutamassa edellisessä osassa on jo korostettu debuggaustaitojen tärkeyttä ja demonstroitu tulostamalla tapahtuvaa debuggausta. Visual Studio Code sisältää debuggausta varten visuaalisen debuggerin.

    Debuggaus aloitetaan määrittelemällä koodiin breakpoint eli kohta, johon debuggeri pysäyttää koodin suorituksen. Breakpoint asetetaan klikkaamalla hiirellä halutun koodirivin vasemmalta puolelta.

    Seuraavassa esimerkissä breakpoint on asetettu edellisen osan tehtävän Peräkkäisten summa hieman virheellisen ratkaisun riville 5:

    \n \n \n \n \n \n \"4\n \n \n

    Vasempaan reunaan on avautunut näkymä Variables, joka kertoo senhetkisten muuttujien arvot. Koodia voidaan suorittaa rivi riviltä painelemalla alaspäin osoittavaa nuolta (Step into).

    Seuraavassa tilanteessa silmukkaa on suoritettu muutamia kertoja:

    \n \n \n \n \n \n \"4\n \n \n

    Debuggerin välilehti Debug console mahdollistaa myös lausekkeiden arvojen näyttämisen debuggaushetken muuttujien arvoilla. Voidaan esimerkiksi kokeilla, mikä silmukan lopetusehdon arvo on:

    \n \n \n \n \n \n \"4\n \n \n

    Ohjelmassa voi olla myös useita breakpointeja. Pysähtymisen jälkeen koodi voidaan taas käynnistää sinisellä kolmiolla (Continue) ja suoritus jatkuu, kunnes ohjelma törmää seuraavaan breakpointiin.

    Visuaalinen debuggeri on vaihtoehto debug-tulostuksille, mutta on mieltymyksistä kiinni, mitä debuggaustekniikoita kukin ohjelmoija käyttää. On hyvä kokeilla erilaisia tapoja ja valita itselle sopiva tapa.

    ","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/1-vscode.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää Visual studio Code -editoria kurssin tehtävien tekemiseen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat suorittaa koodia interaktiivisen Python-tulkin avulla"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän mennessä ohjelmoineet kaikki tehtävät kurssisivuille upotettuihin editori-ikkunoihin. Selaineditorissa tapahtuva ohjelmointi sopii hyvin kurssin alkuun, mutta siirrymme nyt käyttämään erillistä ohjelmointiin tarkoitettua editoria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erilaisia ohjelmointiin sopivia editoreja on kymmeniä. Käytämme kurssilla viime vuosina suureen suosioon noussutta "},{"type":"element","tagName":"a","properties":{"href":"https://code.visualstudio.com/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visual Studio Code"}]},{"type":"text","value":" -editoria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asenna nyt Visual Studio Code ja kurssin tehtävien testien suorittamiseen käytettävä TMC-plugin "},{"type":"element","tagName":"a","properties":{"href":"https://www.mooc.fi/fi/installation/vscode","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tämän ohjeen"}]},{"type":"text","value":" avulla. Valitse TMC-pluginissa organisaatioksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"MOOC"}]},{"type":"text","value":" ja kurssiksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin MOOC 2023"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hello Visual Studio Code","tmcname":"osa04-01_hello_visualstudio_code"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä, mikä editori on käytössä. Ohjelma jatkaa, kunnes vastaus on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Visual Studio Code"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava käyttöesimerkki havainnollistaa ohjelman haluttua tulostusta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Editori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Emacs"}]},{"type":"text","value":"\nei ole hyvä\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vim"}]},{"type":"text","value":"\nei ole hyvä\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Word"}]},{"type":"text","value":"\nsurkea\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Atom"}]},{"type":"text","value":"\nei ole hyvä\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Visual Studio Code"}]},{"type":"text","value":"\nloistava valinta!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos käyttäjä kirjoittaa Word tai Notepad, ohjelma vastaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"surkea"}]},{"type":"text","value":". Muissa epäkelvoissa tapauksissa vastaus on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole hyvä"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia siten, että \"oikean vastauksen\" kirjoitusasu ei riipu siitä, kirjoitetaanko vastaus isoja vai pieniä kirjaimia käyttämällä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Editori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"NOTEPAD"}]},{"type":"text","value":"\nsurkea\nEditori: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"viSUal STudiO cODe"}]},{"type":"text","value":"\nloistava valinta!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjainten koon voi jättää huomiotta esim. muuttamalla kirjaimet pieniksi merkkijonojen metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lower"}]},{"type":"text","value":", jota voi käyttää seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Visual Studio CODE\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"visual studio code\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lower"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkkijono oli etsitty!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"koodin-suorittaminen","style":"position:relative;"},"children":[{"type":"text","value":"Koodin suorittaminen"},{"type":"element","tagName":"a","properties":{"href":"#koodin-suorittaminen","ariaLabel":"koodin suorittaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visual Studio Codessa koodi suoritetaan painamalla vihreää kolmiota. Joskus koodisi suoritus voi jää kesken, esimerkiksi odottamaan käyttäjän syötettä tai ikuiseen silmukkaan, ja siirryt jo seuraavaan tehtävään. Kun yrität suorittaa seuraavan tehtävän koodia, tuleekin esille edellisen tehtävän kesken ollut suoritus. Joissain tilanteissa joudut sammuttamaan edellisen suorituksen painamalla yhtä aikaa näppäimiä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Control"}]},{"type":"text","value":"+"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"C"}]},{"type":"text","value":", jotta saat suoritetuksi uuden tehtävän koodin."}]},{"type":"element","tagName":"h2","properties":{"id":"interaktiivinen-python-tulkki","style":"position:relative;"},"children":[{"type":"text","value":"Interaktiivinen Python-tulkki"},{"type":"element","tagName":"a","properties":{"href":"#interaktiivinen-python-tulkki","ariaLabel":"interaktiivinen python tulkki permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Emme ole toistaiseksi puhuneet kurssilla sanallakaan eräästä Python-ohjelmoinnin tärkeimmästä työkalusta, interaktiivisesta komentotulkista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkki käynnistyy antamalla komentoriviltä komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python3"}]},{"type":"text","value":" (joissain tapauksissa, esim. Windowsilla komento saattaa olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"). Esim. Macilla komentotulkin avaaminen näyttää seuraavalta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/0f246/4_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 17.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAArUlEQVQI13XLywqDMBCFYd//tbroMhiYZFppBG/YJAQTN+o4sVS77bc6HPiL2/Pe1E3ftc8HlmWJiFprKWVVVQAgpUT8/gCglBJCGGPatm1ORV2Zruve49s5F2O01nrvnXMppb7vQwjHfwU+cBxHRBRCAIB5GaUUIg7DoLUGgJRSjDGEME2T995aO8/zLyainDMzExEzH8ex7zsz55yvvW0bEW2ndV2XZSGiK/4AItbceE5Q2z8AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/a0b58/4_1_1.webp 230w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/bc10c/4_1_1.webp 460w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/966d8/4_1_1.webp 920w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/34186/4_1_1.webp 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/81c8e/4_1_1.png 230w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/08a84/4_1_1.png 460w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/c0255/4_1_1.png 920w","/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/0f246/4_1_1.png 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7267d91f6d4cbf0f25e0a55ca8dea0ce/c0255/4_1_1.png","alt":"4 1 1","title":"4 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkki on myös mahdollista avata Visual Studio Coden sisälle, ensin suorittamalla jokin ohjelma \"vihreällä kolmiolla\" ja sen jälkeen kirjoittamalla avautuvaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Terminal"}]},{"type":"text","value":"-näkymään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python3"}]},{"type":"text","value":" (tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"python"}]},{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/895b071970fc467ecad71d69e6d70d5a/e431d/4_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 49.130434782608695%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABYlAAAWJQFJUiTwAAABF0lEQVQoz52RWW7DIBCGuUcLw2I2Ox42O7hZrtCXqve/SgVOokh5aNVPCM32s8wQjDHFlHIOIRhjnfP78r7ttgVuEWedMuZo58mNNak4e+JHnxYsBXPBcfbaaGOsbSKntZZqMM4111qplGfySyYL4h2AASeUUiG4EJxzAAD6BOs8uwr4G6MUGPQU6Wl2K/wNym4y9hD/GwIAfyyFO7vdxLajtUbEaZqsMcZZLsUDKSXnfBzHdV0Ph8M8z62kt5PUWtd1RcRSSs4ZQ9hy+UjLmkuKMYSwx2OMy7KkNtOcOqUUcr1eL5dLrXXbtvPpVOrxO54/h4jSDEoJIeD+yNdfkG3bEHE/MvarQgiD1koPzjml1GNmrw37AVG5Vxy3ozSFAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/895b071970fc467ecad71d69e6d70d5a/a0b58/4_1_2.webp 230w","/static/895b071970fc467ecad71d69e6d70d5a/bc10c/4_1_2.webp 460w","/static/895b071970fc467ecad71d69e6d70d5a/966d8/4_1_2.webp 920w","/static/895b071970fc467ecad71d69e6d70d5a/445df/4_1_2.webp 1380w","/static/895b071970fc467ecad71d69e6d70d5a/78de1/4_1_2.webp 1840w","/static/895b071970fc467ecad71d69e6d70d5a/609ff/4_1_2.webp 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/895b071970fc467ecad71d69e6d70d5a/81c8e/4_1_2.png 230w","/static/895b071970fc467ecad71d69e6d70d5a/08a84/4_1_2.png 460w","/static/895b071970fc467ecad71d69e6d70d5a/c0255/4_1_2.png 920w","/static/895b071970fc467ecad71d69e6d70d5a/b1001/4_1_2.png 1380w","/static/895b071970fc467ecad71d69e6d70d5a/161ec/4_1_2.png 1840w","/static/895b071970fc467ecad71d69e6d70d5a/e431d/4_1_2.png 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/895b071970fc467ecad71d69e6d70d5a/c0255/4_1_2.png","alt":"4 1 2","title":"4 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On olemassa myös selaimessa toimivia interaktiivisia tulkkeja, kuten "},{"type":"element","tagName":"a","properties":{"href":"https://www.python.org/shell/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://www.python.org/shell/"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkki tarjoaa interaktiivisen tavan suorittaa Python-koodia rivi riviltä sitä mukaa kuin käyttäjä kirjoittaa koodia. Ideana on, että kun käyttäjä kirjoittaa rivin koodia, Python suorittaa rivin välittömästi ja näyttää rivin operaation tuloksen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/7977922a8e37fd253a7fd34e364e6d58/0f246/4_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 19.565217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAkElEQVQI143LwQqDMAwAUP//53qQRq0zKmJALe0wB3HRZtDtOti7v6Kua0QchmEcRwCoqso5BwDOub7vjTFEpKoi8srO8xQRzYppmh4ZESHiuq7HcXjvY4zMHELw3jPzM4sxLsvCzN88z3PTNGVZtm2773tKSUTu+9Y/FETUdZ21FgAQcdu2kF3Xparph09+Az024L8JLoKAAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7977922a8e37fd253a7fd34e364e6d58/a0b58/4_1_3.webp 230w","/static/7977922a8e37fd253a7fd34e364e6d58/bc10c/4_1_3.webp 460w","/static/7977922a8e37fd253a7fd34e364e6d58/966d8/4_1_3.webp 920w","/static/7977922a8e37fd253a7fd34e364e6d58/34186/4_1_3.webp 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7977922a8e37fd253a7fd34e364e6d58/81c8e/4_1_3.png 230w","/static/7977922a8e37fd253a7fd34e364e6d58/08a84/4_1_3.png 460w","/static/7977922a8e37fd253a7fd34e364e6d58/c0255/4_1_3.png 920w","/static/7977922a8e37fd253a7fd34e364e6d58/0f246/4_1_3.png 1118w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7977922a8e37fd253a7fd34e364e6d58/c0255/4_1_3.png","alt":"4 1 3","title":"4 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komentotulkkiin on mahdollista kirjoittaa mitä tahansa Pythonia, muuttujien ja metodienkin määrittely on mahdollista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" t "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" t"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"itseisarvo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"luku\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luku\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" itseisarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nTraceback "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"most recent call last"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n File "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" line "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"module"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"\nNameError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" name "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'luku'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" defined\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" itseisarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" itseisarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parhaimmillaan komentotulkki on pienten tarkistusten tekemiseen, esim. miten tietty metodi toimii tai onko metodia ylipäätään olemassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"TekstIä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"toupper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nTraceback "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"most recent call last"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n File "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" line "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"module"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"\nAttributeError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'str'"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"object"}]},{"type":"text","value":" has no attribute "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'toupper'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"TekstIä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"upper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'TEKSTIÄ'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos muistaa melkein jonkin metodin nimen, googlaamisen sijaan voi olla nopeampi käyttää komentotulkkia ja kysyä funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"dir"}]},{"type":"text","value":", mitä metodeja tietyllä oliolla on:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"teksti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__add__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__class__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__contains__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__delattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__dir__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__doc__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__eq__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__format__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ge__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getattribute__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getnewargs__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__gt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__hash__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init_subclass__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__iter__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__le__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__len__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__lt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__mod__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__mul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ne__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__new__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce_ex__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__repr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__rmod__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__rmul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__setattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__sizeof__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__str__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__subclasshook__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'capitalize'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'casefold'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'center'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'count'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'encode'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'endswith'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'expandtabs'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'find'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'format'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'format_map'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'index'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isalnum'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isalpha'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isascii'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isdecimal'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isdigit'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isidentifier'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'islower'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isnumeric'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isprintable'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isspace'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'istitle'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'isupper'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'join'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'ljust'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'lower'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'lstrip'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'maketrans'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'partition'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'replace'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rfind'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rindex'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rjust'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rpartition'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rsplit'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'rstrip'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'split'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'splitlines'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'startswith'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'strip'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'swapcase'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'title'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'translate'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'upper'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'zfill'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten näemme, merkkijonoilla on suuri määrä metodeja. Kurssin tässä vaiheessa ei kannata välittää alaviivoja sisältävistä metodeista, mutta muut voivat olla käyttökelpoisia. Osa metodien toiminnasta voi selvitä kokeilemalla, osan toiminta selviää googlaamalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listojen metodeista käy ilmi seuraavaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__add__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__class__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__contains__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__delattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__delitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__dir__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__doc__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__eq__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__format__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ge__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getattribute__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__getitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__gt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__hash__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__iadd__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__imul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__init_subclass__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__iter__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__le__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__len__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__lt__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__mul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__ne__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__new__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reduce_ex__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__repr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__reversed__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__rmul__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__setattr__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__setitem__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__sizeof__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__str__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'__subclasshook__'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'append'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'clear'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'copy'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'count'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'extend'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'index'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'insert'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'pop'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'remove'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'reverse'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'sort'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarjolla näyttää siis olevan mm. metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"reverse"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"clear"}]},{"type":"text","value":". Kokeillaan niitä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"reverse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"clear"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" luvut\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit siis tekevät aika lailla sen, mitä nimen perusteella voi olettaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että komentotulkki ei näytä mitään tulosta, kun kutsutaan esim. metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista.reverse()"}]},{"type":"text","value":". Mistä tämä johtuu? Komentotulkki tekee komentojen suorituksen yhteydessä tulostuksen vain, jos suoritetulla koodirivillä on jokin arvo. Edellisessä esimerkissä saatiin tulostettua listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":" arvo kirjoittamalla komentotulkkiin pelkkä muuttujan nimi. Komentotulkissa ei siis useinkaan ole tarvetta kirjottaa erikseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tärkeä komento on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exit()"}]},{"type":"text","value":", joka sulkee komentotulkin. Erityisesti jos käytät komentotulkkia Visual Studio Codessa, se tulee muistaa sulkea, ennen kuin suoritat jonkin ohjelman uudelleen \"vihreällä kolmiolla\". Jos tämä unohtuu, on seurauksena hieman erikoinen virheilmoitus:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/030410f1be5c4a9d02209afb96fe30e4/966ce/4_1_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 28.695652173913043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA7klEQVQY023G0W6EIBCFYd9jBQZQgWEERdx1FTdbTd//lZqYthdNT76T/FXOkyMa0phzTikhekRy1nXGInrvyVqrlP4DVBNJVwbtOA8u9tA2QggAkFJKgO+4kv+MMc6uc8YAZKV0E4YQxwRaMyFqzm91fWOXK2rGfoGSoJSQwEEwwatnTFtM52MtcVrD+KA4O8rWz67PjiaDFz9Znwy+0v2dl1ea15BWjNVxnp/HeX4ceynPZdme615KWbfXvpdtC9QTInnfe+o92c5YYwjRIS4uVHcfHxgWGobGRt1FbaI2wyXqLsj2H6oj1S7KfgH1/DpLnHkC8gAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/030410f1be5c4a9d02209afb96fe30e4/a0b58/4_1_4.webp 230w","/static/030410f1be5c4a9d02209afb96fe30e4/bc10c/4_1_4.webp 460w","/static/030410f1be5c4a9d02209afb96fe30e4/966d8/4_1_4.webp 920w","/static/030410f1be5c4a9d02209afb96fe30e4/445df/4_1_4.webp 1380w","/static/030410f1be5c4a9d02209afb96fe30e4/78de1/4_1_4.webp 1840w","/static/030410f1be5c4a9d02209afb96fe30e4/df82e/4_1_4.webp 2050w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/030410f1be5c4a9d02209afb96fe30e4/81c8e/4_1_4.png 230w","/static/030410f1be5c4a9d02209afb96fe30e4/08a84/4_1_4.png 460w","/static/030410f1be5c4a9d02209afb96fe30e4/c0255/4_1_4.png 920w","/static/030410f1be5c4a9d02209afb96fe30e4/b1001/4_1_4.png 1380w","/static/030410f1be5c4a9d02209afb96fe30e4/161ec/4_1_4.png 1840w","/static/030410f1be5c4a9d02209afb96fe30e4/966ce/4_1_4.png 2050w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/030410f1be5c4a9d02209afb96fe30e4/c0255/4_1_4.png","alt":"4 1 4","title":"4 1 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"debuggeri","style":"position:relative;"},"children":[{"type":"text","value":"Debuggeri"},{"type":"element","tagName":"a","properties":{"href":"#debuggeri","ariaLabel":"debuggeri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutamassa edellisessä osassa on jo korostettu debuggaustaitojen tärkeyttä ja demonstroitu tulostamalla tapahtuvaa debuggausta. Visual Studio Code sisältää debuggausta varten "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"visuaalisen debuggerin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggaus aloitetaan määrittelemällä koodiin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"breakpoint"}]},{"type":"text","value":" eli kohta, johon debuggeri pysäyttää koodin suorituksen. Breakpoint asetetaan klikkaamalla hiirellä halutun koodirivin vasemmalta puolelta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä breakpoint on asetettu "},{"type":"element","tagName":"a","properties":{"href":"/osa-3/1-ehdot-silmukoissa"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" tehtävän "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Peräkkäisten summa"}]},{"type":"text","value":" hieman virheellisen ratkaisun riville 5:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/b2aa8f4cae6fd0db736f2cf1d62607f9/6e29b/4_1_5.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 39.130434782608695%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAv0lEQVQY042NW66DMAwFWQiO47wdY7glJEXd/8Iq+nelVmJ0/o5GM6WUZN3O8zyOo/euuubCXEVk0UVFFpGFuX7dpLrlwr33R2vtHM/R/oRrrarKzKWUlBIAmG9MsqwAUHLWbQUENEAWLV7fPM8A8y/zkpPzAbGyvJ6vozWugmjxHlMM0dEV2x/7GCPmQuSN+Vn7V/YhOu+ttTnmMUZlRgAD9+QQovc+xhBT3PemqvnDXdkYJLJEZD+Qc0R0R34DaJdB2A9pXSUAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b2aa8f4cae6fd0db736f2cf1d62607f9/a0b58/4_1_5.webp 230w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/bc10c/4_1_5.webp 460w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/966d8/4_1_5.webp 920w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/445df/4_1_5.webp 1380w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/a9e74/4_1_5.webp 1610w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b2aa8f4cae6fd0db736f2cf1d62607f9/81c8e/4_1_5.png 230w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/08a84/4_1_5.png 460w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/c0255/4_1_5.png 920w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/b1001/4_1_5.png 1380w","/static/b2aa8f4cae6fd0db736f2cf1d62607f9/6e29b/4_1_5.png 1610w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/b2aa8f4cae6fd0db736f2cf1d62607f9/c0255/4_1_5.png","alt":"4 1 5","title":"4 1 5","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Breakpointin asetuksen jälkeen valitaan valikosta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Run"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Start debugging"}]},{"type":"text","value":". Tämä avaa valintanäkymän, josta valitaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Python File"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/4ab241b5d1246646156624044be64914/adef7/4_1_6.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 36.52173913043478%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/klEQVQY043PyW6DMBSFYT9HEyZPYBsINpMxeGjSpqCmUt//aaoIRUpX7a9vec/igrxgSspgFzebYJdz8NvH9XNbb9v6/XVb398uwbvZWDO52aim4ZwLIUQpyroCVVnjUsmwnexVTBfSWdq7fPC4tVAtmVwyOaPW3nUuwiw6HqJHQHBR1Kp/3U7mzAcrRi9GX2kP6+FQNLuXfCePkCRJnDwCKINS8ODcYiajR933Y9fpYagFpxjlBD+DaZo8BSDEZVVZ67quH7WWbdtIJVVbMH6/J7+kaRY/BTAmCCFKKUKYMQ4hiuN4fyn+K0AITdMMoYxQUjBGKS0YRxj/Z/wD++1E6Al0/nYAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/4ab241b5d1246646156624044be64914/a0b58/4_1_6.webp 230w","/static/4ab241b5d1246646156624044be64914/bc10c/4_1_6.webp 460w","/static/4ab241b5d1246646156624044be64914/966d8/4_1_6.webp 920w","/static/4ab241b5d1246646156624044be64914/445df/4_1_6.webp 1380w","/static/4ab241b5d1246646156624044be64914/211fa/4_1_6.webp 1716w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/4ab241b5d1246646156624044be64914/81c8e/4_1_6.png 230w","/static/4ab241b5d1246646156624044be64914/08a84/4_1_6.png 460w","/static/4ab241b5d1246646156624044be64914/c0255/4_1_6.png 920w","/static/4ab241b5d1246646156624044be64914/b1001/4_1_6.png 1380w","/static/4ab241b5d1246646156624044be64914/adef7/4_1_6.png 1716w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/4ab241b5d1246646156624044be64914/c0255/4_1_6.png","alt":"4 1 6","title":"4 1 6","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggeri käynnistyy ja alkaa suorittaa koodia normaaliin tapaan, kunnes se törmää breakpointiin ja pysähtyy:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8a01f8e6fba73266b2dd512d79dfb681/3145a/4_1_7.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 46.95652173913043%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABUElEQVQoz2WP4Y6kIBCEfYvbyyAigjoobdOgpwaGGe/93+myzGVzuf1SP6p/VLqq8j7ElPZ9n6fZGKOUBgBH5Dwtdp5hASQAmMxdiLZt5b+qHDq0ON/t2I9KaSmlUsoui1RStaJtOOd1zeq6rvk3KnSEM9rJKqW1HrTqei1/P93jMaPjFn5Y+AD4CfBhv6miM3v0k5lLuFdKCSGMMUQkpeS8bpr/HzYNbwoVEbWl6ied6rpOylZpZQG01iX/DvyFc84Yu91ujLHKr3vY431GY53FVY9Tmd11neqH4Sv/3swYE0JM0wQAxphq3X7tR9qPeMYc02tBH0Ig8tu2necZQti2jYi890QUCjnn67pSShUiNo2QUpbCn7uv63o+nyml1+v1eDxyzsdxvM3XeRxHjLFyzoWwLguO473vh74fUko55xjjuq6I6JxbClh4e1f4A1GXWrWtxlxFAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8a01f8e6fba73266b2dd512d79dfb681/a0b58/4_1_7.webp 230w","/static/8a01f8e6fba73266b2dd512d79dfb681/bc10c/4_1_7.webp 460w","/static/8a01f8e6fba73266b2dd512d79dfb681/966d8/4_1_7.webp 920w","/static/8a01f8e6fba73266b2dd512d79dfb681/445df/4_1_7.webp 1380w","/static/8a01f8e6fba73266b2dd512d79dfb681/78de1/4_1_7.webp 1840w","/static/8a01f8e6fba73266b2dd512d79dfb681/407bd/4_1_7.webp 2112w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8a01f8e6fba73266b2dd512d79dfb681/81c8e/4_1_7.png 230w","/static/8a01f8e6fba73266b2dd512d79dfb681/08a84/4_1_7.png 460w","/static/8a01f8e6fba73266b2dd512d79dfb681/c0255/4_1_7.png 920w","/static/8a01f8e6fba73266b2dd512d79dfb681/b1001/4_1_7.png 1380w","/static/8a01f8e6fba73266b2dd512d79dfb681/161ec/4_1_7.png 1840w","/static/8a01f8e6fba73266b2dd512d79dfb681/3145a/4_1_7.png 2112w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8a01f8e6fba73266b2dd512d79dfb681/c0255/4_1_7.png","alt":"4 1 7","title":"4 1 7","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vasempaan reunaan on avautunut näkymä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Variables"}]},{"type":"text","value":", joka kertoo senhetkisten muuttujien arvot. Koodia voidaan suorittaa rivi riviltä painelemalla alaspäin osoittavaa nuolta ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Step into"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa tilanteessa silmukkaa on suoritettu muutamia kertoja:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/748cafbc68941c7eaaebec0f9b422806/cc418/4_1_8.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 51.73913043478261%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABYlAAAWJQFJUiTwAAABbElEQVQoz3WP7Y6jMAxFeY62gUmcLyctJAETKKCWoWjf/41WVNpqd6U5Orp/ri3LxTB20zKv6zcRpRCNxZjaIR8QUUtE40x5HMecQmMRjbEfiybEcbjffG2UUUoJAVqbJkTjvbNGAwhQnENVccaq0+lyPrOPRVPXjWsa36BBpbSWEvgXdYG6G6JQkkk4w1spL/9ZhH7sQ3fzN3VgjJJSVCnq16tLrfT+7P3pJ4tIg0M02mqljdIAEqT8qngI0TlfspKx6ieLEKKQGpSGd3JQXHClQBt7fGEM55yxC2OsLNnflCUrunx/bL8i3euUh3mtU2+MtcYgYgjBe3+9XhFRvlFKAQAiTtO0LEvRtl1ThxhSjG3b0tVfu66bpomIcs79m6Mg6vv+kznnY7mua865ECAEAEghxLLM+74/n89931+v17Zt67ouy/L9h23b5vmYKVJKj8eDqHfOaW2U0p/LMUb8F+ccIlprtdaI+Bvm42YuwG95FAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/748cafbc68941c7eaaebec0f9b422806/a0b58/4_1_8.webp 230w","/static/748cafbc68941c7eaaebec0f9b422806/bc10c/4_1_8.webp 460w","/static/748cafbc68941c7eaaebec0f9b422806/966d8/4_1_8.webp 920w","/static/748cafbc68941c7eaaebec0f9b422806/445df/4_1_8.webp 1380w","/static/748cafbc68941c7eaaebec0f9b422806/78de1/4_1_8.webp 1840w","/static/748cafbc68941c7eaaebec0f9b422806/75f48/4_1_8.webp 1992w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/748cafbc68941c7eaaebec0f9b422806/81c8e/4_1_8.png 230w","/static/748cafbc68941c7eaaebec0f9b422806/08a84/4_1_8.png 460w","/static/748cafbc68941c7eaaebec0f9b422806/c0255/4_1_8.png 920w","/static/748cafbc68941c7eaaebec0f9b422806/b1001/4_1_8.png 1380w","/static/748cafbc68941c7eaaebec0f9b422806/161ec/4_1_8.png 1840w","/static/748cafbc68941c7eaaebec0f9b422806/cc418/4_1_8.png 1992w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/748cafbc68941c7eaaebec0f9b422806/c0255/4_1_8.png","alt":"4 1 8","title":"4 1 8","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Debuggerin välilehti "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Debug console"}]},{"type":"text","value":" mahdollistaa myös lausekkeiden arvojen näyttämisen debuggaushetken muuttujien arvoilla. Voidaan esimerkiksi kokeilla, mikä silmukan lopetusehdon arvo on:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/cb417e312ed6b45c9910c5a50d7fa175/cb1ac/4_1_9.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.913043478260875%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABLUlEQVQoz2WQ207EIBRF+Qs1GW7n1tJSyghMp3WeNPr/n6TTiUmjKysEEnbOBnXdrp9fX+u6nnMehxFZSrtTW4sxxpTnesmvpbQyhgAAeECVc63nGjgwCxEDABGmNDlnrTXGGGuNd87Zx1kfVUM/zDGFPnTSCQsTCMPnR3l/n2uDNL+k9Pzr02F/V01jarn1nYSuYxZEdM5OcSj1zILOa+e039f/qpTmaUpEzCx7mBABAV9LGcfRe2+tM8Zo/VdjrGIWACTiPUbeg3OWCIkZkFjEWqv3u0e01qfTSW3b2+WyxDjV2mpt3b08E9HjY4koxigix7zWGhFzzqrWy7Jsy3Ldttu63sIwxpRDCHthCwAiAgB/JjvnREQ93vmoTcTeQ993BGB+R+kd84+f2t90809R3YMDEQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cb417e312ed6b45c9910c5a50d7fa175/a0b58/4_1_9.webp 230w","/static/cb417e312ed6b45c9910c5a50d7fa175/bc10c/4_1_9.webp 460w","/static/cb417e312ed6b45c9910c5a50d7fa175/966d8/4_1_9.webp 920w","/static/cb417e312ed6b45c9910c5a50d7fa175/445df/4_1_9.webp 1380w","/static/cb417e312ed6b45c9910c5a50d7fa175/78de1/4_1_9.webp 1840w","/static/cb417e312ed6b45c9910c5a50d7fa175/cb61f/4_1_9.webp 1936w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cb417e312ed6b45c9910c5a50d7fa175/81c8e/4_1_9.png 230w","/static/cb417e312ed6b45c9910c5a50d7fa175/08a84/4_1_9.png 460w","/static/cb417e312ed6b45c9910c5a50d7fa175/c0255/4_1_9.png 920w","/static/cb417e312ed6b45c9910c5a50d7fa175/b1001/4_1_9.png 1380w","/static/cb417e312ed6b45c9910c5a50d7fa175/161ec/4_1_9.png 1840w","/static/cb417e312ed6b45c9910c5a50d7fa175/cb1ac/4_1_9.png 1936w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/cb417e312ed6b45c9910c5a50d7fa175/c0255/4_1_9.png","alt":"4 1 9","title":"4 1 9","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa voi olla myös useita breakpointeja. Pysähtymisen jälkeen koodi voidaan taas käynnistää sinisellä kolmiolla ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Continue"}]},{"type":"text","value":") ja suoritus jatkuu, kunnes ohjelma törmää seuraavaan breakpointiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visuaalinen debuggeri on vaihtoehto debug-tulostuksille, mutta on mieltymyksistä kiinni, mitä debuggaustekniikoita kukin ohjelmoija käyttää. On hyvä kokeilla erilaisia tapoja ja valita itselle sopiva tapa."}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat käyttää Visual studio Code -editoria kurssin tehtävien tekemiseen
    • \n
    • Osaat suorittaa koodia interaktiivisen Python-tulkin avulla
    • \n

    Olemme tähän mennessä ohjelmoineet kaikki tehtävät kurssisivuille upotettuihin editori-ikkunoihin. Selaineditorissa tapahtuva ohjelmointi sopii hyvin kurssin alkuun, mutta siirrymme nyt käyttämään erillistä ohjelmointiin tarkoitettua editoria.

    Erilaisia ohjelmointiin sopivia editoreja on kymmeniä. Käytämme kurssilla viime vuosina suureen suosioon noussutta Visual Studio Code -editoria.

    Asenna nyt Visual Studio Code ja kurssin tehtävien testien suorittamiseen käytettävä TMC-plugin tämän ohjeen avulla. Valitse TMC-pluginissa organisaatioksi MOOC ja kurssiksi Ohjelmoinnin MOOC 2023.

    Tee ohjelma, joka kysyy käyttäjältä, mikä editori on käytössä. Ohjelma jatkaa, kunnes vastaus on Visual Studio Code.

    Seuraava käyttöesimerkki havainnollistaa ohjelman haluttua tulostusta:

    Editori: Emacs\nei ole hyvä\nEditori: Vim\nei ole hyvä\nEditori: Word\nsurkea\nEditori: Atom\nei ole hyvä\nEditori: Visual Studio Code\nloistava valinta!

    Jos käyttäjä kirjoittaa Word tai Notepad, ohjelma vastaa surkea. Muissa epäkelvoissa tapauksissa vastaus on ei ole hyvä.

    Ohjelman tulee toimia siten, että \"oikean vastauksen\" kirjoitusasu ei riipu siitä, kirjoitetaanko vastaus isoja vai pieniä kirjaimia käyttämällä:

    Editori: NOTEPAD\nsurkea\nEditori: viSUal STudiO cODe\nloistava valinta!

    Kirjainten koon voi jättää huomiotta esim. muuttamalla kirjaimet pieniksi merkkijonojen metodilla lower, jota voi käyttää seuraavasti:

    mjono = \"Visual Studio CODE\"\nif \"visual studio code\" == mjono.lower():\n    print(\"merkkijono oli etsitty!\")

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Koodin suorittaminen

    Visual Studio Codessa koodi suoritetaan painamalla vihreää kolmiota. Joskus koodisi suoritus voi jää kesken, esimerkiksi odottamaan käyttäjän syötettä tai ikuiseen silmukkaan, ja siirryt jo seuraavaan tehtävään. Kun yrität suorittaa seuraavan tehtävän koodia, tuleekin esille edellisen tehtävän kesken ollut suoritus. Joissain tilanteissa joudut sammuttamaan edellisen suorituksen painamalla yhtä aikaa näppäimiä Control+C, jotta saat suoritetuksi uuden tehtävän koodin.

    Interaktiivinen Python-tulkki

    Emme ole toistaiseksi puhuneet kurssilla sanallakaan eräästä Python-ohjelmoinnin tärkeimmästä työkalusta, interaktiivisesta komentotulkista.

    Komentotulkki käynnistyy antamalla komentoriviltä komento python3 (joissain tapauksissa, esim. Windowsilla komento saattaa olla python). Esim. Macilla komentotulkin avaaminen näyttää seuraavalta:

    \n \n \n \n \n \n \"4\n \n \n

    On olemassa myös selaimessa toimivia interaktiivisia tulkkeja, kuten https://www.python.org/shell/.

    Komentotulkki tarjoaa interaktiivisen tavan suorittaa Python-koodia rivi riviltä sitä mukaa kuin käyttäjä kirjoittaa koodia. Ideana on, että kun käyttäjä kirjoittaa rivin koodia, Python suorittaa rivin välittömästi ja näyttää rivin operaation tuloksen:

    \n \n \n \n \n \n \"4\n \n \n

    Komentotulkkiin on mahdollista kirjoittaa mitä tahansa Pythonia, muuttujien ja metodienkin määrittely on mahdollista:

    >>> t = [1,2,3,4,5]\n>>> for luku in t:\n...   print(luku)\n...\n1\n2\n3\n4\n5\n>>> def itseisarvo(luku):\n...   if luku<0:\n...      luku = -luku\n...   return luku\n...\n>>> x = 10\n>>> y = -7\n>>> itseisarvo(luku)\nTraceback (most recent call last):\n  File \"<stdin>\", line 1, in <module>\nNameError: name 'luku' is not defined\n>>> itseisarvo(x)\n10\n>>> itseisarvo(y)\n7\n>>>

    Parhaimmillaan komentotulkki on pienten tarkistusten tekemiseen, esim. miten tietty metodi toimii tai onko metodia ylipäätään olemassa:

    >>> \"TekstIä\".toupper()\nTraceback (most recent call last):\n  File \"<stdin>\", line 1, in <module>\nAttributeError: 'str' object has no attribute 'toupper'\n>>> \"TekstIä\".upper()\n'TEKSTIÄ'\n>>>

    Jos muistaa melkein jonkin metodin nimen, googlaamisen sijaan voi olla nopeampi käyttää komentotulkkia ja kysyä funktiolla dir, mitä metodeja tietyllä oliolla on:

    >>> dir(\"teksti\")\n['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',\n'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__',\n'__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',\n'__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',\n'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',\n'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find',\n'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit',\n'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join',\n'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust','rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase',\n'title', 'translate', 'upper', 'zfill']

    Kuten näemme, merkkijonoilla on suuri määrä metodeja. Kurssin tässä vaiheessa ei kannata välittää alaviivoja sisältävistä metodeista, mutta muut voivat olla käyttökelpoisia. Osa metodien toiminnasta voi selvitä kokeilemalla, osan toiminta selviää googlaamalla.

    Listojen metodeista käy ilmi seuraavaa:

    >>> dir([])\n['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',\n'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__',\n'__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__',\n'__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',\n'__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__',\n'__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop',\n'remove', 'reverse', 'sort']\n>>>

    Tarjolla näyttää siis olevan mm. metodit reverse ja clear. Kokeillaan niitä:

    >>> luvut = [1,2,3,4,5]\n>>> luvut.reverse()\n>>> luvut\n[5, 4, 3, 2, 1]\n>>> luvut.clear()\n>>> luvut\n[]

    Metodit siis tekevät aika lailla sen, mitä nimen perusteella voi olettaa.

    Huomaa, että komentotulkki ei näytä mitään tulosta, kun kutsutaan esim. metodia lista.reverse(). Mistä tämä johtuu? Komentotulkki tekee komentojen suorituksen yhteydessä tulostuksen vain, jos suoritetulla koodirivillä on jokin arvo. Edellisessä esimerkissä saatiin tulostettua listan luvut arvo kirjoittamalla komentotulkkiin pelkkä muuttujan nimi. Komentotulkissa ei siis useinkaan ole tarvetta kirjottaa erikseen print-komentoja.

    Tärkeä komento on exit(), joka sulkee komentotulkin. Erityisesti jos käytät komentotulkkia Visual Studio Codessa, se tulee muistaa sulkea, ennen kuin suoritat jonkin ohjelman uudelleen \"vihreällä kolmiolla\". Jos tämä unohtuu, on seurauksena hieman erikoinen virheilmoitus:

    \n \n \n \n \n \n \"4\n \n \n

    Debuggeri

    Muutamassa edellisessä osassa on jo korostettu debuggaustaitojen tärkeyttä ja demonstroitu tulostamalla tapahtuvaa debuggausta. Visual Studio Code sisältää debuggausta varten visuaalisen debuggerin.

    Debuggaus aloitetaan määrittelemällä koodiin breakpoint eli kohta, johon debuggeri pysäyttää koodin suorituksen. Breakpoint asetetaan klikkaamalla hiirellä halutun koodirivin vasemmalta puolelta.

    Seuraavassa esimerkissä breakpoint on asetettu edellisen osan tehtävän Peräkkäisten summa hieman virheellisen ratkaisun riville 5:

    \n \n \n \n \n \n \"4\n \n \n

    Vasempaan reunaan on avautunut näkymä Variables, joka kertoo senhetkisten muuttujien arvot. Koodia voidaan suorittaa rivi riviltä painelemalla alaspäin osoittavaa nuolta (Step into).

    Seuraavassa tilanteessa silmukkaa on suoritettu muutamia kertoja:

    \n \n \n \n \n \n \"4\n \n \n

    Debuggerin välilehti Debug console mahdollistaa myös lausekkeiden arvojen näyttämisen debuggaushetken muuttujien arvoilla. Voidaan esimerkiksi kokeilla, mikä silmukan lopetusehdon arvo on:

    \n \n \n \n \n \n \"4\n \n \n

    Ohjelmassa voi olla myös useita breakpointeja. Pysähtymisen jälkeen koodi voidaan taas käynnistää sinisellä kolmiolla (Continue) ja suoritus jatkuu, kunnes ohjelma törmää seuraavaan breakpointiin.

    Visuaalinen debuggeri on vaihtoehto debug-tulostuksille, mutta on mieltymyksistä kiinni, mitä debuggaustekniikoita kukin ohjelmoija käyttää. On hyvä kokeilla erilaisia tapoja ja valita itselle sopiva tapa.

    ","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/1-vscode.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/2-lisaa-funktioista/page-data.json b/page-data/osa-4/2-lisaa-funktioista/page-data.json index 89615f00b..4cb82e9b4 100644 --- a/page-data/osa-4/2-lisaa-funktioista/page-data.json +++ b/page-data/osa-4/2-lisaa-funktioista/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-4/2-lisaa-funktioista", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät lisää funktion parametrien käyttämisestä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat palauttaa arvon funktiosta ja käyttää sitä kutsukohdassa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat merkitä tyyppivihjeet parametreille ja paluuarvolle"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden määrittely tapahtuu avainsanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"viesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä tulee funktiosta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin määriteltyä funktiota nimeltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viesti"}]},{"type":"text","value":" kutsutaan seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällöin ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tulee funktiosta"}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-parametrit","style":"position:relative;"},"children":[{"type":"text","value":"Funktion parametrit"},{"type":"element","tagName":"a","properties":{"href":"#funktion-parametrit","ariaLabel":"funktion parametrit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla voi olla yksi tai useampi parametri. Parametrit määritellään suluissa funktion nimen jälkeen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa koodissa funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"text","value":" on yksi parametri ja funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" on kaksi parametria."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Parametrien summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\nParametrien summa on 5"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Muodollinen ja todellinen parametri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä oikeastaan tapahtuu, kun suoritetaan funktiokutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi(\"Emilia\")"}]},{"type":"text","value":"?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion määrittelyssä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi(nimi)"}]},{"type":"text","value":" oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on funktion\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muodollinen parametri"}]},{"type":"text","value":". Parametrin nimi on annettu funktion alussa,\nja sitä voidaan käyttää funktiossa muuttujan tavoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion kutsussa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi(\"Emilia\")"}]},{"type":"text","value":" oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"text","value":" on funktion\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"todellinen parametri"}]},{"type":"text","value":". Kun funktiota kutsutaan, todellinen parametri\nsijoitetaan muodollisen parametrin arvoksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus termillä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parametri"}]},{"type":"text","value":" viitataan muodolliseen parametriin ja\ntermillä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"argumentti"}]},{"type":"text","value":" viitataan todelliseen parametriin,\nmutta monet myös käyttävät termejä sekaisin."}]}]},{"type":"element","tagName":"h2","properties":{"id":"testien-virheilmoitukset","style":"position:relative;"},"children":[{"type":"text","value":"Testien virheilmoitukset"},{"type":"element","tagName":"a","properties":{"href":"#testien-virheilmoitukset","ariaLabel":"testien virheilmoitukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelmasi ei toimi oikein, antavat testit enemmän tai vähemmän hyvän virheilmoituksen. Virheilmoitus kannattaa ehdottomasti lukea huolellisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa virheilmoitus ei kerro tarkemmin, mistä on kyse. Esimerkiksi seuraavassa tehtävässä saatat törmätä seuraavaan virheeseen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/fd084faad6510920cd24630f3868f652/76435/4_2_0a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 41.73913043478261%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABTUlEQVQY02WQy04CQRBF+Qk16a5Hv+ienhlmcBQQEQxi1MQHoILRvStj4r+5deHar1JA4+vkrCq5dStV896HENIY8yxbGZMk+JBluVL6P8uhsdZpbWqIKKXUxpxNZmeT+elkNr6+HU+vxuMLAMDfECEt0VojYo2IGQX4TXH/zI+v9PACT2/Qu2NYV9Yare0PFX+CyyU1IkIEbVy1d1X156485vzI2rJO2pFhbYQz8kvtrJQSAFb9i/DiFsN8nKgTL4bMB1YM3cbQrR26TuFnIlximIK/odhV9bws0hiZ+auZyCkqCnC9kIyajcOtbNRMR6UfNQatcp5W07R5nVWnKmwCp408Jsl3WDJHIc59HO7uD7r9TtXubnX22r3edrfV3mkN+qEsbJYKqxHh79lAFACa1hhfV0wIEhYKAIlSkhAsJUupEQ0t/ruq/Qi/A2YuTKFDvDu7AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fd084faad6510920cd24630f3868f652/a0b58/4_2_0a.webp 230w","/static/fd084faad6510920cd24630f3868f652/bc10c/4_2_0a.webp 460w","/static/fd084faad6510920cd24630f3868f652/966d8/4_2_0a.webp 920w","/static/fd084faad6510920cd24630f3868f652/445df/4_2_0a.webp 1380w","/static/fd084faad6510920cd24630f3868f652/97499/4_2_0a.webp 1742w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fd084faad6510920cd24630f3868f652/81c8e/4_2_0a.png 230w","/static/fd084faad6510920cd24630f3868f652/08a84/4_2_0a.png 460w","/static/fd084faad6510920cd24630f3868f652/c0255/4_2_0a.png 920w","/static/fd084faad6510920cd24630f3868f652/b1001/4_2_0a.png 1380w","/static/fd084faad6510920cd24630f3868f652/76435/4_2_0a.png 1742w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/fd084faad6510920cd24630f3868f652/c0255/4_2_0a.png","alt":"4 2 0a","title":"4 2 0a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virhe kertoo, että tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" pitäisi pystyä kutsumaan seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Varsinainen ongelma paljastuu, kun kokeillaan, mitä funktiokutsu tekee, eli kopioidaan virheilmoituksen kertoma funktiokutsu koodiin ja painetaan vihreää kolmiota:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5a22494efd4d5af2a80255c7ee6431f3/701e9/4_2_0b.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABWElEQVQY023P246bMBAGYJ4jWsDGDoNPGAPmFINN0KarFVLTXqeqmvd/iCpZbaWV+um/+DWai5no+4+fUAA90iMAKQBR8iH7l4xknwyB+7EvKUiOS55H+77nkDengRu5VaYtioSkmCCUpYggfERplsZPSRxDglGcxC8vmNAEZ9HlcjkcDgAFIviM+DckREqS/0nTNP46ia7XKwCwgkkpZaWBMyEEAHwcT+njDYyxMWae57qum6bhT4yx6P7n7p9CCGsI3vtlWbz327Y558Zx7LrOWts0jbW2ruvySSlVlmV0u92WeT6v6xpC8ME599hu277r+65v29a2bVPXutTGmEprJaXgTEklOI9+ve4Xt+x+ezv5rZ9eB3e2Y2iH1Y7nbnK6GYTuhbZMdUwNspqUGbieStMLHf1+vy7jtJ3mzS22rKzSigLDlGeUYZrHOE9xnjzzKOgzj/4XGdNWXD7/XR0AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a22494efd4d5af2a80255c7ee6431f3/a0b58/4_2_0b.webp 230w","/static/5a22494efd4d5af2a80255c7ee6431f3/bc10c/4_2_0b.webp 460w","/static/5a22494efd4d5af2a80255c7ee6431f3/966d8/4_2_0b.webp 920w","/static/5a22494efd4d5af2a80255c7ee6431f3/445df/4_2_0b.webp 1380w","/static/5a22494efd4d5af2a80255c7ee6431f3/e11e5/4_2_0b.webp 1780w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a22494efd4d5af2a80255c7ee6431f3/81c8e/4_2_0b.png 230w","/static/5a22494efd4d5af2a80255c7ee6431f3/08a84/4_2_0b.png 460w","/static/5a22494efd4d5af2a80255c7ee6431f3/c0255/4_2_0b.png 920w","/static/5a22494efd4d5af2a80255c7ee6431f3/b1001/4_2_0b.png 1380w","/static/5a22494efd4d5af2a80255c7ee6431f3/701e9/4_2_0b.png 1780w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5a22494efd4d5af2a80255c7ee6431f3/c0255/4_2_0b.png","alt":"4 2 0b","title":"4 2 0b","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin suorituksen viimeiset rivit kertovat, mikä on vikana: koodin rivi 4 aiheuttaa virheen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"IndexError: string index out of range"}]},{"type":"text","value":". Kuten "},{"type":"element","tagName":"a","properties":{"href":"/osa-3/2-merkkijonojen-kasittely"},"children":[{"type":"text","value":"edellisessä osassa"}]},{"type":"text","value":" mainittiin, syy tälle on se, että koodissa yritetään indeksoida merkkijonon ulkopuolelle. Tällä kertaa syynä on se, että yritetään hakea nollan pituisen merkkijonon ensimmäistä merkkiä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Viiva","tmcname":"osa04-02_viiva"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":", joka saa kaksi parametria (leveys, merkkijono). Funktio tulostaa ensimmäisen parametrin määrittämän pituisen viivan käyttäen toisena parametrina olevan merkkijonon ensimmäistä merkkiä. Jos parametrina oleva merkkijono on tyhjä, tulostuu viiva tähtinä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"%\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"LOL\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"%%%%%%%\nLLLLLLLLLL\n***\n"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-kutsut","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset kutsut"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-kutsut","ariaLabel":"sisakkaiset kutsut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme kutsua funktiota myös toisen funktion sisältä. Esimerkiksi seuraavassa ohjelmassa funktio\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi_monesti"}]},{"type":"text","value":" kutsuu funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"text","value":" halutun määrän kertoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\ntervehdi_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\nMoikka, Emilia\nMoikka, Emilia"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Risulaatikko","tmcname":"osa04-02a_risulaatikko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"risulaatikko"}]},{"type":"text","value":", joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen, kymmenen merkkiä leveän risulaatikon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"risulaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrisulaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"##########\n##########\n##########\n##########\n##########\n\n##########\n##########\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Risuneliö","tmcname":"osa04-02b_risunelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"risunelio"}]},{"type":"text","value":", joka piirtää risuaitamerkkiä käyttäen parametrinsa kokoisen risuneliön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"risunelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrisunelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"#####\n#####\n#####\n#####\n#####\n\n###\n###\n###\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neliö","tmcname":"osa04-02c_nelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nelio"}]},{"type":"text","value":", joka saa kaksi parametria. Funktio tulostaa neliön jonka korkeuden ja leveyden kertoo ensimmäinen parametri. Toinen parametri määrittelee mitä merkkiä käyttäen neliö piirretään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"o\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*****\n*****\n*****\n*****\n*****\n\nooo\nooo\nooo\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kolmio","tmcname":"osa04-02d_kolmio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kolmio"}]},{"type":"text","value":", joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen ja levyisen, risuaitakolmion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"#\n##\n###\n####\n#####\n######\n\n#\n##\n###\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuvio","tmcname":"osa04-03_kuvio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kuvio"}]},{"type":"text","value":", joka saa neljä parametria. Funktio tulostaa kuvion, jonka yläosana on kahden ensimmäisen parametrin määrittelemä kolmio ja alaosana ensimmäisen ja kahden jälkimmäisen parametrin määrittelemä suorakulmio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kuvio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"X\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkuvio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"o\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkuvio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"X\nXX\nXXX\nXXXX\nXXXXX\n*****\n*****\n*****\n\no\noo\n++\n++\n++\n++\n\n.\n..\n...\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Älä yritä ratkaista tehtävässä \"kaikkia asioita\" yhtä aikaa. Keskity ensin esim. siihen että saat kuvion yläosan kolmion piirtymään oikein, ja vasta sen jälkeen jatka kuvion täydentämistä alaosan suorakulmiolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on ylipäätänsäkin ohjelmoinnissa erittäin tärkeää: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"keskity pieniin osiin kerrallaan"}]},{"type":"text","value":", varmista että ne toimivat ennen kuin laajennat ratkaisuasi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Joulukuusi","tmcname":"osa04-04_joulukuusi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"joulukuusi"}]},{"type":"text","value":", joka saa yhden parametrin. Funktio tulostaa tekstin joulukuusi! ja parametrinsa kokoisen joulukuusen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"joulukuusi(3)"}]},{"type":"text","value":" tulostuu"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"joulukuusi!\n *\n ***\n*****\n *\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"joulukuusi(5)"}]},{"type":"text","value":" tulostuu"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"joulukuusi!\n *\n ***\n *****\n *******\n*********\n *\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa, että joulukuusen vasemmalla puolella pitää olla täsmälleen oikea määrä välilyöntejä"}]},{"type":"text","value":". Eli vaikka kuusen muoto olisi täysin oikea, mutta sen alin \"neulastaso\" ei lähde ruudun vasemmasta reunasta, ei vastaus kelpaa testeille."}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-paluuarvo","style":"position:relative;"},"children":[{"type":"text","value":"Funktion paluuarvo"},{"type":"element","tagName":"a","properties":{"href":"#funktion-paluuarvo","ariaLabel":"funktion paluuarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot voivat myös palauttaa arvoja. Esimerkiksi Pythonin valmis funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" käyttäjän antaman syötteen. Funktion palauttama arvo voidaan esimerkiksi sijoittaa muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös kokonaislukujen lukemisessa yhdessä funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" kanssa käytettävä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" palauttaa arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna kokonaisluku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" saa parametrinaan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" palauttaman merkkijonon ja palauttaa sen kokonaislukutyyppisenä."}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-arvon-palauttaminen-return-komennolla","style":"position:relative;"},"children":[{"type":"text","value":"Funktion arvon palauttaminen return-komennolla"},{"type":"element","tagName":"a","properties":{"href":"#funktion-arvon-palauttaminen-return-komennolla","ariaLabel":"funktion arvon palauttaminen return komennolla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös itse määrittelemämme funktiot voivat palauttaa arvoja käyttämällä komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":". Esimerkiksi seuraava funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" palauttaa annettujen lukujen summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Summa: 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on vielä toinen esimerkki, jossa funktio kysyy käyttäjän nimen ja palauttaa sen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kysy_nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" nimi\n\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kysy_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on nimesi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Anna"}]},{"type":"text","value":"\nMoikka, Anna"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" lopettaa funktion suorituksen saman tien. Niinpä voimme tehdä seuraavan funktion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ideana on, että jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" on pienempi kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":", niin funktio palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" ja päättyy. Muuten funktion suoritus jatkuu eteenpäin, jolloin se palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komentoa siihen, että poistumme funktiosta palauttamatta mitään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"???\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on tyhjä merkkijono, niin funktio tulostaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"???"}]},{"type":"text","value":" ja päättyy."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\n???\nMoikka, Matti"}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-paluuarvojen-kaytto","style":"position:relative;"},"children":[{"type":"text","value":"Funktion paluuarvojen käyttö"},{"type":"element","tagName":"a","properties":{"href":"#funktion-paluuarvojen-kaytto","ariaLabel":"funktion paluuarvojen kaytto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme jo nähneet, funktioiden paluuarvoja on mahdollista sijoittaa muuttujiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Summa on 10"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktion paluuarvo käyttäytyy kuten mikä tahansa arvo, ei apumuuttuja ole tarpeen ja paluuarvoa on mahdollista käyttää suoraan komennon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös antaa funktion palauttaman arvon toiselle funktiolle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"erotus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"b\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" erotus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vastaus on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaus on 2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa suoritetaan ensin sisemmät funktiokutsut "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa(5, 2)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa(2, 3)"}]},{"type":"text","value":", joiden palauttamat arvot 7 ja 5 käytetään ulomman funktiokutsun parametreina."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ulompi funktiokutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"erotus(7, 5)"}]},{"type":"text","value":" palauttaa arvon 2, joka sijoitetaan muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" arvoksi ja tulostetaan ruudulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden palauttamat arvot toimivat täysin samalla tavalla kuin mitkä tahansa arvot Pythonissa. Niitä voidaan tulostaa, sijoittaa muuttujaan, käyttää osana lausekkeita tai käyttää parametreina muissa funktiokutsuissa."}]},{"type":"element","tagName":"h2","properties":{"id":"arvon-palauttaminen-return-ja-print","style":"position:relative;"},"children":[{"type":"text","value":"Arvon palauttaminen, return ja print"},{"type":"element","tagName":"a","properties":{"href":"#arvon-palauttaminen-return-ja-print","ariaLabel":"arvon palauttaminen return ja print permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus aloittelija hämmentyy funktioiden paluuarvon ja funktiossa tapahtuvan tulostuksen välistä eroa. Tarkastellaan kahta versiota funktiosta, joka selvittää kahden parametrinsa maksimiarvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maksimi1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maksimi2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maksimi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmaksimi2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n7"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molemmat funktiot näyttävät toimivan hyvin, kumpikin selvittää maksimiarvon. Funktioissa on kuitenkin eräs ratkaiseva ero. Funktioista ensimmäinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maksimi1"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" selvittämänsä arvon. Se ei itse tulosta mitään, eli jos suoritetaan koodi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"maksimi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ei näytä tapahtuvan mitään. Funktion paluuarvo on siis otettava talteen muuttujaan, jos se halutaan tulostaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"vastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maksimi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioista toinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maksimi2"}]},{"type":"text","value":" taas tulostaa itse "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoa käyttäen lukujen maksimin, eli riittää kutsua"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"maksimi2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ja maksimi tulostuu ruudulle. Tämän funktion huono puoli on kuitenkin se, että funktion selvittämää arvoa ei ole mahdollista saada funktion ulkopuolelle muun ohjelman käsiteltäväksi. Tämän takia arvon palauttava funktio on useimmiten parempi vaihtoehto."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Luvuista suurin","tmcname":"osa04-05_luvuista_suurin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvuista_suurin"}]},{"type":"text","value":", joka saa parametriksi kolme kokonaislukua. Funktio palauttaa return-lausetta käyttäen luvuista suurimman."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvuista_suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvuista_suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 99"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvuista_suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 0"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Merkit samat","tmcname":"osa04-06_merkit_samat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"samat"}]},{"type":"text","value":", joka saa parametriksi merkkijonon ja kaksi merkkijonon indeksejä kuvaavaa kokonaislukua. Funktio palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-lausetta käyttäen tiedon ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":") siitä, ovatko merkkijonon parametreina olevien indeksien osoittamissa paikoissa olevat merkit samat. Jos jompikumpi indekseistä ei osu merkkijonon sisälle, palauttaa metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# samat merkit o ja o"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"samat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# eri merkit k ja a"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"samat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# toinen indeksi ei ole merkkijonon sisällä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"samat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Eka, toka ja vika sana","tmcname":"osa04-07_eka_toka_vika_sana"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee kolme funktiota: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"toka_sana"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"text","value":". Jokainen funktioista saa parametrikseen lauseen (eli merkkijonon)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot palauttavat nimensä mukaisesti lauseen ensimmäisen, toisen tai viimeisen sanan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa jokaisessa tapauksessa, että merkkijono koostuu vähintään kahdesta sanasta, ja että sanojen välillä on aina täsmälleen yksi välilyönti, ja että merkkijonon alussa ja lopussa ei ole välilyöntejä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olipa kerran kauan sitten ohjelmoija\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# olipa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kerran"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelmoija"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"olipa\nkerran\nohjelmoija"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olipa kerran\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kerran"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kerran"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"parametrin-tyyppi","style":"position:relative;"},"children":[{"type":"text","value":"Parametrin tyyppi"},{"type":"element","tagName":"a","properties":{"href":"#parametrin-tyyppi","ariaLabel":"parametrin tyyppi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrataan vielä tähän mennessä läpikäydyt tyypit:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"left"},"children":[{"type":"text","value":"Tyyppi"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Pythonissa"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Esimerkki"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Kokonaisluku"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"23"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Liukuluku"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-0.45"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Merkkijono"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Pekka Python\""}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Totuusarvo"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun kutsumme funktiota, funktio toimii oikein vain,\njos annamme sille sopivan tyyppiset parametrit.\nTarkastellaan esimerkkinä seuraavaa funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii mainiosti, jos kutsumme sitä näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulosta_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka\nMoikka\nMoikka\nMoikka\nMoikka"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkaan funktio ei toimi, jos annamme sille väärän tyyppisen parametrin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulosta_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: '>' not supported between instances of 'str' and 'int'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ongelmaksi tulee, että funktion jälkimmäistä parametria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kerrat"}]},{"type":"text","value":" vertaillaan kokonaislukuun 0. Kun parametri on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"text","value":" eikä kokonaisluku, tämä aiheuttaa virheen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme antaa funktion määrittelyssä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tyyppivihjeen"}]},{"type":"text","value":", joka ilmaisee, millaista tietoa parametreihin on tarkoitus sijoittaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä kertoo funktion käyttäjälle, että parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viesti"}]},{"type":"text","value":" on tarkoitus olla merkkijono, kun taas parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kerrat"}]},{"type":"text","value":" on tarkoitus olla kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti funktion paluuarvon tyypin voi vihjata funktion määrittelyssä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kysy_nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" nimi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä kertoo funktion käyttäjälle, että funktion on tarkoitus palauttaa merkkijono."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa kuitenkin, että tyyppivihje ainoastaan neuvoo, mikä tyypin tulisi olla, mutta ei valvo sitä. Jos funktiolle annetaan väärän tyyppinen parametri tai se palauttaa väärän tyyppisen arvon, funktio suoritetaan kuitenkin, mutta se toimii mahdollisesti väärin."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät lisää funktion parametrien käyttämisestä
    • \n
    • Osaat palauttaa arvon funktiosta ja käyttää sitä kutsukohdassa
    • \n
    • Osaat merkitä tyyppivihjeet parametreille ja paluuarvolle
    • \n

    Funktioiden määrittely tapahtuu avainsanan def avulla:

    def viesti():\n    print(\"Tämä tulee funktiosta\")

    Näin määriteltyä funktiota nimeltä viesti kutsutaan seuraavasti:

    viesti()

    Tällöin ohjelman tulostus on seuraava:

    Tämä tulee funktiosta

    Funktion parametrit

    Funktiolla voi olla yksi tai useampi parametri. Parametrit määritellään suluissa funktion nimen jälkeen.

    Esimerkiksi seuraavassa koodissa funktiolla tervehdi on yksi parametri ja funktiolla summa on kaksi parametria.

    def tervehdi(nimi):\n    print(\"Moikka,\", nimi)\n\ndef summa(a, b):\n    print(\"Parametrien summa on\", a + b)
    tervehdi(\"Emilia\")\nsumma(2, 3)

    Moikka, Emilia\nParametrien summa on 5

    Mitä oikeastaan tapahtuu, kun suoritetaan funktiokutsu tervehdi(\"Emilia\")?

    Funktion määrittelyssä tervehdi(nimi) oleva nimi on funktion\nmuodollinen parametri. Parametrin nimi on annettu funktion alussa,\nja sitä voidaan käyttää funktiossa muuttujan tavoin.

    Funktion kutsussa tervehdi(\"Emilia\") oleva \"Emilia\" on funktion\ntodellinen parametri. Kun funktiota kutsutaan, todellinen parametri\nsijoitetaan muodollisen parametrin arvoksi.

    Joskus termillä parametri viitataan muodolliseen parametriin ja\ntermillä argumentti viitataan todelliseen parametriin,\nmutta monet myös käyttävät termejä sekaisin.

    Testien virheilmoitukset

    Jos ohjelmasi ei toimi oikein, antavat testit enemmän tai vähemmän hyvän virheilmoituksen. Virheilmoitus kannattaa ehdottomasti lukea huolellisesti.

    Joissain tilanteissa virheilmoitus ei kerro tarkemmin, mistä on kyse. Esimerkiksi seuraavassa tehtävässä saatat törmätä seuraavaan virheeseen:

    \n \n \n \n \n \n \"4\n \n \n

    Virhe kertoo, että tehtävän funktiota viiva pitäisi pystyä kutsumaan seuraavasti:

    viiva(5, \"\")

    Varsinainen ongelma paljastuu, kun kokeillaan, mitä funktiokutsu tekee, eli kopioidaan virheilmoituksen kertoma funktiokutsu koodiin ja painetaan vihreää kolmiota:

    \n \n

    Tee funktio viiva, joka saa kaksi parametria (leveys, merkkijono). Funktio tulostaa ensimmäisen parametrin määrittämän pituisen viivan käyttäen toisena parametrina olevan merkkijonon ensimmäistä merkkiä. Jos parametrina oleva merkkijono on tyhjä, tulostuu viiva tähtinä.

    Käyttöesimerkki:

    viiva(7, \"%\")\nviiva(10, \"LOL\")\nviiva(3, \"\")
    \n%%%%%%%\nLLLLLLLLLL\n***\n

    Sisäkkäiset kutsut

    Voimme kutsua funktiota myös toisen funktion sisältä. Esimerkiksi seuraavassa ohjelmassa funktio\ntervehdi_monesti kutsuu funktiota tervehdi halutun määrän kertoja:

    def tervehdi(nimi):\n    print(\"Moikka,\", nimi)\n\ndef tervehdi_monesti(nimi, kerrat):\n    while kerrat > 0:\n        tervehdi(nimi)\n        kerrat -= 1\n\ntervehdi_monesti(\"Emilia\", 3)

    Moikka, Emilia\nMoikka, Emilia\nMoikka, Emilia

    Tee funktio risulaatikko, joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen, kymmenen merkkiä leveän risulaatikon.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    risulaatikko(5)\nprint()\nrisulaatikko(2)
    \n##########\n##########\n##########\n##########\n##########\n\n##########\n##########\n

    Tee funktio risunelio, joka piirtää risuaitamerkkiä käyttäen parametrinsa kokoisen risuneliön.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    risunelio(5)\nprint()\nrisunelio(3)
    \n#####\n#####\n#####\n#####\n#####\n\n###\n###\n###\n

    Tee funktio nelio, joka saa kaksi parametria. Funktio tulostaa neliön jonka korkeuden ja leveyden kertoo ensimmäinen parametri. Toinen parametri määrittelee mitä merkkiä käyttäen neliö piirretään.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    nelio(5, \"*\")\nprint()\nnelio(3, \"o\")
    \n*****\n*****\n*****\n*****\n*****\n\nooo\nooo\nooo\n

    Tee funktio kolmio, joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen ja levyisen, risuaitakolmion.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    kolmio(6)\nprint()\nkolmio(3)
    \n#\n##\n###\n####\n#####\n######\n\n#\n##\n###\n

    Tee funktio kuvio, joka saa neljä parametria. Funktio tulostaa kuvion, jonka yläosana on kahden ensimmäisen parametrin määrittelemä kolmio ja alaosana ensimmäisen ja kahden jälkimmäisen parametrin määrittelemä suorakulmio.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle.

    Pari käyttöesimerkkiä

    kuvio(5, \"X\", 3, \"*\")\nprint()\nkuvio(2, \"o\", 4, \"+\")\nprint()\nkuvio(3, \".\", 0, \",\")
    \nX\nXX\nXXX\nXXXX\nXXXXX\n*****\n*****\n*****\n\no\noo\n++\n++\n++\n++\n\n.\n..\n...\n

    Vihje

    Älä yritä ratkaista tehtävässä \"kaikkia asioita\" yhtä aikaa. Keskity ensin esim. siihen että saat kuvion yläosan kolmion piirtymään oikein, ja vasta sen jälkeen jatka kuvion täydentämistä alaosan suorakulmiolla.

    Tämä on ylipäätänsäkin ohjelmoinnissa erittäin tärkeää: keskity pieniin osiin kerrallaan, varmista että ne toimivat ennen kuin laajennat ratkaisuasi.

    Tee funktio joulukuusi, joka saa yhden parametrin. Funktio tulostaa tekstin joulukuusi! ja parametrinsa kokoisen joulukuusen.

    Esim. kutsuttaessa joulukuusi(3) tulostuu

    \njoulukuusi!\n  *\n ***\n*****\n  *\n

    Esim. kutsuttaessa joulukuusi(5) tulostuu

    \njoulukuusi!\n    *\n   ***\n  *****\n *******\n*********\n    *\n

    Huomaa, että joulukuusen vasemmalla puolella pitää olla täsmälleen oikea määrä välilyöntejä. Eli vaikka kuusen muoto olisi täysin oikea, mutta sen alin \"neulastaso\" ei lähde ruudun vasemmasta reunasta, ei vastaus kelpaa testeille.

    Funktion paluuarvo

    Funktiot voivat myös palauttaa arvoja. Esimerkiksi Pythonin valmis funktio input palauttaa käyttäjän antaman syötteen. Funktion palauttama arvo voidaan esimerkiksi sijoittaa muuttujaan:

    sana = input(\"Anna sana: \")

    Myös kokonaislukujen lukemisessa yhdessä funktion input kanssa käytettävä funktio int palauttaa arvon:

    luku = int(input(\"Anna kokonaisluku: \"))

    Funktio int saa parametrinaan funktion input palauttaman merkkijonon ja palauttaa sen kokonaislukutyyppisenä.

    Funktion arvon palauttaminen return-komennolla

    Myös itse määrittelemämme funktiot voivat palauttaa arvoja käyttämällä komentoa return. Esimerkiksi seuraava funktio summa palauttaa annettujen lukujen summan:

    def summa(a, b):\n    return a + b\n\nvastaus = summa(2, 3)\n\nprint(\"Summa:\", vastaus)

    Summa: 5

    Seuraavassa on vielä toinen esimerkki, jossa funktio kysyy käyttäjän nimen ja palauttaa sen:

    def kysy_nimi():\n    nimi = input(\"Mikä on nimesi? \")\n    return nimi\n\nnimi = kysy_nimi()\nprint(\"Moikka,\", nimi)

    Mikä on nimesi? Anna\nMoikka, Anna

    Kannattaa huomata, että komento return lopettaa funktion suorituksen saman tien. Niinpä voimme tehdä seuraavan funktion:

    def pienin(a,b):\n    if a < b:\n        return a\n    return b\n\nprint(pienin(3, 7))\nprint(pienin(5, 2))

    Tässä ideana on, että jos a on pienempi kuin b, niin funktio palauttaa arvon a ja päättyy. Muuten funktion suoritus jatkuu eteenpäin, jolloin se palauttaa arvon b.

    3\n2

    Voimme myös käyttää return-komentoa siihen, että poistumme funktiosta palauttamatta mitään:

    def tervehdi(nimi):\n    if nimi == \"\":\n        print(\"???\")\n        return\n    print(\"Moikka,\", nimi)\n\ntervehdi(\"Emilia\")\ntervehdi(\"\")\ntervehdi(\"Matti\")

    Jos nimi on tyhjä merkkijono, niin funktio tulostaa ??? ja päättyy.

    Moikka, Emilia\n???\nMoikka, Matti

    Funktion paluuarvojen käyttö

    Kuten olemme jo nähneet, funktioiden paluuarvoja on mahdollista sijoittaa muuttujiin:

    def summa(a, b):\n    return a + b\n\ntulos = summa(4, 6)\nprint(\"Summa on\", tulos)

    Summa on 10

    Koska funktion paluuarvo käyttäytyy kuten mikä tahansa arvo, ei apumuuttuja ole tarpeen ja paluuarvoa on mahdollista käyttää suoraan komennon print parametrina:

    print(\"Summa on\", summa(4, 6))

    Voimme myös antaa funktion palauttaman arvon toiselle funktiolle:

    def summa(a, b):\n    return a+b\n\ndef erotus(a, b):\n    return a-b\n\ntulos = erotus(summa(5, 2), summa(2, 3))\nprint(\"Vastaus on\", tulos)

    Vastaus on 2

    Tässä tapauksessa suoritetaan ensin sisemmät funktiokutsut summa(5, 2) ja summa(2, 3), joiden palauttamat arvot 7 ja 5 käytetään ulomman funktiokutsun parametreina.

    Ulompi funktiokutsu erotus(7, 5) palauttaa arvon 2, joka sijoitetaan muuttujan tulos arvoksi ja tulostetaan ruudulle.

    Funktioiden palauttamat arvot toimivat täysin samalla tavalla kuin mitkä tahansa arvot Pythonissa. Niitä voidaan tulostaa, sijoittaa muuttujaan, käyttää osana lausekkeita tai käyttää parametreina muissa funktiokutsuissa.

    Arvon palauttaminen, return ja print

    Joskus aloittelija hämmentyy funktioiden paluuarvon ja funktiossa tapahtuvan tulostuksen välistä eroa. Tarkastellaan kahta versiota funktiosta, joka selvittää kahden parametrinsa maksimiarvon:

    def maksimi1(a, b):\n    if a > b:\n        return a\n    else:\n        return b\n\ndef maksimi2(a, b):\n    if a > b:\n        print(a)\n    else:\n        print(b)\n\nvastaus = maksimi1(3, 5)\nprint(vastaus)\n\nmaksimi2(7, 2)

    5\n7

    Molemmat funktiot näyttävät toimivan hyvin, kumpikin selvittää maksimiarvon. Funktioissa on kuitenkin eräs ratkaiseva ero. Funktioista ensimmäinen maksimi1 palauttaa selvittämänsä arvon. Se ei itse tulosta mitään, eli jos suoritetaan koodi

    maksimi1(3, 5)

    ei näytä tapahtuvan mitään. Funktion paluuarvo on siis otettava talteen muuttujaan, jos se halutaan tulostaa:

    vastaus = maksimi1(3, 5)\nprint(vastaus)

    Funktioista toinen maksimi2 taas tulostaa itse print-komentoa käyttäen lukujen maksimin, eli riittää kutsua

    maksimi2(7, 5)

    ja maksimi tulostuu ruudulle. Tämän funktion huono puoli on kuitenkin se, että funktion selvittämää arvoa ei ole mahdollista saada funktion ulkopuolelle muun ohjelman käsiteltäväksi. Tämän takia arvon palauttava funktio on useimmiten parempi vaihtoehto.

    Tee funktio luvuista_suurin, joka saa parametriksi kolme kokonaislukua. Funktio palauttaa return-lausetta käyttäen luvuista suurimman.

    Käyttöesimerkki

    print(luvuista_suurin(3, 4, 1)) # 4\nprint(luvuista_suurin(99, -4, 7)) # 99\nprint(luvuista_suurin(0, 0, 0)) # 0

    Tee funktio samat, joka saa parametriksi merkkijonon ja kaksi merkkijonon indeksejä kuvaavaa kokonaislukua. Funktio palauttaa return-lausetta käyttäen tiedon (True tai False) siitä, ovatko merkkijonon parametreina olevien indeksien osoittamissa paikoissa olevat merkit samat. Jos jompikumpi indekseistä ei osu merkkijonon sisälle, palauttaa metodi False.

    Muutama esimerkki:

    # samat merkit o ja o\nprint(samat(\"koodari\", 1, 2)) # True\n\n# eri merkit k ja a\nprint(samat(\"koodari\", 0, 4)) # False\n\n# toinen indeksi ei ole merkkijonon sisällä\nprint(samat(\"koodari\", 0, 10)) # False

    Tee kolme funktiota: eka_sana, toka_sana ja vika_sana. Jokainen funktioista saa parametrikseen lauseen (eli merkkijonon).

    Funktiot palauttavat nimensä mukaisesti lauseen ensimmäisen, toisen tai viimeisen sanan.

    Voit olettaa jokaisessa tapauksessa, että merkkijono koostuu vähintään kahdesta sanasta, ja että sanojen välillä on aina täsmälleen yksi välilyönti, ja että merkkijonon alussa ja lopussa ei ole välilyöntejä.

    lause = \"olipa kerran kauan sitten ohjelmoija\"\n\nprint(eka_sana(lause)) # olipa\nprint(toka_sana(lause)) # kerran\nprint(vika_sana(lause)) # ohjelmoija

    olipa\nkerran\nohjelmoija

    lause = \"olipa kerran\"\n\nprint(toka_sana(lause)) # kerran\nprint(vika_sana(lause)) # kerran

    Parametrin tyyppi

    Kerrataan vielä tähän mennessä läpikäydyt tyypit:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    TyyppiPythonissaEsimerkki
    Kokonaislukuint23
    Liukulukufloat-0.45
    Merkkijonostr\"Pekka Python\"
    TotuusarvoboolTrue

    Kun kutsumme funktiota, funktio toimii oikein vain,\njos annamme sille sopivan tyyppiset parametrit.\nTarkastellaan esimerkkinä seuraavaa funktiota:

    def tulosta_monesti(viesti, kerrat):\n    while kerrat > 0:\n        print(viesti)\n        kerrat -= 1

    Funktio toimii mainiosti, jos kutsumme sitä näin:

    tulosta_monesti(\"Moikka\", 5)

    Moikka\nMoikka\nMoikka\nMoikka\nMoikka

    Kuitenkaan funktio ei toimi, jos annamme sille väärän tyyppisen parametrin:

    tulosta_monesti(\"Moikka\", \"Emilia\")

    TypeError: '>' not supported between instances of 'str' and 'int'

    Tässä ongelmaksi tulee, että funktion jälkimmäistä parametria kerrat vertaillaan kokonaislukuun 0. Kun parametri on \"Emilia\" eikä kokonaisluku, tämä aiheuttaa virheen.

    Voimme antaa funktion määrittelyssä tyyppivihjeen, joka ilmaisee, millaista tietoa parametreihin on tarkoitus sijoittaa:

    def tulosta_monesti(viesti : str, kerrat : int):\n    while kerrat > 0:\n        print(viesti)\n        kerrat -= 1

    Tämä kertoo funktion käyttäjälle, että parametrin viesti on tarkoitus olla merkkijono, kun taas parametrin kerrat on tarkoitus olla kokonaisluku.

    Vastaavasti funktion paluuarvon tyypin voi vihjata funktion määrittelyssä:

    def kysy_nimi() -> str:\n    nimi = input(\"Mikä on nimesi? \")\n    return nimi

    Tämä kertoo funktion käyttäjälle, että funktion on tarkoitus palauttaa merkkijono.

    Huomaa kuitenkin, että tyyppivihje ainoastaan neuvoo, mikä tyypin tulisi olla, mutta ei valvo sitä. Jos funktiolle annetaan väärän tyyppinen parametri tai se palauttaa väärän tyyppisen arvon, funktio suoritetaan kuitenkin, mutta se toimii mahdollisesti väärin.

    ","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/2-lisaa-funktioista.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät lisää funktion parametrien käyttämisestä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat palauttaa arvon funktiosta ja käyttää sitä kutsukohdassa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat merkitä tyyppivihjeet parametreille ja paluuarvolle"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden määrittely tapahtuu avainsanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"viesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä tulee funktiosta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin määriteltyä funktiota nimeltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viesti"}]},{"type":"text","value":" kutsutaan seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällöin ohjelman tulostus on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tulee funktiosta"}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-parametrit","style":"position:relative;"},"children":[{"type":"text","value":"Funktion parametrit"},{"type":"element","tagName":"a","properties":{"href":"#funktion-parametrit","ariaLabel":"funktion parametrit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla voi olla yksi tai useampi parametri. Parametrit määritellään suluissa funktion nimen jälkeen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa koodissa funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"text","value":" on yksi parametri ja funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" on kaksi parametria."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Parametrien summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\nParametrien summa on 5"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Muodollinen ja todellinen parametri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä oikeastaan tapahtuu, kun suoritetaan funktiokutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi(\"Emilia\")"}]},{"type":"text","value":"?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion määrittelyssä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi(nimi)"}]},{"type":"text","value":" oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on funktion\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muodollinen parametri"}]},{"type":"text","value":". Parametrin nimi on annettu funktion alussa,\nja sitä voidaan käyttää funktiossa muuttujan tavoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion kutsussa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi(\"Emilia\")"}]},{"type":"text","value":" oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"text","value":" on funktion\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"todellinen parametri"}]},{"type":"text","value":". Kun funktiota kutsutaan, todellinen parametri\nsijoitetaan muodollisen parametrin arvoksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus termillä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"parametri"}]},{"type":"text","value":" viitataan muodolliseen parametriin ja\ntermillä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"argumentti"}]},{"type":"text","value":" viitataan todelliseen parametriin,\nmutta monet myös käyttävät termejä sekaisin."}]}]},{"type":"element","tagName":"h2","properties":{"id":"testien-virheilmoitukset","style":"position:relative;"},"children":[{"type":"text","value":"Testien virheilmoitukset"},{"type":"element","tagName":"a","properties":{"href":"#testien-virheilmoitukset","ariaLabel":"testien virheilmoitukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelmasi ei toimi oikein, antavat testit enemmän tai vähemmän hyvän virheilmoituksen. Virheilmoitus kannattaa ehdottomasti lukea huolellisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa virheilmoitus ei kerro tarkemmin, mistä on kyse. Esimerkiksi seuraavassa tehtävässä saatat törmätä seuraavaan virheeseen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/fd084faad6510920cd24630f3868f652/76435/4_2_0a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 41.73913043478261%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABTUlEQVQY02WQy04CQRBF+Qk16a5Hv+ienhlmcBQQEQxi1MQHoILRvStj4r+5deHar1JA4+vkrCq5dStV896HENIY8yxbGZMk+JBluVL6P8uhsdZpbWqIKKXUxpxNZmeT+elkNr6+HU+vxuMLAMDfECEt0VojYo2IGQX4TXH/zI+v9PACT2/Qu2NYV9Yare0PFX+CyyU1IkIEbVy1d1X156485vzI2rJO2pFhbYQz8kvtrJQSAFb9i/DiFsN8nKgTL4bMB1YM3cbQrR26TuFnIlximIK/odhV9bws0hiZ+auZyCkqCnC9kIyajcOtbNRMR6UfNQatcp5W07R5nVWnKmwCp408Jsl3WDJHIc59HO7uD7r9TtXubnX22r3edrfV3mkN+qEsbJYKqxHh79lAFACa1hhfV0wIEhYKAIlSkhAsJUupEQ0t/ruq/Qi/A2YuTKFDvDu7AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fd084faad6510920cd24630f3868f652/a0b58/4_2_0a.webp 230w","/static/fd084faad6510920cd24630f3868f652/bc10c/4_2_0a.webp 460w","/static/fd084faad6510920cd24630f3868f652/966d8/4_2_0a.webp 920w","/static/fd084faad6510920cd24630f3868f652/445df/4_2_0a.webp 1380w","/static/fd084faad6510920cd24630f3868f652/97499/4_2_0a.webp 1742w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fd084faad6510920cd24630f3868f652/81c8e/4_2_0a.png 230w","/static/fd084faad6510920cd24630f3868f652/08a84/4_2_0a.png 460w","/static/fd084faad6510920cd24630f3868f652/c0255/4_2_0a.png 920w","/static/fd084faad6510920cd24630f3868f652/b1001/4_2_0a.png 1380w","/static/fd084faad6510920cd24630f3868f652/76435/4_2_0a.png 1742w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/fd084faad6510920cd24630f3868f652/c0255/4_2_0a.png","alt":"4 2 0a","title":"4 2 0a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virhe kertoo, että tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" pitäisi pystyä kutsumaan seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Varsinainen ongelma paljastuu, kun kokeillaan, mitä funktiokutsu tekee, eli kopioidaan virheilmoituksen kertoma funktiokutsu koodiin ja painetaan vihreää kolmiota:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5a22494efd4d5af2a80255c7ee6431f3/701e9/4_2_0b.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABWElEQVQY023P246bMBAGYJ4jWsDGDoNPGAPmFINN0KarFVLTXqeqmvd/iCpZbaWV+um/+DWai5no+4+fUAA90iMAKQBR8iH7l4xknwyB+7EvKUiOS55H+77nkDengRu5VaYtioSkmCCUpYggfERplsZPSRxDglGcxC8vmNAEZ9HlcjkcDgAFIviM+DckREqS/0nTNP46ia7XKwCwgkkpZaWBMyEEAHwcT+njDYyxMWae57qum6bhT4yx6P7n7p9CCGsI3vtlWbz327Y558Zx7LrOWts0jbW2ruvySSlVlmV0u92WeT6v6xpC8ME599hu277r+65v29a2bVPXutTGmEprJaXgTEklOI9+ve4Xt+x+ezv5rZ9eB3e2Y2iH1Y7nbnK6GYTuhbZMdUwNspqUGbieStMLHf1+vy7jtJ3mzS22rKzSigLDlGeUYZrHOE9xnjzzKOgzj/4XGdNWXD7/XR0AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a22494efd4d5af2a80255c7ee6431f3/a0b58/4_2_0b.webp 230w","/static/5a22494efd4d5af2a80255c7ee6431f3/bc10c/4_2_0b.webp 460w","/static/5a22494efd4d5af2a80255c7ee6431f3/966d8/4_2_0b.webp 920w","/static/5a22494efd4d5af2a80255c7ee6431f3/445df/4_2_0b.webp 1380w","/static/5a22494efd4d5af2a80255c7ee6431f3/e11e5/4_2_0b.webp 1780w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a22494efd4d5af2a80255c7ee6431f3/81c8e/4_2_0b.png 230w","/static/5a22494efd4d5af2a80255c7ee6431f3/08a84/4_2_0b.png 460w","/static/5a22494efd4d5af2a80255c7ee6431f3/c0255/4_2_0b.png 920w","/static/5a22494efd4d5af2a80255c7ee6431f3/b1001/4_2_0b.png 1380w","/static/5a22494efd4d5af2a80255c7ee6431f3/701e9/4_2_0b.png 1780w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5a22494efd4d5af2a80255c7ee6431f3/c0255/4_2_0b.png","alt":"4 2 0b","title":"4 2 0b","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin suorituksen viimeiset rivit kertovat, mikä on vikana: koodin rivi 4 aiheuttaa virheen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"IndexError: string index out of range"}]},{"type":"text","value":". Kuten "},{"type":"element","tagName":"a","properties":{"href":"/osa-3/2-merkkijonojen-kasittely"},"children":[{"type":"text","value":"edellisessä osassa"}]},{"type":"text","value":" mainittiin, syy tälle on se, että koodissa yritetään indeksoida merkkijonon ulkopuolelle. Tällä kertaa syynä on se, että yritetään hakea nollan pituisen merkkijonon ensimmäistä merkkiä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Viiva","tmcname":"osa04-02_viiva"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":", joka saa kaksi parametria (leveys, merkkijono). Funktio tulostaa ensimmäisen parametrin määrittämän pituisen viivan käyttäen toisena parametrina olevan merkkijonon ensimmäistä merkkiä. Jos parametrina oleva merkkijono on tyhjä, tulostuu viiva tähtinä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"%\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"LOL\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"%%%%%%%\nLLLLLLLLLL\n***\n"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-kutsut","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset kutsut"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-kutsut","ariaLabel":"sisakkaiset kutsut permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme kutsua funktiota myös toisen funktion sisältä. Esimerkiksi seuraavassa ohjelmassa funktio\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi_monesti"}]},{"type":"text","value":" kutsuu funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"text","value":" halutun määrän kertoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\ntervehdi_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\nMoikka, Emilia\nMoikka, Emilia"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Risulaatikko","tmcname":"osa04-02a_risulaatikko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"risulaatikko"}]},{"type":"text","value":", joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen, kymmenen merkkiä leveän risulaatikon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"risulaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrisulaatikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"##########\n##########\n##########\n##########\n##########\n\n##########\n##########\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Risuneliö","tmcname":"osa04-02b_risunelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"risunelio"}]},{"type":"text","value":", joka piirtää risuaitamerkkiä käyttäen parametrinsa kokoisen risuneliön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"risunelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrisunelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"#####\n#####\n#####\n#####\n#####\n\n###\n###\n###\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Neliö","tmcname":"osa04-02c_nelio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nelio"}]},{"type":"text","value":", joka saa kaksi parametria. Funktio tulostaa neliön jonka korkeuden ja leveyden kertoo ensimmäinen parametri. Toinen parametri määrittelee mitä merkkiä käyttäen neliö piirretään."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnelio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"o\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"*****\n*****\n*****\n*****\n*****\n\nooo\nooo\nooo\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kolmio","tmcname":"osa04-02d_kolmio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kolmio"}]},{"type":"text","value":", joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen ja levyisen, risuaitakolmion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"#\n##\n###\n####\n#####\n######\n\n#\n##\n###\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuvio","tmcname":"osa04-03_kuvio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kuvio"}]},{"type":"text","value":", joka saa neljä parametria. Funktio tulostaa kuvion, jonka yläosana on kahden ensimmäisen parametrin määrittelemä kolmio ja alaosana ensimmäisen ja kahden jälkimmäisen parametrin määrittelemä suorakulmio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion tulee kutsua edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viiva"}]},{"type":"text","value":" kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pari käyttöesimerkkiä"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kuvio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"X\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkuvio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"o\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkuvio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"X\nXX\nXXX\nXXXX\nXXXXX\n*****\n*****\n*****\n\no\noo\n++\n++\n++\n++\n\n.\n..\n...\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Älä yritä ratkaista tehtävässä \"kaikkia asioita\" yhtä aikaa. Keskity ensin esim. siihen että saat kuvion yläosan kolmion piirtymään oikein, ja vasta sen jälkeen jatka kuvion täydentämistä alaosan suorakulmiolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on ylipäätänsäkin ohjelmoinnissa erittäin tärkeää: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"keskity pieniin osiin kerrallaan"}]},{"type":"text","value":", varmista että ne toimivat ennen kuin laajennat ratkaisuasi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Joulukuusi","tmcname":"osa04-04_joulukuusi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"joulukuusi"}]},{"type":"text","value":", joka saa yhden parametrin. Funktio tulostaa tekstin joulukuusi! ja parametrinsa kokoisen joulukuusen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"joulukuusi(3)"}]},{"type":"text","value":" tulostuu"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"joulukuusi!\n *\n ***\n*****\n *\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"joulukuusi(5)"}]},{"type":"text","value":" tulostuu"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"joulukuusi!\n *\n ***\n *****\n *******\n*********\n *\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa, että joulukuusen vasemmalla puolella pitää olla täsmälleen oikea määrä välilyöntejä"}]},{"type":"text","value":". Eli vaikka kuusen muoto olisi täysin oikea, mutta sen alin \"neulastaso\" ei lähde ruudun vasemmasta reunasta, ei vastaus kelpaa testeille."}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-paluuarvo","style":"position:relative;"},"children":[{"type":"text","value":"Funktion paluuarvo"},{"type":"element","tagName":"a","properties":{"href":"#funktion-paluuarvo","ariaLabel":"funktion paluuarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot voivat myös palauttaa arvoja. Esimerkiksi Pythonin valmis funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" käyttäjän antaman syötteen. Funktion palauttama arvo voidaan esimerkiksi sijoittaa muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös kokonaislukujen lukemisessa yhdessä funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" kanssa käytettävä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" palauttaa arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna kokonaisluku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" saa parametrinaan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"input"}]},{"type":"text","value":" palauttaman merkkijonon ja palauttaa sen kokonaislukutyyppisenä."}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-arvon-palauttaminen-return-komennolla","style":"position:relative;"},"children":[{"type":"text","value":"Funktion arvon palauttaminen return-komennolla"},{"type":"element","tagName":"a","properties":{"href":"#funktion-arvon-palauttaminen-return-komennolla","ariaLabel":"funktion arvon palauttaminen return komennolla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös itse määrittelemämme funktiot voivat palauttaa arvoja käyttämällä komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":". Esimerkiksi seuraava funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" palauttaa annettujen lukujen summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Summa: 5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on vielä toinen esimerkki, jossa funktio kysyy käyttäjän nimen ja palauttaa sen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kysy_nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" nimi\n\nnimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kysy_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikä on nimesi? "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Anna"}]},{"type":"text","value":"\nMoikka, Anna"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" lopettaa funktion suorituksen saman tien. Niinpä voimme tehdä seuraavan funktion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ideana on, että jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" on pienempi kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":", niin funktio palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" ja päättyy. Muuten funktion suoritus jatkuu eteenpäin, jolloin se palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komentoa siihen, että poistumme funktiosta palauttamatta mitään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"???\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" on tyhjä merkkijono, niin funktio tulostaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"???"}]},{"type":"text","value":" ja päättyy."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\n???\nMoikka, Matti"}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-paluuarvojen-kaytto","style":"position:relative;"},"children":[{"type":"text","value":"Funktion paluuarvojen käyttö"},{"type":"element","tagName":"a","properties":{"href":"#funktion-paluuarvojen-kaytto","ariaLabel":"funktion paluuarvojen kaytto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme jo nähneet, funktioiden paluuarvoja on mahdollista sijoittaa muuttujiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Summa on 10"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktion paluuarvo käyttäytyy kuten mikä tahansa arvo, ei apumuuttuja ole tarpeen ja paluuarvoa on mahdollista käyttää suoraan komennon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös antaa funktion palauttaman arvon toiselle funktiolle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"erotus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"b\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" erotus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vastaus on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaus on 2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa suoritetaan ensin sisemmät funktiokutsut "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa(5, 2)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa(2, 3)"}]},{"type":"text","value":", joiden palauttamat arvot 7 ja 5 käytetään ulomman funktiokutsun parametreina."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ulompi funktiokutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"erotus(7, 5)"}]},{"type":"text","value":" palauttaa arvon 2, joka sijoitetaan muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos"}]},{"type":"text","value":" arvoksi ja tulostetaan ruudulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden palauttamat arvot toimivat täysin samalla tavalla kuin mitkä tahansa arvot Pythonissa. Niitä voidaan tulostaa, sijoittaa muuttujaan, käyttää osana lausekkeita tai käyttää parametreina muissa funktiokutsuissa."}]},{"type":"element","tagName":"h2","properties":{"id":"arvon-palauttaminen-return-ja-print","style":"position:relative;"},"children":[{"type":"text","value":"Arvon palauttaminen, return ja print"},{"type":"element","tagName":"a","properties":{"href":"#arvon-palauttaminen-return-ja-print","ariaLabel":"arvon palauttaminen return ja print permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus aloittelija hämmentyy funktioiden paluuarvon ja funktiossa tapahtuvan tulostuksen välistä eroa. Tarkastellaan kahta versiota funktiosta, joka selvittää kahden parametrinsa maksimiarvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maksimi1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maksimi2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maksimi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmaksimi2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n7"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molemmat funktiot näyttävät toimivan hyvin, kumpikin selvittää maksimiarvon. Funktioissa on kuitenkin eräs ratkaiseva ero. Funktioista ensimmäinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maksimi1"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" selvittämänsä arvon. Se ei itse tulosta mitään, eli jos suoritetaan koodi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"maksimi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ei näytä tapahtuvan mitään. Funktion paluuarvo on siis otettava talteen muuttujaan, jos se halutaan tulostaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"vastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maksimi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioista toinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maksimi2"}]},{"type":"text","value":" taas tulostaa itse "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoa käyttäen lukujen maksimin, eli riittää kutsua"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"maksimi2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ja maksimi tulostuu ruudulle. Tämän funktion huono puoli on kuitenkin se, että funktion selvittämää arvoa ei ole mahdollista saada funktion ulkopuolelle muun ohjelman käsiteltäväksi. Tämän takia arvon palauttava funktio on useimmiten parempi vaihtoehto."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Luvuista suurin","tmcname":"osa04-05_luvuista_suurin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvuista_suurin"}]},{"type":"text","value":", joka saa parametriksi kolme kokonaislukua. Funktio palauttaa return-lausetta käyttäen luvuista suurimman."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvuista_suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvuista_suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 99"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvuista_suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 0"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Merkit samat","tmcname":"osa04-06_merkit_samat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"samat"}]},{"type":"text","value":", joka saa parametriksi merkkijonon ja kaksi merkkijonon indeksejä kuvaavaa kokonaislukua. Funktio palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-lausetta käyttäen tiedon ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":") siitä, ovatko merkkijonon parametreina olevien indeksien osoittamissa paikoissa olevat merkit samat. Jos jompikumpi indekseistä ei osu merkkijonon sisälle, palauttaa metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutama esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# samat merkit o ja o"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"samat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# eri merkit k ja a"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"samat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# toinen indeksi ei ole merkkijonon sisällä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"samat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Eka, toka ja vika sana","tmcname":"osa04-07_eka_toka_vika_sana"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee kolme funktiota: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"toka_sana"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"text","value":". Jokainen funktioista saa parametrikseen lauseen (eli merkkijonon)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot palauttavat nimensä mukaisesti lauseen ensimmäisen, toisen tai viimeisen sanan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa jokaisessa tapauksessa, että merkkijono koostuu vähintään kahdesta sanasta, ja että sanojen välillä on aina täsmälleen yksi välilyönti, ja että merkkijonon alussa ja lopussa ei ole välilyöntejä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olipa kerran kauan sitten ohjelmoija\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# olipa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kerran"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelmoija"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"olipa\nkerran\nohjelmoija"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olipa kerran\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kerran"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kerran"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"parametrin-tyyppi","style":"position:relative;"},"children":[{"type":"text","value":"Parametrin tyyppi"},{"type":"element","tagName":"a","properties":{"href":"#parametrin-tyyppi","ariaLabel":"parametrin tyyppi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrataan vielä tähän mennessä läpikäydyt tyypit:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"left"},"children":[{"type":"text","value":"Tyyppi"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"Pythonissa"}]},{"type":"element","tagName":"th","properties":{},"children":[{"type":"text","value":"Esimerkki"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Kokonaisluku"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"23"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Liukuluku"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-0.45"}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Merkkijono"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Pekka Python\""}]}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"Totuusarvo"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]}]},{"type":"element","tagName":"td","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun kutsumme funktiota, funktio toimii oikein vain,\njos annamme sille sopivan tyyppiset parametrit.\nTarkastellaan esimerkkinä seuraavaa funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii mainiosti, jos kutsumme sitä näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulosta_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka\nMoikka\nMoikka\nMoikka\nMoikka"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkaan funktio ei toimi, jos annamme sille väärän tyyppisen parametrin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulosta_monesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: '>' not supported between instances of 'str' and 'int'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ongelmaksi tulee, että funktion jälkimmäistä parametria "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kerrat"}]},{"type":"text","value":" vertaillaan kokonaislukuun 0. Kun parametri on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"text","value":" eikä kokonaisluku, tämä aiheuttaa virheen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme antaa funktion määrittelyssä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tyyppivihjeen"}]},{"type":"text","value":", joka ilmaisee, millaista tietoa parametreihin on tarkoitus sijoittaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_monesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"viesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kerrat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä kertoo funktion käyttäjälle, että parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viesti"}]},{"type":"text","value":" on tarkoitus olla merkkijono, kun taas parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kerrat"}]},{"type":"text","value":" on tarkoitus olla kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti funktion paluuarvon tyypin voi vihjata funktion määrittelyssä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kysy_nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mikä on nimesi? \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" nimi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä kertoo funktion käyttäjälle, että funktion on tarkoitus palauttaa merkkijono."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa kuitenkin, että tyyppivihje ainoastaan neuvoo, mikä tyypin tulisi olla, mutta ei valvo sitä. Jos funktiolle annetaan väärän tyyppinen parametri tai se palauttaa väärän tyyppisen arvon, funktio suoritetaan kuitenkin, mutta se toimii mahdollisesti väärin."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät lisää funktion parametrien käyttämisestä
    • \n
    • Osaat palauttaa arvon funktiosta ja käyttää sitä kutsukohdassa
    • \n
    • Osaat merkitä tyyppivihjeet parametreille ja paluuarvolle
    • \n

    Funktioiden määrittely tapahtuu avainsanan def avulla:

    def viesti():\n    print(\"Tämä tulee funktiosta\")

    Näin määriteltyä funktiota nimeltä viesti kutsutaan seuraavasti:

    viesti()

    Tällöin ohjelman tulostus on seuraava:

    Tämä tulee funktiosta

    Funktion parametrit

    Funktiolla voi olla yksi tai useampi parametri. Parametrit määritellään suluissa funktion nimen jälkeen.

    Esimerkiksi seuraavassa koodissa funktiolla tervehdi on yksi parametri ja funktiolla summa on kaksi parametria.

    def tervehdi(nimi):\n    print(\"Moikka,\", nimi)\n\ndef summa(a, b):\n    print(\"Parametrien summa on\", a + b)
    tervehdi(\"Emilia\")\nsumma(2, 3)

    Moikka, Emilia\nParametrien summa on 5

    Mitä oikeastaan tapahtuu, kun suoritetaan funktiokutsu tervehdi(\"Emilia\")?

    Funktion määrittelyssä tervehdi(nimi) oleva nimi on funktion\nmuodollinen parametri. Parametrin nimi on annettu funktion alussa,\nja sitä voidaan käyttää funktiossa muuttujan tavoin.

    Funktion kutsussa tervehdi(\"Emilia\") oleva \"Emilia\" on funktion\ntodellinen parametri. Kun funktiota kutsutaan, todellinen parametri\nsijoitetaan muodollisen parametrin arvoksi.

    Joskus termillä parametri viitataan muodolliseen parametriin ja\ntermillä argumentti viitataan todelliseen parametriin,\nmutta monet myös käyttävät termejä sekaisin.

    Testien virheilmoitukset

    Jos ohjelmasi ei toimi oikein, antavat testit enemmän tai vähemmän hyvän virheilmoituksen. Virheilmoitus kannattaa ehdottomasti lukea huolellisesti.

    Joissain tilanteissa virheilmoitus ei kerro tarkemmin, mistä on kyse. Esimerkiksi seuraavassa tehtävässä saatat törmätä seuraavaan virheeseen:

    \n \n \n \n \n \n \"4\n \n \n

    Virhe kertoo, että tehtävän funktiota viiva pitäisi pystyä kutsumaan seuraavasti:

    viiva(5, \"\")

    Varsinainen ongelma paljastuu, kun kokeillaan, mitä funktiokutsu tekee, eli kopioidaan virheilmoituksen kertoma funktiokutsu koodiin ja painetaan vihreää kolmiota:

    \n \n

    Tee funktio viiva, joka saa kaksi parametria (leveys, merkkijono). Funktio tulostaa ensimmäisen parametrin määrittämän pituisen viivan käyttäen toisena parametrina olevan merkkijonon ensimmäistä merkkiä. Jos parametrina oleva merkkijono on tyhjä, tulostuu viiva tähtinä.

    Käyttöesimerkki:

    viiva(7, \"%\")\nviiva(10, \"LOL\")\nviiva(3, \"\")
    \n%%%%%%%\nLLLLLLLLLL\n***\n

    Sisäkkäiset kutsut

    Voimme kutsua funktiota myös toisen funktion sisältä. Esimerkiksi seuraavassa ohjelmassa funktio\ntervehdi_monesti kutsuu funktiota tervehdi halutun määrän kertoja:

    def tervehdi(nimi):\n    print(\"Moikka,\", nimi)\n\ndef tervehdi_monesti(nimi, kerrat):\n    while kerrat > 0:\n        tervehdi(nimi)\n        kerrat -= 1\n\ntervehdi_monesti(\"Emilia\", 3)

    Moikka, Emilia\nMoikka, Emilia\nMoikka, Emilia

    Tee funktio risulaatikko, joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen, kymmenen merkkiä leveän risulaatikon.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    risulaatikko(5)\nprint()\nrisulaatikko(2)
    \n##########\n##########\n##########\n##########\n##########\n\n##########\n##########\n

    Tee funktio risunelio, joka piirtää risuaitamerkkiä käyttäen parametrinsa kokoisen risuneliön.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    risunelio(5)\nprint()\nrisunelio(3)
    \n#####\n#####\n#####\n#####\n#####\n\n###\n###\n###\n

    Tee funktio nelio, joka saa kaksi parametria. Funktio tulostaa neliön jonka korkeuden ja leveyden kertoo ensimmäinen parametri. Toinen parametri määrittelee mitä merkkiä käyttäen neliö piirretään.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    nelio(5, \"*\")\nprint()\nnelio(3, \"o\")
    \n*****\n*****\n*****\n*****\n*****\n\nooo\nooo\nooo\n

    Tee funktio kolmio, joka piirtää risuaitamerkkiä käyttäen parametrinsa korkuisen ja levyisen, risuaitakolmion.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle. Älä muuta funktiota mitenkaan!

    Pari käyttöesimerkkiä

    kolmio(6)\nprint()\nkolmio(3)
    \n#\n##\n###\n####\n#####\n######\n\n#\n##\n###\n

    Tee funktio kuvio, joka saa neljä parametria. Funktio tulostaa kuvion, jonka yläosana on kahden ensimmäisen parametrin määrittelemä kolmio ja alaosana ensimmäisen ja kahden jälkimmäisen parametrin määrittelemä suorakulmio.

    Funktion tulee kutsua edellisen tehtävän funktiota viiva kaiken tulostuksen tekemiseen! Kopioi edellisen tehtävän funktion koodi tämän tehtävän funktion koodin yläpuolelle.

    Pari käyttöesimerkkiä

    kuvio(5, \"X\", 3, \"*\")\nprint()\nkuvio(2, \"o\", 4, \"+\")\nprint()\nkuvio(3, \".\", 0, \",\")
    \nX\nXX\nXXX\nXXXX\nXXXXX\n*****\n*****\n*****\n\no\noo\n++\n++\n++\n++\n\n.\n..\n...\n

    Vihje

    Älä yritä ratkaista tehtävässä \"kaikkia asioita\" yhtä aikaa. Keskity ensin esim. siihen että saat kuvion yläosan kolmion piirtymään oikein, ja vasta sen jälkeen jatka kuvion täydentämistä alaosan suorakulmiolla.

    Tämä on ylipäätänsäkin ohjelmoinnissa erittäin tärkeää: keskity pieniin osiin kerrallaan, varmista että ne toimivat ennen kuin laajennat ratkaisuasi.

    Tee funktio joulukuusi, joka saa yhden parametrin. Funktio tulostaa tekstin joulukuusi! ja parametrinsa kokoisen joulukuusen.

    Esim. kutsuttaessa joulukuusi(3) tulostuu

    \njoulukuusi!\n  *\n ***\n*****\n  *\n

    Esim. kutsuttaessa joulukuusi(5) tulostuu

    \njoulukuusi!\n    *\n   ***\n  *****\n *******\n*********\n    *\n

    Huomaa, että joulukuusen vasemmalla puolella pitää olla täsmälleen oikea määrä välilyöntejä. Eli vaikka kuusen muoto olisi täysin oikea, mutta sen alin \"neulastaso\" ei lähde ruudun vasemmasta reunasta, ei vastaus kelpaa testeille.

    Funktion paluuarvo

    Funktiot voivat myös palauttaa arvoja. Esimerkiksi Pythonin valmis funktio input palauttaa käyttäjän antaman syötteen. Funktion palauttama arvo voidaan esimerkiksi sijoittaa muuttujaan:

    sana = input(\"Anna sana: \")

    Myös kokonaislukujen lukemisessa yhdessä funktion input kanssa käytettävä funktio int palauttaa arvon:

    luku = int(input(\"Anna kokonaisluku: \"))

    Funktio int saa parametrinaan funktion input palauttaman merkkijonon ja palauttaa sen kokonaislukutyyppisenä.

    Funktion arvon palauttaminen return-komennolla

    Myös itse määrittelemämme funktiot voivat palauttaa arvoja käyttämällä komentoa return. Esimerkiksi seuraava funktio summa palauttaa annettujen lukujen summan:

    def summa(a, b):\n    return a + b\n\nvastaus = summa(2, 3)\n\nprint(\"Summa:\", vastaus)

    Summa: 5

    Seuraavassa on vielä toinen esimerkki, jossa funktio kysyy käyttäjän nimen ja palauttaa sen:

    def kysy_nimi():\n    nimi = input(\"Mikä on nimesi? \")\n    return nimi\n\nnimi = kysy_nimi()\nprint(\"Moikka,\", nimi)

    Mikä on nimesi? Anna\nMoikka, Anna

    Kannattaa huomata, että komento return lopettaa funktion suorituksen saman tien. Niinpä voimme tehdä seuraavan funktion:

    def pienin(a,b):\n    if a < b:\n        return a\n    return b\n\nprint(pienin(3, 7))\nprint(pienin(5, 2))

    Tässä ideana on, että jos a on pienempi kuin b, niin funktio palauttaa arvon a ja päättyy. Muuten funktion suoritus jatkuu eteenpäin, jolloin se palauttaa arvon b.

    3\n2

    Voimme myös käyttää return-komentoa siihen, että poistumme funktiosta palauttamatta mitään:

    def tervehdi(nimi):\n    if nimi == \"\":\n        print(\"???\")\n        return\n    print(\"Moikka,\", nimi)\n\ntervehdi(\"Emilia\")\ntervehdi(\"\")\ntervehdi(\"Matti\")

    Jos nimi on tyhjä merkkijono, niin funktio tulostaa ??? ja päättyy.

    Moikka, Emilia\n???\nMoikka, Matti

    Funktion paluuarvojen käyttö

    Kuten olemme jo nähneet, funktioiden paluuarvoja on mahdollista sijoittaa muuttujiin:

    def summa(a, b):\n    return a + b\n\ntulos = summa(4, 6)\nprint(\"Summa on\", tulos)

    Summa on 10

    Koska funktion paluuarvo käyttäytyy kuten mikä tahansa arvo, ei apumuuttuja ole tarpeen ja paluuarvoa on mahdollista käyttää suoraan komennon print parametrina:

    print(\"Summa on\", summa(4, 6))

    Voimme myös antaa funktion palauttaman arvon toiselle funktiolle:

    def summa(a, b):\n    return a+b\n\ndef erotus(a, b):\n    return a-b\n\ntulos = erotus(summa(5, 2), summa(2, 3))\nprint(\"Vastaus on\", tulos)

    Vastaus on 2

    Tässä tapauksessa suoritetaan ensin sisemmät funktiokutsut summa(5, 2) ja summa(2, 3), joiden palauttamat arvot 7 ja 5 käytetään ulomman funktiokutsun parametreina.

    Ulompi funktiokutsu erotus(7, 5) palauttaa arvon 2, joka sijoitetaan muuttujan tulos arvoksi ja tulostetaan ruudulle.

    Funktioiden palauttamat arvot toimivat täysin samalla tavalla kuin mitkä tahansa arvot Pythonissa. Niitä voidaan tulostaa, sijoittaa muuttujaan, käyttää osana lausekkeita tai käyttää parametreina muissa funktiokutsuissa.

    Arvon palauttaminen, return ja print

    Joskus aloittelija hämmentyy funktioiden paluuarvon ja funktiossa tapahtuvan tulostuksen välistä eroa. Tarkastellaan kahta versiota funktiosta, joka selvittää kahden parametrinsa maksimiarvon:

    def maksimi1(a, b):\n    if a > b:\n        return a\n    else:\n        return b\n\ndef maksimi2(a, b):\n    if a > b:\n        print(a)\n    else:\n        print(b)\n\nvastaus = maksimi1(3, 5)\nprint(vastaus)\n\nmaksimi2(7, 2)

    5\n7

    Molemmat funktiot näyttävät toimivan hyvin, kumpikin selvittää maksimiarvon. Funktioissa on kuitenkin eräs ratkaiseva ero. Funktioista ensimmäinen maksimi1 palauttaa selvittämänsä arvon. Se ei itse tulosta mitään, eli jos suoritetaan koodi

    maksimi1(3, 5)

    ei näytä tapahtuvan mitään. Funktion paluuarvo on siis otettava talteen muuttujaan, jos se halutaan tulostaa:

    vastaus = maksimi1(3, 5)\nprint(vastaus)

    Funktioista toinen maksimi2 taas tulostaa itse print-komentoa käyttäen lukujen maksimin, eli riittää kutsua

    maksimi2(7, 5)

    ja maksimi tulostuu ruudulle. Tämän funktion huono puoli on kuitenkin se, että funktion selvittämää arvoa ei ole mahdollista saada funktion ulkopuolelle muun ohjelman käsiteltäväksi. Tämän takia arvon palauttava funktio on useimmiten parempi vaihtoehto.

    Tee funktio luvuista_suurin, joka saa parametriksi kolme kokonaislukua. Funktio palauttaa return-lausetta käyttäen luvuista suurimman.

    Käyttöesimerkki

    print(luvuista_suurin(3, 4, 1)) # 4\nprint(luvuista_suurin(99, -4, 7)) # 99\nprint(luvuista_suurin(0, 0, 0)) # 0

    Tee funktio samat, joka saa parametriksi merkkijonon ja kaksi merkkijonon indeksejä kuvaavaa kokonaislukua. Funktio palauttaa return-lausetta käyttäen tiedon (True tai False) siitä, ovatko merkkijonon parametreina olevien indeksien osoittamissa paikoissa olevat merkit samat. Jos jompikumpi indekseistä ei osu merkkijonon sisälle, palauttaa metodi False.

    Muutama esimerkki:

    # samat merkit o ja o\nprint(samat(\"koodari\", 1, 2)) # True\n\n# eri merkit k ja a\nprint(samat(\"koodari\", 0, 4)) # False\n\n# toinen indeksi ei ole merkkijonon sisällä\nprint(samat(\"koodari\", 0, 10)) # False

    Tee kolme funktiota: eka_sana, toka_sana ja vika_sana. Jokainen funktioista saa parametrikseen lauseen (eli merkkijonon).

    Funktiot palauttavat nimensä mukaisesti lauseen ensimmäisen, toisen tai viimeisen sanan.

    Voit olettaa jokaisessa tapauksessa, että merkkijono koostuu vähintään kahdesta sanasta, ja että sanojen välillä on aina täsmälleen yksi välilyönti, ja että merkkijonon alussa ja lopussa ei ole välilyöntejä.

    lause = \"olipa kerran kauan sitten ohjelmoija\"\n\nprint(eka_sana(lause)) # olipa\nprint(toka_sana(lause)) # kerran\nprint(vika_sana(lause)) # ohjelmoija

    olipa\nkerran\nohjelmoija

    lause = \"olipa kerran\"\n\nprint(toka_sana(lause)) # kerran\nprint(vika_sana(lause)) # kerran

    Parametrin tyyppi

    Kerrataan vielä tähän mennessä läpikäydyt tyypit:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    TyyppiPythonissaEsimerkki
    Kokonaislukuint23
    Liukulukufloat-0.45
    Merkkijonostr\"Pekka Python\"
    TotuusarvoboolTrue

    Kun kutsumme funktiota, funktio toimii oikein vain,\njos annamme sille sopivan tyyppiset parametrit.\nTarkastellaan esimerkkinä seuraavaa funktiota:

    def tulosta_monesti(viesti, kerrat):\n    while kerrat > 0:\n        print(viesti)\n        kerrat -= 1

    Funktio toimii mainiosti, jos kutsumme sitä näin:

    tulosta_monesti(\"Moikka\", 5)

    Moikka\nMoikka\nMoikka\nMoikka\nMoikka

    Kuitenkaan funktio ei toimi, jos annamme sille väärän tyyppisen parametrin:

    tulosta_monesti(\"Moikka\", \"Emilia\")

    TypeError: '>' not supported between instances of 'str' and 'int'

    Tässä ongelmaksi tulee, että funktion jälkimmäistä parametria kerrat vertaillaan kokonaislukuun 0. Kun parametri on \"Emilia\" eikä kokonaisluku, tämä aiheuttaa virheen.

    Voimme antaa funktion määrittelyssä tyyppivihjeen, joka ilmaisee, millaista tietoa parametreihin on tarkoitus sijoittaa:

    def tulosta_monesti(viesti : str, kerrat : int):\n    while kerrat > 0:\n        print(viesti)\n        kerrat -= 1

    Tämä kertoo funktion käyttäjälle, että parametrin viesti on tarkoitus olla merkkijono, kun taas parametrin kerrat on tarkoitus olla kokonaisluku.

    Vastaavasti funktion paluuarvon tyypin voi vihjata funktion määrittelyssä:

    def kysy_nimi() -> str:\n    nimi = input(\"Mikä on nimesi? \")\n    return nimi

    Tämä kertoo funktion käyttäjälle, että funktion on tarkoitus palauttaa merkkijono.

    Huomaa kuitenkin, että tyyppivihje ainoastaan neuvoo, mikä tyypin tulisi olla, mutta ei valvo sitä. Jos funktiolle annetaan väärän tyyppinen parametri tai se palauttaa väärän tyyppisen arvon, funktio suoritetaan kuitenkin, mutta se toimii mahdollisesti väärin.

    ","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/2-lisaa-funktioista.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/3-listat/page-data.json b/page-data/osa-4/3-listat/page-data.json index ba40c4a7c..4ffdc58aa 100644 --- a/page-data/osa-4/3-listat/page-data.json +++ b/page-data/osa-4/3-listat/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-4/3-listat", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä lista tarkoittaa ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat viitata listan yksittäisiin alkioihin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat lisätä ja poistaa listan alkioita"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää valmiita funktioita ja metodeita listojen käsittelyyn"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän asti olemme tallentaneet ohjelmissa käytettävää tietoa muuttujien avulla. Yksittäisillä muuttujilla on kuitenkin rajoituksensa. Jos ohjelman käsittelemä tiedon määrä on vaihteleva ja saattaa olla suuri, olisi vaivalloista määritellä jokaiselle arvolle erillinen muuttuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lista"}]},{"type":"text","value":" on kokoelma tietoa, johon viitataan yhteisen nimen kautta. Listan sisältö kirjoitetaan hakasulkeiden sisään, ja jokaista listalla olevaa arvoa kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"alkioksi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi luo uuden tyhjän listan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi puolestaan luo listan, jossa on valmiina viisi alkiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"listan-alkioihin-viittaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Listan alkioihin viittaaminen"},{"type":"element","tagName":"a","properties":{"href":"#listan-alkioihin-viittaaminen","ariaLabel":"listan alkioihin viittaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkiot on indeksoitu samalla tavalla kuin merkkijonon yksittäiset merkit. Tässäkin tapauksessa indeksointi alkaa nollasta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 581px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/0c718cff85e5c83bbec15a7ce1a29896/92d15/4_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 26.08695652173913%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVQY031QWQqEMBTr/a/jWQQFFxRBtIL7vkQS6DDzM4WQvjRN36tZlgVt22IcR5zniXmesW0b1nUV9n3HcRwfjfW/Zb4LmnnpeR7c9y12e4LL6eTrurRnI87zE1jXNZIkkYkd0UiwQz7GADI19zhDOCVr3jMccZomgWMT1lqZhmEQ86zve32Hq93X0N91nYJ934cpyxJFUUhsmkZh7DLLMoRhiDRNEUURgiCQTsRxLM7zXGcMqqoKnufhBUAvgMcmbGmAAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0c718cff85e5c83bbec15a7ce1a29896/a0b58/4_2_1.webp 230w","/static/0c718cff85e5c83bbec15a7ce1a29896/bc10c/4_2_1.webp 460w","/static/0c718cff85e5c83bbec15a7ce1a29896/39daa/4_2_1.webp 581w"],"sizes":"(max-width: 581px) 100vw, 581px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0c718cff85e5c83bbec15a7ce1a29896/81c8e/4_2_1.png 230w","/static/0c718cff85e5c83bbec15a7ce1a29896/08a84/4_2_1.png 460w","/static/0c718cff85e5c83bbec15a7ce1a29896/92d15/4_2_1.png 581w"],"sizes":"(max-width: 581px) 100vw, 581px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/0c718cff85e5c83bbec15a7ce1a29896/92d15/4_2_1.png","alt":"Lista indeksoidaan nollasta alkaen","title":"Lista indeksoidaan nollasta alkaen","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäiseen listan alkioon voidaan viitata samalla tavalla kuin merkkijonon yksittäisiin merkkeihin hakasulkujen avulla. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kahden ekan summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"7\n2\n5\nKahden ekan summa: 9"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme tulostaa listan koko sisällön näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[7, 2, 2, 5, 2]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkioita voidaan myös muuttaa. Alkion arvon muuttaminen tapahtuu sijoittamalla uusi arvo vanhan paikalle – siis samalla tavalla kuin muuttujia käytettäessä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[7, 2, 2, 5, 2]\n[7, 3, 2, 5, 2]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" antaa listan alkioiden määrän:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkioiden arvojen muutokset","tmcname":"osa04-07a_alkioiden_arvojen_muutokset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka alustaa listan jossa on arvot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[1, 2, 3, 4, 5]"}]},{"type":"text","value":". Tämän jälkeen ohjelma kysyy käyttäjältä alkion indeksin ja uuden arvon, vaihtaa kyseisen alkion arvon ja tulostaa listan uudelleen. Ohjelman suoritus päättyy, jos käyttäjä antaa alkion indeksiksi -1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nAnna arvo: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n[10, 2, 3, 4, 5]\nAnna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna arvo: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"250"}]},{"type":"text","value":"\n[10, 2, 250, 4, 5]\nAnna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna arvo: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-45"}]},{"type":"text","value":"\n[10, 2, 250, 4, -45]\nAnna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"alkioiden-lisaaminen-ja-poistaminen","style":"position:relative;"},"children":[{"type":"text","value":"Alkioiden lisääminen ja poistaminen"},{"type":"element","tagName":"a","properties":{"href":"#alkioiden-lisaaminen-ja-poistaminen","ariaLabel":"alkioiden lisaaminen ja poistaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan loppuun voidaan lisätä uusia alkioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"append"}]},{"type":"text","value":"-metodin avulla. Metodia käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[5, 10, 3]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä ohjelman käytössä on kaksi erillistä listaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkengannumerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"37"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luvut:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kengännumerot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäys menee siis siihen listaan, mihin metodikutsu kohdistetaan:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvut:\n[5, 10, 3]\nKengännumerot:\n[37, 44, 40, 28]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkioiden lisäys listaan","tmcname":"osa04-07b_alkoiden_lisays_listaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä ensin lukujen määrän. Sen jälkeen ohjelma pyytää käyttäjää syöttämään annetun määrän lukuja yksitellen ja lisää ne listaan samassa järjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopuksi lista tulostetaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka monta lukua: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nAnna luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nAnna luku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"250"}]},{"type":"text","value":"\nAnna luku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"34"}]},{"type":"text","value":"\n[10, 250, 34]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli halutaan lisätä alkio johonkin muualle kuin listan loppuun, voidaan käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"insert"}]},{"type":"text","value":"-metodia. Metodi lisää alkion halutun indeksin paikalle. Kaikkia listalla valmiina olevia alkioita lisäyspaikasta alkaen siirretään yhdellä askeleella eteenpäin:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 632px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/fbc699b555a562e011de8d156d23ff29/084e2/4_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 65.21739130434783%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTklEQVQ4y62S3W7CMAyF+xZ75d3spfYUu0JCSAUEbZP0v5Qe9AU5Q91Au5glK47jHNvHzqqq0n6/V9M0CiGorutkd12nYRjUtm30YyPLsvyqSKZ/FECfAvZ9HwMul4umaUpqd6pFuaOpwnmeo+N6vcpsAqGC1mnVex/VKLHTOZf8RkcGf9vtVkVR6Hg8RjvPc53P5+gDmI92GiAdlGUZFR98P+WQasdxjMpAAHtUQNb3BMgHMnOS2bJbC4Dzxgc7D4dDjDEfSvIIaATbycOa6LVABW2S7M9TXu/bmhIGRmdryV4t6bc9axg6OXefNmDwttlsfmzByz1E5nnRNEltO6tp6sSbrY7xijKgyKENwYKtghBaeZ/L+w+F8CnvR4Vwr4Q4qnrcS3wZO8fuAXA6nbTb7eIUq6qUc71C+FIIb3LuXWUpeV+kRTZghoRNcTeEg/JdQzeckwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fbc699b555a562e011de8d156d23ff29/a0b58/4_2_2.webp 230w","/static/fbc699b555a562e011de8d156d23ff29/bc10c/4_2_2.webp 460w","/static/fbc699b555a562e011de8d156d23ff29/59680/4_2_2.webp 632w"],"sizes":"(max-width: 632px) 100vw, 632px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fbc699b555a562e011de8d156d23ff29/81c8e/4_2_2.png 230w","/static/fbc699b555a562e011de8d156d23ff29/08a84/4_2_2.png 460w","/static/fbc699b555a562e011de8d156d23ff29/084e2/4_2_2.png 632w"],"sizes":"(max-width: 632px) 100vw, 632px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/fbc699b555a562e011de8d156d23ff29/084e2/4_2_2.png","alt":"Alkion lisäys listaan","title":"Alkion lisäys listaan","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"insert"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"insert"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[10, 1, 2, 3, 4, 5, 6]\n[10, 1, 20, 2, 3, 4, 5, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alkioita voidaan poistaa listasta kahden eri lähtökohdan mukaisesti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos tiedetään, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"missä"}]},{"type":"text","value":" poistettava alkio sijaitsee, voidaan käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos tiedetään, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mikä"}]},{"type":"text","value":" poistettavan alkion arvo on, käytetään metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"remove"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" annetaan poistettavan alkion indeksi. Esimerkiksi seuraava koodi poistaa listalta alkiot kohdista 2 ja 3. Huomaa, että alkioiden indeksit muuttuvat poiston jälkeen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 4, 5, 6]\n[1, 2, 4, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" poistetun listan alkion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"7\n[4, 2, 2, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"remove"}]},{"type":"text","value":" annetaan indeksin sijasta poistettavan alkion arvo. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 3, 4, 5, 6]\n[1, 3, 4, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodi poistaa listalta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ensimmäisen"}]},{"type":"text","value":" alkion, jolla on annettu arvo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 1, 2]\n[2, 2]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lisäys ja poisto","tmcname":"osa04-07c_lisays_ja_poisto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää valitsemaan alkion lisäyksen tai poiston. Sekä lisäys että poisto tehdään listan loppuun. Lisättävän alkion arvo on aina yhtä suurempi kuin listan viimeinen alkio (tai 1, jos listassa ei ole alkioita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joka operaation välissä lista tulostetaan. Katso esimerkkiä seuraavasta tulosteesta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lista on nyt []\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"p"}]},{"type":"text","value":"\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":"\nMoi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että listalta ei yritetä poistaa alkioita, jos lista on tyhjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos listalla ei ole poistettavaa alkiota, seuraa virhe. Merkkijonoista tutulla tavalla alkion olemassaolon listalla voi testata "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":"-operaattorin avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Listalla on alkio 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"listalla on alkio 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listalla on alkio 1"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sama sana kahdesti","tmcname":"osa04-08_sama_sana_kahdesti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kyselee käyttäjältä sanoja. Kun käyttäjä syöttää jonkin sanan kahdesti, ohjelma tulostaa eri sanojen määrän ja lopettaa toimintansa."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"olipa"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kerran"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kauan"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sitten"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kerran"}]},{"type":"text","value":"\nAnnoit 4 eri sanaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"listan-jarjestaminen","style":"position:relative;"},"children":[{"type":"text","value":"Listan järjestäminen"},{"type":"element","tagName":"a","properties":{"href":"#listan-jarjestaminen","ariaLabel":"listan jarjestaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkiot voidaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"järjestää"}]},{"type":"text","value":" pienimmästä suurimpaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 2, 4, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa on käyttää funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":", joka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" järjestetyn listan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 2, 4, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa ero näissä tavoissa: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" muuttaa listan sisällön järjestetyksi, kun taas "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" luo uuden järjestetyn listan. Jälkimmäisessä tavassa voimme säilyttää myös listan alkuperäisen järjestyksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"alkuperainen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\njarjestetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkuperainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkuperainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 5, 1, 2, 4]\n[1, 2, 2, 4, 5]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lista kahdesti","tmcname":"osa04-08b_lista_kahdesti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lukuja ja lisää niitä listaan. Lista tulostetaan jokaisen luvun lisäyksen jälkeen kahdella eri tavalla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"alkiot lisäysjärjestyksessä ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"järjestettynä pienimmästä suurimpaan alkioon"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus päättyy, kun käyttäjä syöttää luvun 0."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLista: [3]\nJärjestettynä: [3]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLista: [3, 1]\nJärjestettynä: [1, 3]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nLista: [3, 1, 9]\nJärjestettynä: [1, 3, 9]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLista: [3, 1, 9, 5]\nJärjestettynä: [1, 3, 5, 9]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nMoi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"suurin-pienin-ja-summa","style":"position:relative;"},"children":[{"type":"text","value":"Suurin, pienin ja summa"},{"type":"element","tagName":"a","properties":{"href":"#suurin-pienin-ja-summa","ariaLabel":"suurin pienin ja summa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"max"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"min"}]},{"type":"text","value":" antavat listan suurimman ja pienimmän alkion.\nFunktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum"}]},{"type":"text","value":" puolestaan laskee listan alkioiden summan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsuurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npienin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pienin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pienin: 1\nSuurin: 5\nSumma: 15"}]}]},{"type":"element","tagName":"h2","properties":{"id":"metodit-vs-funktiot","style":"position:relative;"},"children":[{"type":"text","value":"Metodit vs. funktiot"},{"type":"element","tagName":"a","properties":{"href":"#metodit-vs-funktiot","ariaLabel":"metodit vs funktiot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on ehkä hieman hämmentävästi käytössä kaksi eri tapaa listojen käsittelyyn."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suurin osa käsittelystä tapahtuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodien"}]},{"type":"text","value":" avulla. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"append"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" ovat metodeja, joita kutsutaan listamuuttujan kautta pistenotaatiolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodikutsuja"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodikutsu"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sen sijaan esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"max"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"min"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" ovat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"funktioita"}]},{"type":"text","value":", joille lista annetaan parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktiokutsuissa lista on parametrina"}]},{"type":"text","value":"\nsuurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npienin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pienin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Listan pituus:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktiokutsu: lista on parametrina, järjestetty lista paluuarvona"}]},{"type":"text","value":"\njarjestyksessa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestyksessa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pienin: 1\nSuurin: 7\nListan pituus: 4\n[1, 2, 3, 7]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lista-funktion-parametrina-ja-paluuarvona","style":"position:relative;"},"children":[{"type":"text","value":"Lista funktion parametrina ja paluuarvona"},{"type":"element","tagName":"a","properties":{"href":"#lista-funktion-parametrina-ja-paluuarvona","ariaLabel":"lista funktion parametrina ja paluuarvona permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse tekemiemme funktioiden parametreina voi olla myös listoja. Seuraavassa on funktio, joka selvittää parametrina listan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mediaanin"}]},{"type":"text","value":" eli keskimmäisen alkion järjestetyssä listassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"mediaani"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n jarjestetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n keskikohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keskikohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio selvittää mediaanin tekemällä parametrinaan saamasta listasta järjestetyn version ja palauttamalla sen keskimmäisen alkion. Huomaa, että käytössä on kokonaislukujakolasku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":", koska listan indeksin tulee olla kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kengannumerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"36"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kengännumeroiden mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\niat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"56"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"34"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"77"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ikien mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"iat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kengännumeroiden mediaani on 40\nIkien mediaani on 22"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio voi myös palauttaa listan. Seuraavassa on funktio, joka palauttaa listan käyttäjän syöttämiä kokonaislukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_luvut"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku (tyhjä lopettaa): \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio käyttää lista-tyyppistä apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":", johon se lisää kaikki käyttäjän antamat luvut. Silmukan jälkeen funktio palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komennon avulla listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin luku on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-22"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"35"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa):\nSuurin luku on 35\nLukujen mediaani on 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pieni esimerkkiohjelmamme demonstroi jo yhtä funktioiden tärkeimmistä käyttötarkoituksista: niiden avulla ohjelma saadaan jaettua loogisiin selkeästi ymmärrettäviin kokonaisuuksiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sinänsä sama ohjelma olisi voitu tehdä myös ilman funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku (tyhjä lopettaa): \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\njarjestetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkeskikohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nmediaani "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keskikohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin luku on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kuitenkin ohjelman logiikan seuraaminen on vaikeampaa, koska ei ole enää yhtä selvää, mitkä komennot liittyvät minkäkin kokonaisuuden (syötteiden lukeminen, mediaanin laskeminen, ohjelman muu toiminta) toteuttamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jako funktioiksi siis selkeyttää koodin rakennetta ja tuo esille loogisia kokonaisuuksia. Tämän ansiosta on myös helpompaa varmistaa, että ohjelma toimii halutulla tavalla, koska voimme testata erikseen tiettyä funktiota (esim. toimiiko funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"mediaani"}]},{"type":"text","value":" oikein)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman rakenteen loogisen jakamisen lisäksi funktioiden toinen käyttötarkoitus on koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"uusiokäyttö"}]},{"type":"text","value":". Jos ohjelmassa on tarvetta tehdä samankaltainen operaatio useaan kertaan, kannattaa sitä varten luoda oma selkeästi nimetty funktio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kengännumerot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Painot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npainot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pituudet:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan pituus","tmcname":"osa04-09_listan_pituus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":", joka palauttaa parametrinaan saamansa listan pituuden."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# huomaa, että voit kutsua funktiota myös antamalla listan suoraan funktion parametriksi"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 5\nvastaus 4"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Keskiarvo","tmcname":"osa04-10_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":", joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan alkioiden keskiarvon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 3.0"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vaihteluväli","tmcname":"osa04-11_vaihteluvali"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaihteluvali"}]},{"type":"text","value":", joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan vaihteluvälin (eli suurimman ja pienimmän alkion erotuksen)."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vaihteluvali"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 4"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-listan-kasittelysta","style":"position:relative;"},"children":[{"type":"text","value":"Lisää listan käsittelystä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-listan-kasittelysta","ariaLabel":"lisaa listan kasittelysta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on paljon muitakin mahdollisuuksia listan käsittelyyn. Voit tutustua niihin Pythonin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/tutorial/datastructures.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"dokumentaation"}]},{"type":"text","value":" kautta."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä lista tarkoittaa ohjelmoinnissa
    • \n
    • Osaat viitata listan yksittäisiin alkioihin
    • \n
    • Osaat lisätä ja poistaa listan alkioita
    • \n
    • Osaat hyödyntää valmiita funktioita ja metodeita listojen käsittelyyn
    • \n

    Tähän asti olemme tallentaneet ohjelmissa käytettävää tietoa muuttujien avulla. Yksittäisillä muuttujilla on kuitenkin rajoituksensa. Jos ohjelman käsittelemä tiedon määrä on vaihteleva ja saattaa olla suuri, olisi vaivalloista määritellä jokaiselle arvolle erillinen muuttuja.

    Lista on kokoelma tietoa, johon viitataan yhteisen nimen kautta. Listan sisältö kirjoitetaan hakasulkeiden sisään, ja jokaista listalla olevaa arvoa kutsutaan alkioksi.

    Esimerkiksi seuraava koodi luo uuden tyhjän listan:

    lista = []

    Seuraava koodi puolestaan luo listan, jossa on valmiina viisi alkiota:

    lista = [7, 2, 2, 5, 2]

    Listan alkioihin viittaaminen

    Listan alkiot on indeksoitu samalla tavalla kuin merkkijonon yksittäiset merkit. Tässäkin tapauksessa indeksointi alkaa nollasta:

    \n \n \n \n \n \n \"Lista\n \n \n

    Yksittäiseen listan alkioon voidaan viitata samalla tavalla kuin merkkijonon yksittäisiin merkkeihin hakasulkujen avulla. Esimerkiksi:

    lista = [7, 2, 2, 5, 2]\n\nprint(lista[0])\nprint(lista[1])\nprint(lista[3])\n\nprint(\"Kahden ekan summa:\", lista[0] + lista[1])

    7\n2\n5\nKahden ekan summa: 9

    Voimme tulostaa listan koko sisällön näin:

    lista = [7, 2, 2, 5, 2]\nprint(lista)

    [7, 2, 2, 5, 2]

    Listan alkioita voidaan myös muuttaa. Alkion arvon muuttaminen tapahtuu sijoittamalla uusi arvo vanhan paikalle – siis samalla tavalla kuin muuttujia käytettäessä:

    lista = [7, 2, 2, 5, 2]\nprint(lista)\nlista[1] = 3\nprint(lista)

    [7, 2, 2, 5, 2]\n[7, 3, 2, 5, 2]

    Funktio len antaa listan alkioiden määrän:

    lista = [7, 2, 2, 5, 2]\nprint(len(lista))

    5

    Tee ohjelma, joka alustaa listan jossa on arvot [1, 2, 3, 4, 5]. Tämän jälkeen ohjelma kysyy käyttäjältä alkion indeksin ja uuden arvon, vaihtaa kyseisen alkion arvon ja tulostaa listan uudelleen. Ohjelman suoritus päättyy, jos käyttäjä antaa alkion indeksiksi -1.

    Esimerkkisuoritus:

    Anna indeksi: 0\nAnna arvo: 10\n[10, 2, 3, 4, 5]\nAnna indeksi: 2\nAnna arvo: 250\n[10, 2, 250, 4, 5]\nAnna indeksi: 4\nAnna arvo: -45\n[10, 2, 250, 4, -45]\nAnna indeksi: -1

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Alkioiden lisääminen ja poistaminen

    Listan loppuun voidaan lisätä uusia alkioita append-metodin avulla. Metodia käytetään seuraavasti:

    luvut = []\nluvut.append(5)\nluvut.append(10)\nluvut.append(3)\nprint(luvut)

    [5, 10, 3]

    Seuraavassa esimerkissä ohjelman käytössä on kaksi erillistä listaa:

    luvut = []\nkengannumerot = []\n\nluvut.append(5)\nluvut.append(10)\nluvut.append(3)\n\nkengannumerot.append(37)\nkengannumerot.append(44)\nkengannumerot.append(40)\nkengannumerot.append(28)\n\nprint(\"Luvut:\")\nprint(luvut)\n\nprint(\"Kengännumerot:\")\nprint(kengannumerot)

    Lisäys menee siis siihen listaan, mihin metodikutsu kohdistetaan:

    Luvut:\n[5, 10, 3]\nKengännumerot:\n[37, 44, 40, 28]

    Tee ohjelma, joka kysyy käyttäjältä ensin lukujen määrän. Sen jälkeen ohjelma pyytää käyttäjää syöttämään annetun määrän lukuja yksitellen ja lisää ne listaan samassa järjestyksessä.

    Lopuksi lista tulostetaan.

    Esimerkkisuoritus:

    Kuinka monta lukua: 3\nAnna luku 1: 10\nAnna luku 2: 250\nAnna luku 3: 34\n[10, 250, 34]

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Mikäli halutaan lisätä alkio johonkin muualle kuin listan loppuun, voidaan käyttää insert-metodia. Metodi lisää alkion halutun indeksin paikalle. Kaikkia listalla valmiina olevia alkioita lisäyspaikasta alkaen siirretään yhdellä askeleella eteenpäin:

    \n \n \n \n \n \n \"Alkion\n \n \n

    Esimerkiksi

    luvut = [1, 2, 3, 4, 5, 6]\nluvut.insert(0, 10)\nprint(luvut)\nluvut.insert(2, 20)\nprint(luvut)

    [10, 1, 2, 3, 4, 5, 6]\n[10, 1, 20, 2, 3, 4, 5, 6]

    Alkioita voidaan poistaa listasta kahden eri lähtökohdan mukaisesti:

      \n
    • Jos tiedetään, missä poistettava alkio sijaitsee, voidaan käyttää metodia pop.
    • \n
    • Jos tiedetään, mikä poistettavan alkion arvo on, käytetään metodia remove.
    • \n

    Metodille pop annetaan poistettavan alkion indeksi. Esimerkiksi seuraava koodi poistaa listalta alkiot kohdista 2 ja 3. Huomaa, että alkioiden indeksit muuttuvat poiston jälkeen.

    lista = [1, 2, 3, 4, 5, 6]\n\nlista.pop(2)\nprint(lista)\nlista.pop(3)\nprint(lista)

    [1, 2, 4, 5, 6]\n[1, 2, 4, 6]

    Metodi pop myös palauttaa poistetun listan alkion:

    lista = [4, 2, 7, 2, 5]\n\nluku = lista.pop(2)\nprint(luku)\nprint(lista)

    7\n[4, 2, 2, 5]

    Metodille remove annetaan indeksin sijasta poistettavan alkion arvo. Esimerkiksi:

    lista = [1, 2, 3, 4, 5, 6]\n\nlista.remove(2)\nprint(lista)\nlista.remove(5)\nprint(lista)

    [1, 3, 4, 5, 6]\n[1, 3, 4, 6]

    Huomaa, että metodi poistaa listalta ensimmäisen alkion, jolla on annettu arvo:

    lista = [1, 2, 1, 2]\n\nlista.remove(1)\nprint(lista)\nlista.remove(1)\nprint(lista)

    [2, 1, 2]\n[2, 2]

    Tee ohjelma, joka pyytää käyttäjää valitsemaan alkion lisäyksen tai poiston. Sekä lisäys että poisto tehdään listan loppuun. Lisättävän alkion arvo on aina yhtä suurempi kuin listan viimeinen alkio (tai 1, jos listassa ei ole alkioita).

    Joka operaation välissä lista tulostetaan. Katso esimerkkiä seuraavasta tulosteesta:

    Lista on nyt []\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1]\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: p\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: x\nMoi!

    Voit olettaa, että listalta ei yritetä poistaa alkioita, jos lista on tyhjä.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Jos listalla ei ole poistettavaa alkiota, seuraa virhe. Merkkijonoista tutulla tavalla alkion olemassaolon listalla voi testata in-operaattorin avulla:

    lista = [1, 3, 4]\n\nif 1 in lista:\n    print(\"Listalla on alkio 1\")\n\nif 2 in lista:\n    print(\"listalla on alkio 2\")

    Listalla on alkio 1

    Tee ohjelma, joka kyselee käyttäjältä sanoja. Kun käyttäjä syöttää jonkin sanan kahdesti, ohjelma tulostaa eri sanojen määrän ja lopettaa toimintansa.

    sana: olipa\nsana: kerran\nsana: kauan\nsana: sitten\nsana: kerran\nAnnoit 4 eri sanaa

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Listan järjestäminen

    Listan alkiot voidaan järjestää pienimmästä suurimpaan metodin sort avulla:

    lista = [2,5,1,2,4]\nlista.sort()\nprint(lista)

    [1, 2, 2, 4, 5]

    Toinen tapa on käyttää funktiota sorted, joka palauttaa järjestetyn listan:

    lista = [2,5,1,2,4]\nprint(sorted(lista))

    [1, 2, 2, 4, 5]

    Huomaa ero näissä tavoissa: sort muuttaa listan sisällön järjestetyksi, kun taas sorted luo uuden järjestetyn listan. Jälkimmäisessä tavassa voimme säilyttää myös listan alkuperäisen järjestyksen:

    alkuperainen = [2, 5, 1, 2, 4]\njarjestetty = sorted(alkuperainen)\nprint(alkuperainen)\nprint(jarjestetty)

    [2, 5, 1, 2, 4]\n[1, 2, 2, 4, 5]

    Tee ohjelma, joka kysyy käyttäjältä lukuja ja lisää niitä listaan. Lista tulostetaan jokaisen luvun lisäyksen jälkeen kahdella eri tavalla:

      \n
    • alkiot lisäysjärjestyksessä ja
    • \n
    • järjestettynä pienimmästä suurimpaan alkioon
    • \n

    Ohjelman suoritus päättyy, kun käyttäjä syöttää luvun 0.

    Esimerkkisuoritus:

    Anna luku: 3\nLista: [3]\nJärjestettynä: [3]\nAnna luku: 1\nLista: [3, 1]\nJärjestettynä: [1, 3]\nAnna luku: 9\nLista: [3, 1, 9]\nJärjestettynä: [1, 3, 9]\nAnna luku: 5\nLista: [3, 1, 9, 5]\nJärjestettynä: [1, 3, 5, 9]\nAnna luku: 0\nMoi!

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Suurin, pienin ja summa

    Funktiot max ja min antavat listan suurimman ja pienimmän alkion.\nFunktio sum puolestaan laskee listan alkioiden summan.

    lista = [5, 2, 3, 1, 4]\n\nsuurin = max(lista)\npienin = min(lista)\nsumma = sum(lista)\n\nprint(\"Pienin:\", pienin)\nprint(\"Suurin:\", suurin)\nprint(\"Summa:\", summa)

    Pienin: 1\nSuurin: 5\nSumma: 15

    Metodit vs. funktiot

    Pythonissa on ehkä hieman hämmentävästi käytössä kaksi eri tapaa listojen käsittelyyn.

    Suurin osa käsittelystä tapahtuu metodien avulla. Esimerkiksi append ja sort ovat metodeja, joita kutsutaan listamuuttujan kautta pistenotaatiolla:

    lista = []\n\n# metodikutsuja\nlista.append(3)\nlista.append(1)\nlista.append(7)\nlista.append(2)\n\n# metodikutsu\nlista.sort()

    Sen sijaan esimerkiksi max, min, len ja sorted ovat funktioita, joille lista annetaan parametrina:

    lista = [3, 2, 7, 1]\n\n# funktiokutsuissa lista on parametrina\nsuurin = max(lista)\npienin = min(lista)\npituus = len(lista)\n\nprint(\"Pienin:\", pienin)\nprint(\"Suurin:\", suurin)\nprint(\"Listan pituus:\", pituus)\n\n# funktiokutsu: lista on parametrina, järjestetty lista paluuarvona\njarjestyksessa = sorted(lista)\nprint(jarjestyksessa)

    Pienin: 1\nSuurin: 7\nListan pituus: 4\n[1, 2, 3, 7]

    Lista funktion parametrina ja paluuarvona

    Itse tekemiemme funktioiden parametreina voi olla myös listoja. Seuraavassa on funktio, joka selvittää parametrina listan mediaanin eli keskimmäisen alkion järjestetyssä listassa:

    def mediaani(lista: list):\n    jarjestetty = sorted(lista)\n    keskikohta = len(jarjestetty) // 2\n    return jarjestetty[keskikohta]

    Funktio selvittää mediaanin tekemällä parametrinaan saamasta listasta järjestetyn version ja palauttamalla sen keskimmäisen alkion. Huomaa, että käytössä on kokonaislukujakolasku //, koska listan indeksin tulee olla kokonaisluku.

    Seuraavassa on esimerkki funktion käytöstä:

    kengannumerot = [45, 44, 36, 39, 40]\nprint(\"Kengännumeroiden mediaani on\", mediaani(kengannumerot))\n\niat = [1, 56, 34, 22, 5, 77, 5]\nprint(\"Ikien mediaani on\", mediaani(iat))

    Kengännumeroiden mediaani on 40\nIkien mediaani on 22

    Funktio voi myös palauttaa listan. Seuraavassa on funktio, joka palauttaa listan käyttäjän syöttämiä kokonaislukuja:

    def lue_luvut():\n    luvut = []\n    while True:\n        syote = input(\"Anna luku (tyhjä lopettaa): \")\n        if len(syote) == 0:\n            break\n        luvut.append(int(syote))\n    return luvut

    Funktio käyttää lista-tyyppistä apumuuttujaa luvut, johon se lisää kaikki käyttäjän antamat luvut. Silmukan jälkeen funktio palauttaa return-komennon avulla listan luvut.

    Funktiota käytetään seuraavasti:

    luvut = lue_luvut()\n\nprint(\"Suurin luku on\", max(luvut))\nprint(\"Lukujen mediaani on\", mediaani(luvut))

    Anna luku (tyhjä lopettaa): 5\nAnna luku (tyhjä lopettaa): -22\nAnna luku (tyhjä lopettaa): 4\nAnna luku (tyhjä lopettaa): 35\nAnna luku (tyhjä lopettaa): 1\nAnna luku (tyhjä lopettaa):\nSuurin luku on 35\nLukujen mediaani on 4

    Pieni esimerkkiohjelmamme demonstroi jo yhtä funktioiden tärkeimmistä käyttötarkoituksista: niiden avulla ohjelma saadaan jaettua loogisiin selkeästi ymmärrettäviin kokonaisuuksiin.

    Sinänsä sama ohjelma olisi voitu tehdä myös ilman funktiota:

    luvut = []\nwhile True:\n    syote = input(\"Anna luku (tyhjä lopettaa): \")\n    if len(syote) == 0:\n        break\n    luvut.append(int(syote))\n\njarjestetty = sorted(luvut)\nkeskikohta = len(jarjestetty) // 2\nmediaani = jarjestetty[keskikohta]\n\nprint(\"Suurin luku on\", max(luvut))\nprint(\"Lukujen mediaani on\", mediaani)

    Nyt kuitenkin ohjelman logiikan seuraaminen on vaikeampaa, koska ei ole enää yhtä selvää, mitkä komennot liittyvät minkäkin kokonaisuuden (syötteiden lukeminen, mediaanin laskeminen, ohjelman muu toiminta) toteuttamiseen.

    Jako funktioiksi siis selkeyttää koodin rakennetta ja tuo esille loogisia kokonaisuuksia. Tämän ansiosta on myös helpompaa varmistaa, että ohjelma toimii halutulla tavalla, koska voimme testata erikseen tiettyä funktiota (esim. toimiiko funktio mediaani oikein).

    Ohjelman rakenteen loogisen jakamisen lisäksi funktioiden toinen käyttötarkoitus on koodin uusiokäyttö. Jos ohjelmassa on tarvetta tehdä samankaltainen operaatio useaan kertaan, kannattaa sitä varten luoda oma selkeästi nimetty funktio:

    print(\"Kengännumerot:\")\nkengat = lue_luvut()\n\nprint(\"Painot:\")\npainot = lue_luvut()\n\nprint(\"Pituudet:\")\npituudet = lue_luvut()

    Tee funktio pituus, joka palauttaa parametrinaan saamansa listan pituuden.

    lista = [1, 2, 3, 4, 5]\nvastaus = pituus(lista)\nprint(\"vastaus\", vastaus)\n\n# huomaa, että voit kutsua funktiota myös antamalla listan suoraan funktion parametriksi\nvastaus = pituus([1, 1, 1, 1])\nprint(\"vastaus\", vastaus)

    vastaus 5\nvastaus 4

    Tee funktio keskiarvo, joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan alkioiden keskiarvon.

    lista = [1, 2, 3, 4, 5]\nvastaus = keskiarvo(lista)\nprint(\"vastaus\", vastaus)

    vastaus 3.0

    Tee funktio vaihteluvali, joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan vaihteluvälin (eli suurimman ja pienimmän alkion erotuksen).

    lista = [1, 2, 3, 4, 5]\nvastaus = vaihteluvali(lista)\nprint(\"vastaus\", vastaus)

    vastaus 4

    Lisää listan käsittelystä

    Pythonissa on paljon muitakin mahdollisuuksia listan käsittelyyn. Voit tutustua niihin Pythonin dokumentaation kautta.

    ","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/3-listat.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä lista tarkoittaa ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat viitata listan yksittäisiin alkioihin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat lisätä ja poistaa listan alkioita"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää valmiita funktioita ja metodeita listojen käsittelyyn"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän asti olemme tallentaneet ohjelmissa käytettävää tietoa muuttujien avulla. Yksittäisillä muuttujilla on kuitenkin rajoituksensa. Jos ohjelman käsittelemä tiedon määrä on vaihteleva ja saattaa olla suuri, olisi vaivalloista määritellä jokaiselle arvolle erillinen muuttuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lista"}]},{"type":"text","value":" on kokoelma tietoa, johon viitataan yhteisen nimen kautta. Listan sisältö kirjoitetaan hakasulkeiden sisään, ja jokaista listalla olevaa arvoa kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"alkioksi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi luo uuden tyhjän listan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi puolestaan luo listan, jossa on valmiina viisi alkiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"listan-alkioihin-viittaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Listan alkioihin viittaaminen"},{"type":"element","tagName":"a","properties":{"href":"#listan-alkioihin-viittaaminen","ariaLabel":"listan alkioihin viittaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkiot on indeksoitu samalla tavalla kuin merkkijonon yksittäiset merkit. Tässäkin tapauksessa indeksointi alkaa nollasta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 581px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/0c718cff85e5c83bbec15a7ce1a29896/92d15/4_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 26.08695652173913%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVQY031QWQqEMBTr/a/jWQQFFxRBtIL7vkQS6DDzM4WQvjRN36tZlgVt22IcR5zniXmesW0b1nUV9n3HcRwfjfW/Zb4LmnnpeR7c9y12e4LL6eTrurRnI87zE1jXNZIkkYkd0UiwQz7GADI19zhDOCVr3jMccZomgWMT1lqZhmEQ86zve32Hq93X0N91nYJ934cpyxJFUUhsmkZh7DLLMoRhiDRNEUURgiCQTsRxLM7zXGcMqqoKnufhBUAvgMcmbGmAAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0c718cff85e5c83bbec15a7ce1a29896/a0b58/4_2_1.webp 230w","/static/0c718cff85e5c83bbec15a7ce1a29896/bc10c/4_2_1.webp 460w","/static/0c718cff85e5c83bbec15a7ce1a29896/39daa/4_2_1.webp 581w"],"sizes":"(max-width: 581px) 100vw, 581px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0c718cff85e5c83bbec15a7ce1a29896/81c8e/4_2_1.png 230w","/static/0c718cff85e5c83bbec15a7ce1a29896/08a84/4_2_1.png 460w","/static/0c718cff85e5c83bbec15a7ce1a29896/92d15/4_2_1.png 581w"],"sizes":"(max-width: 581px) 100vw, 581px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/0c718cff85e5c83bbec15a7ce1a29896/92d15/4_2_1.png","alt":"Lista indeksoidaan nollasta alkaen","title":"Lista indeksoidaan nollasta alkaen","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksittäiseen listan alkioon voidaan viitata samalla tavalla kuin merkkijonon yksittäisiin merkkeihin hakasulkujen avulla. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kahden ekan summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"7\n2\n5\nKahden ekan summa: 9"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme tulostaa listan koko sisällön näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[7, 2, 2, 5, 2]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkioita voidaan myös muuttaa. Alkion arvon muuttaminen tapahtuu sijoittamalla uusi arvo vanhan paikalle – siis samalla tavalla kuin muuttujia käytettäessä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[7, 2, 2, 5, 2]\n[7, 3, 2, 5, 2]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" antaa listan alkioiden määrän:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkioiden arvojen muutokset","tmcname":"osa04-07a_alkioiden_arvojen_muutokset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka alustaa listan jossa on arvot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[1, 2, 3, 4, 5]"}]},{"type":"text","value":". Tämän jälkeen ohjelma kysyy käyttäjältä alkion indeksin ja uuden arvon, vaihtaa kyseisen alkion arvon ja tulostaa listan uudelleen. Ohjelman suoritus päättyy, jos käyttäjä antaa alkion indeksiksi -1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nAnna arvo: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n[10, 2, 3, 4, 5]\nAnna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna arvo: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"250"}]},{"type":"text","value":"\n[10, 2, 250, 4, 5]\nAnna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna arvo: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-45"}]},{"type":"text","value":"\n[10, 2, 250, 4, -45]\nAnna indeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"alkioiden-lisaaminen-ja-poistaminen","style":"position:relative;"},"children":[{"type":"text","value":"Alkioiden lisääminen ja poistaminen"},{"type":"element","tagName":"a","properties":{"href":"#alkioiden-lisaaminen-ja-poistaminen","ariaLabel":"alkioiden lisaaminen ja poistaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan loppuun voidaan lisätä uusia alkioita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"append"}]},{"type":"text","value":"-metodin avulla. Metodia käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[5, 10, 3]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä ohjelman käytössä on kaksi erillistä listaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkengannumerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"37"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"28"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luvut:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kengännumerot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäys menee siis siihen listaan, mihin metodikutsu kohdistetaan:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luvut:\n[5, 10, 3]\nKengännumerot:\n[37, 44, 40, 28]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkioiden lisäys listaan","tmcname":"osa04-07b_alkoiden_lisays_listaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä ensin lukujen määrän. Sen jälkeen ohjelma pyytää käyttäjää syöttämään annetun määrän lukuja yksitellen ja lisää ne listaan samassa järjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopuksi lista tulostetaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuinka monta lukua: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nAnna luku 1: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nAnna luku 2: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"250"}]},{"type":"text","value":"\nAnna luku 3: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"34"}]},{"type":"text","value":"\n[10, 250, 34]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli halutaan lisätä alkio johonkin muualle kuin listan loppuun, voidaan käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"insert"}]},{"type":"text","value":"-metodia. Metodi lisää alkion halutun indeksin paikalle. Kaikkia listalla valmiina olevia alkioita lisäyspaikasta alkaen siirretään yhdellä askeleella eteenpäin:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 632px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/fbc699b555a562e011de8d156d23ff29/084e2/4_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 65.21739130434783%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTklEQVQ4y62S3W7CMAyF+xZ75d3spfYUu0JCSAUEbZP0v5Qe9AU5Q91Au5glK47jHNvHzqqq0n6/V9M0CiGorutkd12nYRjUtm30YyPLsvyqSKZ/FECfAvZ9HwMul4umaUpqd6pFuaOpwnmeo+N6vcpsAqGC1mnVex/VKLHTOZf8RkcGf9vtVkVR6Hg8RjvPc53P5+gDmI92GiAdlGUZFR98P+WQasdxjMpAAHtUQNb3BMgHMnOS2bJbC4Dzxgc7D4dDjDEfSvIIaATbycOa6LVABW2S7M9TXu/bmhIGRmdryV4t6bc9axg6OXefNmDwttlsfmzByz1E5nnRNEltO6tp6sSbrY7xijKgyKENwYKtghBaeZ/L+w+F8CnvR4Vwr4Q4qnrcS3wZO8fuAXA6nbTb7eIUq6qUc71C+FIIb3LuXWUpeV+kRTZghoRNcTeEg/JdQzeckwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fbc699b555a562e011de8d156d23ff29/a0b58/4_2_2.webp 230w","/static/fbc699b555a562e011de8d156d23ff29/bc10c/4_2_2.webp 460w","/static/fbc699b555a562e011de8d156d23ff29/59680/4_2_2.webp 632w"],"sizes":"(max-width: 632px) 100vw, 632px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/fbc699b555a562e011de8d156d23ff29/81c8e/4_2_2.png 230w","/static/fbc699b555a562e011de8d156d23ff29/08a84/4_2_2.png 460w","/static/fbc699b555a562e011de8d156d23ff29/084e2/4_2_2.png 632w"],"sizes":"(max-width: 632px) 100vw, 632px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/fbc699b555a562e011de8d156d23ff29/084e2/4_2_2.png","alt":"Alkion lisäys listaan","title":"Alkion lisäys listaan","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"insert"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"insert"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[10, 1, 2, 3, 4, 5, 6]\n[10, 1, 20, 2, 3, 4, 5, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alkioita voidaan poistaa listasta kahden eri lähtökohdan mukaisesti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos tiedetään, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"missä"}]},{"type":"text","value":" poistettava alkio sijaitsee, voidaan käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos tiedetään, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mikä"}]},{"type":"text","value":" poistettavan alkion arvo on, käytetään metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"remove"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" annetaan poistettavan alkion indeksi. Esimerkiksi seuraava koodi poistaa listalta alkiot kohdista 2 ja 3. Huomaa, että alkioiden indeksit muuttuvat poiston jälkeen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 4, 5, 6]\n[1, 2, 4, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" poistetun listan alkion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"7\n[4, 2, 2, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"remove"}]},{"type":"text","value":" annetaan indeksin sijasta poistettavan alkion arvo. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 3, 4, 5, 6]\n[1, 3, 4, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodi poistaa listalta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ensimmäisen"}]},{"type":"text","value":" alkion, jolla on annettu arvo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 1, 2]\n[2, 2]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lisäys ja poisto","tmcname":"osa04-07c_lisays_ja_poisto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää valitsemaan alkion lisäyksen tai poiston. Sekä lisäys että poisto tehdään listan loppuun. Lisättävän alkion arvo on aina yhtä suurempi kuin listan viimeinen alkio (tai 1, jos listassa ei ole alkioita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joka operaation välissä lista tulostetaan. Katso esimerkkiä seuraavasta tulosteesta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lista on nyt []\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"p"}]},{"type":"text","value":"\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"l"}]},{"type":"text","value":"\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"x"}]},{"type":"text","value":"\nMoi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että listalta ei yritetä poistaa alkioita, jos lista on tyhjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos listalla ei ole poistettavaa alkiota, seuraa virhe. Merkkijonoista tutulla tavalla alkion olemassaolon listalla voi testata "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":"-operaattorin avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Listalla on alkio 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"listalla on alkio 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listalla on alkio 1"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sama sana kahdesti","tmcname":"osa04-08_sama_sana_kahdesti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kyselee käyttäjältä sanoja. Kun käyttäjä syöttää jonkin sanan kahdesti, ohjelma tulostaa eri sanojen määrän ja lopettaa toimintansa."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"olipa"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kerran"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kauan"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"sitten"}]},{"type":"text","value":"\nsana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kerran"}]},{"type":"text","value":"\nAnnoit 4 eri sanaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"listan-jarjestaminen","style":"position:relative;"},"children":[{"type":"text","value":"Listan järjestäminen"},{"type":"element","tagName":"a","properties":{"href":"#listan-jarjestaminen","ariaLabel":"listan jarjestaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkiot voidaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"järjestää"}]},{"type":"text","value":" pienimmästä suurimpaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 2, 4, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa on käyttää funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":", joka "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" järjestetyn listan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 2, 4, 5]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa ero näissä tavoissa: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" muuttaa listan sisällön järjestetyksi, kun taas "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" luo uuden järjestetyn listan. Jälkimmäisessä tavassa voimme säilyttää myös listan alkuperäisen järjestyksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"alkuperainen "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\njarjestetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkuperainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkuperainen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 5, 1, 2, 4]\n[1, 2, 2, 4, 5]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lista kahdesti","tmcname":"osa04-08b_lista_kahdesti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjältä lukuja ja lisää niitä listaan. Lista tulostetaan jokaisen luvun lisäyksen jälkeen kahdella eri tavalla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"alkiot lisäysjärjestyksessä ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"järjestettynä pienimmästä suurimpaan alkioon"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus päättyy, kun käyttäjä syöttää luvun 0."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nLista: [3]\nJärjestettynä: [3]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nLista: [3, 1]\nJärjestettynä: [1, 3]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nLista: [3, 1, 9]\nJärjestettynä: [1, 3, 9]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nLista: [3, 1, 9, 5]\nJärjestettynä: [1, 3, 5, 9]\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nMoi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"suurin-pienin-ja-summa","style":"position:relative;"},"children":[{"type":"text","value":"Suurin, pienin ja summa"},{"type":"element","tagName":"a","properties":{"href":"#suurin-pienin-ja-summa","ariaLabel":"suurin pienin ja summa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"max"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"min"}]},{"type":"text","value":" antavat listan suurimman ja pienimmän alkion.\nFunktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum"}]},{"type":"text","value":" puolestaan laskee listan alkioiden summan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsuurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npienin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pienin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pienin: 1\nSuurin: 5\nSumma: 15"}]}]},{"type":"element","tagName":"h2","properties":{"id":"metodit-vs-funktiot","style":"position:relative;"},"children":[{"type":"text","value":"Metodit vs. funktiot"},{"type":"element","tagName":"a","properties":{"href":"#metodit-vs-funktiot","ariaLabel":"metodit vs funktiot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on ehkä hieman hämmentävästi käytössä kaksi eri tapaa listojen käsittelyyn."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suurin osa käsittelystä tapahtuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodien"}]},{"type":"text","value":" avulla. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"append"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":" ovat metodeja, joita kutsutaan listamuuttujan kautta pistenotaatiolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodikutsuja"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# metodikutsu"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sen sijaan esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"max"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"min"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" ovat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"funktioita"}]},{"type":"text","value":", joille lista annetaan parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktiokutsuissa lista on parametrina"}]},{"type":"text","value":"\nsuurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npienin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pienin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Listan pituus:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktiokutsu: lista on parametrina, järjestetty lista paluuarvona"}]},{"type":"text","value":"\njarjestyksessa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestyksessa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pienin: 1\nSuurin: 7\nListan pituus: 4\n[1, 2, 3, 7]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lista-funktion-parametrina-ja-paluuarvona","style":"position:relative;"},"children":[{"type":"text","value":"Lista funktion parametrina ja paluuarvona"},{"type":"element","tagName":"a","properties":{"href":"#lista-funktion-parametrina-ja-paluuarvona","ariaLabel":"lista funktion parametrina ja paluuarvona permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse tekemiemme funktioiden parametreina voi olla myös listoja. Seuraavassa on funktio, joka selvittää parametrina listan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mediaanin"}]},{"type":"text","value":" eli keskimmäisen alkion järjestetyssä listassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"mediaani"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n jarjestetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n keskikohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keskikohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio selvittää mediaanin tekemällä parametrinaan saamasta listasta järjestetyn version ja palauttamalla sen keskimmäisen alkion. Huomaa, että käytössä on kokonaislukujakolasku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":", koska listan indeksin tulee olla kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kengannumerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"36"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kengännumeroiden mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kengannumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\niat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"56"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"34"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"77"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ikien mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"iat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kengännumeroiden mediaani on 40\nIkien mediaani on 22"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio voi myös palauttaa listan. Seuraavassa on funktio, joka palauttaa listan käyttäjän syöttämiä kokonaislukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_luvut"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku (tyhjä lopettaa): \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio käyttää lista-tyyppistä apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":", johon se lisää kaikki käyttäjän antamat luvut. Silmukan jälkeen funktio palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komennon avulla listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin luku on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-22"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"35"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna luku (tyhjä lopettaa):\nSuurin luku on 35\nLukujen mediaani on 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pieni esimerkkiohjelmamme demonstroi jo yhtä funktioiden tärkeimmistä käyttötarkoituksista: niiden avulla ohjelma saadaan jaettua loogisiin selkeästi ymmärrettäviin kokonaisuuksiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sinänsä sama ohjelma olisi voitu tehdä myös ilman funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku (tyhjä lopettaa): \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\njarjestetty "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkeskikohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"//"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nmediaani "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" jarjestetty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"keskikohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suurin luku on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen mediaani on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" mediaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kuitenkin ohjelman logiikan seuraaminen on vaikeampaa, koska ei ole enää yhtä selvää, mitkä komennot liittyvät minkäkin kokonaisuuden (syötteiden lukeminen, mediaanin laskeminen, ohjelman muu toiminta) toteuttamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jako funktioiksi siis selkeyttää koodin rakennetta ja tuo esille loogisia kokonaisuuksia. Tämän ansiosta on myös helpompaa varmistaa, että ohjelma toimii halutulla tavalla, koska voimme testata erikseen tiettyä funktiota (esim. toimiiko funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"mediaani"}]},{"type":"text","value":" oikein)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman rakenteen loogisen jakamisen lisäksi funktioiden toinen käyttötarkoitus on koodin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"uusiokäyttö"}]},{"type":"text","value":". Jos ohjelmassa on tarvetta tehdä samankaltainen operaatio useaan kertaan, kannattaa sitä varten luoda oma selkeästi nimetty funktio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kengännumerot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkengat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Painot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npainot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pituudet:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npituudet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan pituus","tmcname":"osa04-09_listan_pituus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":", joka palauttaa parametrinaan saamansa listan pituuden."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# huomaa, että voit kutsua funktiota myös antamalla listan suoraan funktion parametriksi"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 5\nvastaus 4"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Keskiarvo","tmcname":"osa04-10_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":", joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan alkioiden keskiarvon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 3.0"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vaihteluväli","tmcname":"osa04-11_vaihteluvali"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaihteluvali"}]},{"type":"text","value":", joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan vaihteluvälin (eli suurimman ja pienimmän alkion erotuksen)."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vaihteluvali"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 4"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-listan-kasittelysta","style":"position:relative;"},"children":[{"type":"text","value":"Lisää listan käsittelystä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-listan-kasittelysta","ariaLabel":"lisaa listan kasittelysta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on paljon muitakin mahdollisuuksia listan käsittelyyn. Voit tutustua niihin Pythonin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/tutorial/datastructures.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"dokumentaation"}]},{"type":"text","value":" kautta."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä lista tarkoittaa ohjelmoinnissa
    • \n
    • Osaat viitata listan yksittäisiin alkioihin
    • \n
    • Osaat lisätä ja poistaa listan alkioita
    • \n
    • Osaat hyödyntää valmiita funktioita ja metodeita listojen käsittelyyn
    • \n

    Tähän asti olemme tallentaneet ohjelmissa käytettävää tietoa muuttujien avulla. Yksittäisillä muuttujilla on kuitenkin rajoituksensa. Jos ohjelman käsittelemä tiedon määrä on vaihteleva ja saattaa olla suuri, olisi vaivalloista määritellä jokaiselle arvolle erillinen muuttuja.

    Lista on kokoelma tietoa, johon viitataan yhteisen nimen kautta. Listan sisältö kirjoitetaan hakasulkeiden sisään, ja jokaista listalla olevaa arvoa kutsutaan alkioksi.

    Esimerkiksi seuraava koodi luo uuden tyhjän listan:

    lista = []

    Seuraava koodi puolestaan luo listan, jossa on valmiina viisi alkiota:

    lista = [7, 2, 2, 5, 2]

    Listan alkioihin viittaaminen

    Listan alkiot on indeksoitu samalla tavalla kuin merkkijonon yksittäiset merkit. Tässäkin tapauksessa indeksointi alkaa nollasta:

    \n \n \n \n \n \n \"Lista\n \n \n

    Yksittäiseen listan alkioon voidaan viitata samalla tavalla kuin merkkijonon yksittäisiin merkkeihin hakasulkujen avulla. Esimerkiksi:

    lista = [7, 2, 2, 5, 2]\n\nprint(lista[0])\nprint(lista[1])\nprint(lista[3])\n\nprint(\"Kahden ekan summa:\", lista[0] + lista[1])

    7\n2\n5\nKahden ekan summa: 9

    Voimme tulostaa listan koko sisällön näin:

    lista = [7, 2, 2, 5, 2]\nprint(lista)

    [7, 2, 2, 5, 2]

    Listan alkioita voidaan myös muuttaa. Alkion arvon muuttaminen tapahtuu sijoittamalla uusi arvo vanhan paikalle – siis samalla tavalla kuin muuttujia käytettäessä:

    lista = [7, 2, 2, 5, 2]\nprint(lista)\nlista[1] = 3\nprint(lista)

    [7, 2, 2, 5, 2]\n[7, 3, 2, 5, 2]

    Funktio len antaa listan alkioiden määrän:

    lista = [7, 2, 2, 5, 2]\nprint(len(lista))

    5

    Tee ohjelma, joka alustaa listan jossa on arvot [1, 2, 3, 4, 5]. Tämän jälkeen ohjelma kysyy käyttäjältä alkion indeksin ja uuden arvon, vaihtaa kyseisen alkion arvon ja tulostaa listan uudelleen. Ohjelman suoritus päättyy, jos käyttäjä antaa alkion indeksiksi -1.

    Esimerkkisuoritus:

    Anna indeksi: 0\nAnna arvo: 10\n[10, 2, 3, 4, 5]\nAnna indeksi: 2\nAnna arvo: 250\n[10, 2, 250, 4, 5]\nAnna indeksi: 4\nAnna arvo: -45\n[10, 2, 250, 4, -45]\nAnna indeksi: -1

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Alkioiden lisääminen ja poistaminen

    Listan loppuun voidaan lisätä uusia alkioita append-metodin avulla. Metodia käytetään seuraavasti:

    luvut = []\nluvut.append(5)\nluvut.append(10)\nluvut.append(3)\nprint(luvut)

    [5, 10, 3]

    Seuraavassa esimerkissä ohjelman käytössä on kaksi erillistä listaa:

    luvut = []\nkengannumerot = []\n\nluvut.append(5)\nluvut.append(10)\nluvut.append(3)\n\nkengannumerot.append(37)\nkengannumerot.append(44)\nkengannumerot.append(40)\nkengannumerot.append(28)\n\nprint(\"Luvut:\")\nprint(luvut)\n\nprint(\"Kengännumerot:\")\nprint(kengannumerot)

    Lisäys menee siis siihen listaan, mihin metodikutsu kohdistetaan:

    Luvut:\n[5, 10, 3]\nKengännumerot:\n[37, 44, 40, 28]

    Tee ohjelma, joka kysyy käyttäjältä ensin lukujen määrän. Sen jälkeen ohjelma pyytää käyttäjää syöttämään annetun määrän lukuja yksitellen ja lisää ne listaan samassa järjestyksessä.

    Lopuksi lista tulostetaan.

    Esimerkkisuoritus:

    Kuinka monta lukua: 3\nAnna luku 1: 10\nAnna luku 2: 250\nAnna luku 3: 34\n[10, 250, 34]

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Mikäli halutaan lisätä alkio johonkin muualle kuin listan loppuun, voidaan käyttää insert-metodia. Metodi lisää alkion halutun indeksin paikalle. Kaikkia listalla valmiina olevia alkioita lisäyspaikasta alkaen siirretään yhdellä askeleella eteenpäin:

    \n \n \n \n \n \n \"Alkion\n \n \n

    Esimerkiksi

    luvut = [1, 2, 3, 4, 5, 6]\nluvut.insert(0, 10)\nprint(luvut)\nluvut.insert(2, 20)\nprint(luvut)

    [10, 1, 2, 3, 4, 5, 6]\n[10, 1, 20, 2, 3, 4, 5, 6]

    Alkioita voidaan poistaa listasta kahden eri lähtökohdan mukaisesti:

      \n
    • Jos tiedetään, missä poistettava alkio sijaitsee, voidaan käyttää metodia pop.
    • \n
    • Jos tiedetään, mikä poistettavan alkion arvo on, käytetään metodia remove.
    • \n

    Metodille pop annetaan poistettavan alkion indeksi. Esimerkiksi seuraava koodi poistaa listalta alkiot kohdista 2 ja 3. Huomaa, että alkioiden indeksit muuttuvat poiston jälkeen.

    lista = [1, 2, 3, 4, 5, 6]\n\nlista.pop(2)\nprint(lista)\nlista.pop(3)\nprint(lista)

    [1, 2, 4, 5, 6]\n[1, 2, 4, 6]

    Metodi pop myös palauttaa poistetun listan alkion:

    lista = [4, 2, 7, 2, 5]\n\nluku = lista.pop(2)\nprint(luku)\nprint(lista)

    7\n[4, 2, 2, 5]

    Metodille remove annetaan indeksin sijasta poistettavan alkion arvo. Esimerkiksi:

    lista = [1, 2, 3, 4, 5, 6]\n\nlista.remove(2)\nprint(lista)\nlista.remove(5)\nprint(lista)

    [1, 3, 4, 5, 6]\n[1, 3, 4, 6]

    Huomaa, että metodi poistaa listalta ensimmäisen alkion, jolla on annettu arvo:

    lista = [1, 2, 1, 2]\n\nlista.remove(1)\nprint(lista)\nlista.remove(1)\nprint(lista)

    [2, 1, 2]\n[2, 2]

    Tee ohjelma, joka pyytää käyttäjää valitsemaan alkion lisäyksen tai poiston. Sekä lisäys että poisto tehdään listan loppuun. Lisättävän alkion arvo on aina yhtä suurempi kuin listan viimeinen alkio (tai 1, jos listassa ei ole alkioita).

    Joka operaation välissä lista tulostetaan. Katso esimerkkiä seuraavasta tulosteesta:

    Lista on nyt []\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1]\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: p\nLista on nyt [1, 2]\n(l)isää, (p)oista vai e(x)it: l\nLista on nyt [1, 2, 3]\n(l)isää, (p)oista vai e(x)it: x\nMoi!

    Voit olettaa, että listalta ei yritetä poistaa alkioita, jos lista on tyhjä.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Jos listalla ei ole poistettavaa alkiota, seuraa virhe. Merkkijonoista tutulla tavalla alkion olemassaolon listalla voi testata in-operaattorin avulla:

    lista = [1, 3, 4]\n\nif 1 in lista:\n    print(\"Listalla on alkio 1\")\n\nif 2 in lista:\n    print(\"listalla on alkio 2\")

    Listalla on alkio 1

    Tee ohjelma, joka kyselee käyttäjältä sanoja. Kun käyttäjä syöttää jonkin sanan kahdesti, ohjelma tulostaa eri sanojen määrän ja lopettaa toimintansa.

    sana: olipa\nsana: kerran\nsana: kauan\nsana: sitten\nsana: kerran\nAnnoit 4 eri sanaa

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Listan järjestäminen

    Listan alkiot voidaan järjestää pienimmästä suurimpaan metodin sort avulla:

    lista = [2,5,1,2,4]\nlista.sort()\nprint(lista)

    [1, 2, 2, 4, 5]

    Toinen tapa on käyttää funktiota sorted, joka palauttaa järjestetyn listan:

    lista = [2,5,1,2,4]\nprint(sorted(lista))

    [1, 2, 2, 4, 5]

    Huomaa ero näissä tavoissa: sort muuttaa listan sisällön järjestetyksi, kun taas sorted luo uuden järjestetyn listan. Jälkimmäisessä tavassa voimme säilyttää myös listan alkuperäisen järjestyksen:

    alkuperainen = [2, 5, 1, 2, 4]\njarjestetty = sorted(alkuperainen)\nprint(alkuperainen)\nprint(jarjestetty)

    [2, 5, 1, 2, 4]\n[1, 2, 2, 4, 5]

    Tee ohjelma, joka kysyy käyttäjältä lukuja ja lisää niitä listaan. Lista tulostetaan jokaisen luvun lisäyksen jälkeen kahdella eri tavalla:

      \n
    • alkiot lisäysjärjestyksessä ja
    • \n
    • järjestettynä pienimmästä suurimpaan alkioon
    • \n

    Ohjelman suoritus päättyy, kun käyttäjä syöttää luvun 0.

    Esimerkkisuoritus:

    Anna luku: 3\nLista: [3]\nJärjestettynä: [3]\nAnna luku: 1\nLista: [3, 1]\nJärjestettynä: [1, 3]\nAnna luku: 9\nLista: [3, 1, 9]\nJärjestettynä: [1, 3, 9]\nAnna luku: 5\nLista: [3, 1, 9, 5]\nJärjestettynä: [1, 3, 5, 9]\nAnna luku: 0\nMoi!

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Suurin, pienin ja summa

    Funktiot max ja min antavat listan suurimman ja pienimmän alkion.\nFunktio sum puolestaan laskee listan alkioiden summan.

    lista = [5, 2, 3, 1, 4]\n\nsuurin = max(lista)\npienin = min(lista)\nsumma = sum(lista)\n\nprint(\"Pienin:\", pienin)\nprint(\"Suurin:\", suurin)\nprint(\"Summa:\", summa)

    Pienin: 1\nSuurin: 5\nSumma: 15

    Metodit vs. funktiot

    Pythonissa on ehkä hieman hämmentävästi käytössä kaksi eri tapaa listojen käsittelyyn.

    Suurin osa käsittelystä tapahtuu metodien avulla. Esimerkiksi append ja sort ovat metodeja, joita kutsutaan listamuuttujan kautta pistenotaatiolla:

    lista = []\n\n# metodikutsuja\nlista.append(3)\nlista.append(1)\nlista.append(7)\nlista.append(2)\n\n# metodikutsu\nlista.sort()

    Sen sijaan esimerkiksi max, min, len ja sorted ovat funktioita, joille lista annetaan parametrina:

    lista = [3, 2, 7, 1]\n\n# funktiokutsuissa lista on parametrina\nsuurin = max(lista)\npienin = min(lista)\npituus = len(lista)\n\nprint(\"Pienin:\", pienin)\nprint(\"Suurin:\", suurin)\nprint(\"Listan pituus:\", pituus)\n\n# funktiokutsu: lista on parametrina, järjestetty lista paluuarvona\njarjestyksessa = sorted(lista)\nprint(jarjestyksessa)

    Pienin: 1\nSuurin: 7\nListan pituus: 4\n[1, 2, 3, 7]

    Lista funktion parametrina ja paluuarvona

    Itse tekemiemme funktioiden parametreina voi olla myös listoja. Seuraavassa on funktio, joka selvittää parametrina listan mediaanin eli keskimmäisen alkion järjestetyssä listassa:

    def mediaani(lista: list):\n    jarjestetty = sorted(lista)\n    keskikohta = len(jarjestetty) // 2\n    return jarjestetty[keskikohta]

    Funktio selvittää mediaanin tekemällä parametrinaan saamasta listasta järjestetyn version ja palauttamalla sen keskimmäisen alkion. Huomaa, että käytössä on kokonaislukujakolasku //, koska listan indeksin tulee olla kokonaisluku.

    Seuraavassa on esimerkki funktion käytöstä:

    kengannumerot = [45, 44, 36, 39, 40]\nprint(\"Kengännumeroiden mediaani on\", mediaani(kengannumerot))\n\niat = [1, 56, 34, 22, 5, 77, 5]\nprint(\"Ikien mediaani on\", mediaani(iat))

    Kengännumeroiden mediaani on 40\nIkien mediaani on 22

    Funktio voi myös palauttaa listan. Seuraavassa on funktio, joka palauttaa listan käyttäjän syöttämiä kokonaislukuja:

    def lue_luvut():\n    luvut = []\n    while True:\n        syote = input(\"Anna luku (tyhjä lopettaa): \")\n        if len(syote) == 0:\n            break\n        luvut.append(int(syote))\n    return luvut

    Funktio käyttää lista-tyyppistä apumuuttujaa luvut, johon se lisää kaikki käyttäjän antamat luvut. Silmukan jälkeen funktio palauttaa return-komennon avulla listan luvut.

    Funktiota käytetään seuraavasti:

    luvut = lue_luvut()\n\nprint(\"Suurin luku on\", max(luvut))\nprint(\"Lukujen mediaani on\", mediaani(luvut))

    Anna luku (tyhjä lopettaa): 5\nAnna luku (tyhjä lopettaa): -22\nAnna luku (tyhjä lopettaa): 4\nAnna luku (tyhjä lopettaa): 35\nAnna luku (tyhjä lopettaa): 1\nAnna luku (tyhjä lopettaa):\nSuurin luku on 35\nLukujen mediaani on 4

    Pieni esimerkkiohjelmamme demonstroi jo yhtä funktioiden tärkeimmistä käyttötarkoituksista: niiden avulla ohjelma saadaan jaettua loogisiin selkeästi ymmärrettäviin kokonaisuuksiin.

    Sinänsä sama ohjelma olisi voitu tehdä myös ilman funktiota:

    luvut = []\nwhile True:\n    syote = input(\"Anna luku (tyhjä lopettaa): \")\n    if len(syote) == 0:\n        break\n    luvut.append(int(syote))\n\njarjestetty = sorted(luvut)\nkeskikohta = len(jarjestetty) // 2\nmediaani = jarjestetty[keskikohta]\n\nprint(\"Suurin luku on\", max(luvut))\nprint(\"Lukujen mediaani on\", mediaani)

    Nyt kuitenkin ohjelman logiikan seuraaminen on vaikeampaa, koska ei ole enää yhtä selvää, mitkä komennot liittyvät minkäkin kokonaisuuden (syötteiden lukeminen, mediaanin laskeminen, ohjelman muu toiminta) toteuttamiseen.

    Jako funktioiksi siis selkeyttää koodin rakennetta ja tuo esille loogisia kokonaisuuksia. Tämän ansiosta on myös helpompaa varmistaa, että ohjelma toimii halutulla tavalla, koska voimme testata erikseen tiettyä funktiota (esim. toimiiko funktio mediaani oikein).

    Ohjelman rakenteen loogisen jakamisen lisäksi funktioiden toinen käyttötarkoitus on koodin uusiokäyttö. Jos ohjelmassa on tarvetta tehdä samankaltainen operaatio useaan kertaan, kannattaa sitä varten luoda oma selkeästi nimetty funktio:

    print(\"Kengännumerot:\")\nkengat = lue_luvut()\n\nprint(\"Painot:\")\npainot = lue_luvut()\n\nprint(\"Pituudet:\")\npituudet = lue_luvut()

    Tee funktio pituus, joka palauttaa parametrinaan saamansa listan pituuden.

    lista = [1, 2, 3, 4, 5]\nvastaus = pituus(lista)\nprint(\"vastaus\", vastaus)\n\n# huomaa, että voit kutsua funktiota myös antamalla listan suoraan funktion parametriksi\nvastaus = pituus([1, 1, 1, 1])\nprint(\"vastaus\", vastaus)

    vastaus 5\nvastaus 4

    Tee funktio keskiarvo, joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan alkioiden keskiarvon.

    lista = [1, 2, 3, 4, 5]\nvastaus = keskiarvo(lista)\nprint(\"vastaus\", vastaus)

    vastaus 3.0

    Tee funktio vaihteluvali, joka palauttaa parametrinaan saamansa kokonaislukuja sisältävän listan vaihteluvälin (eli suurimman ja pienimmän alkion erotuksen).

    lista = [1, 2, 3, 4, 5]\nvastaus = vaihteluvali(lista)\nprint(\"vastaus\", vastaus)

    vastaus 4

    Lisää listan käsittelystä

    Pythonissa on paljon muitakin mahdollisuuksia listan käsittelyyn. Voit tutustua niihin Pythonin dokumentaation kautta.

    ","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/3-listat.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/4-silmukat-ja-iterointi/page-data.json b/page-data/osa-4/4-silmukat-ja-iterointi/page-data.json index 7dc36a816..ba1598842 100644 --- a/page-data/osa-4/4-silmukat-ja-iterointi/page-data.json +++ b/page-data/osa-4/4-silmukat-ja-iterointi/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-4/4-silmukat-ja-iterointi", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan iteroinnilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka toimii"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa listojen ja merkkijonojen läpikäyntiin"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käydä listan alkiot läpi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukalla samaan tapaan kuin olemme aiemmin käyneet läpi merkkijonon merkkejä. Esimerkiksi seuraava ohjelma tulostaa kaikki listan alkiot omille riveilleen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nkohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n2\n4\n5\n2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on kuitenkin melko vaivalloinen tapa, sillä joudumme käyttämään indeksimuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohta"}]},{"type":"text","value":", joka \"muistaa\", missä kohtaa listaa ollaan menossa. Nyt on aika opetella parempi tapa listan, merkkijonon tai muun vastaavan rakenteen läpikäyntiin."}]},{"type":"element","tagName":"h2","properties":{"id":"for-silmukka","style":"position:relative;"},"children":[{"type":"text","value":"for-silmukka"},{"type":"element","tagName":"a","properties":{"href":"#for-silmukka","ariaLabel":"for silmukka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka käy läpi annetun rakenteen sisällön. Esimerkiksi voimme käydä läpi kaikki listalla olevat alkiot vasemmalta oikealle. Ohjelmoinnissa tällaista läpikäyntiä kutsutaan myös nimellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iterointi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ideana on, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka poimii yksi kerrallaan kunkin alkion ja suorittaa kaikille saman operaation. Näin ohjelmoijan ei tarvitse itse huolehtia, mistä kohdasta alkio haetaan missäkin vaiheessa. Silmukan syntaksi on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"muuttuja"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"rakenne"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"lohko"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka käy listan läpi, se poimii vuorollaan kunkin alkion, sijoittaa sen muuttujaan ja suorittaa lohkon. Kun silmukka on käynyt kaikki alkiot läpi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 327px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/d00a7a558297b987a466855819434573/00e65/4_3_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 214.3478260869565%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAYAAAB4pah1AAAACXBIWXMAAAsTAAALEwEAmpwYAAADSklEQVRIx62XWVMqMRCF5+f7O3zHB3yDJy2RYhNXRAERWQT3XVGwra9v9VQcMwxQN1WpyYTMyenu050QiKd9f3/rczKZyNfX16+5pBbMAry9vZWrq6v/B3hzcyOj0Sicmwc08IHZh8/Pz3J3d7ccoC3mie9oxWJRdnd3Q3+6a2IB+XE6nWqPLkyn05LNZr0W+HoI6LbxeCzD4VDa7baa/Pj4KOfn5xoci3hcA0tNbjQa0mq1FKjb7crx8bHUajXp9/tyenqq7/V6XX+7vLyUh4cH3cie9/f38vb29o8hk2tra7K+vi5HR0e6iI9LpZKUy2XZ2NiQQqEgg8FAZVSpVOTi4kIZQ4DOuNlsKmjQ6/Xk8/MzpMwCAgEoAEjn5OREmZomfY0Nn56eJGCAr6INU/Dj2dmZLnQj7HaCScM94AQMXl5ewsW2gCfBwAKfRqPPWEBr7+/vamq1WpWPjw/x6TURkIY0DIBgZTIZHTNngnc39gKaDwkA8ul0OioRgrO3t6djIgtj/JnI0AABQ9jRvDW/okE2nRsQge/s7MjBwYHKBIbkM8KGKWm4ECAyYQHvgOVyOd0AMHyIDhcCRCYWYVgCtr29rU8ruPS5ARHx6+urRhpQMghmpBQfosnr6+tYQM0UF5A8JsLMkYJWJBgzh0vYMJoxNDYLAV0dwsjeV1dXJZVKhdXbzfmoDtmUzX4xxOmwQHfMU32sjMEgTodUms3NTQ2iFgczw6Ic14hwXJQhQcACBjiaQKA9nnQLCEInQDROQDfKbjGBGK7SAgszJiioLDJz0eLh4aEWCKryLIZhlF2TyFfY2cnndvNxog5d2uhw1kEE4CwdhoA2SZWmQJAx0Y4+7dyYCei7IBEQC44bJLNkZj307ZZ09iYydM1GkwjYDig646i5c5uM433HJanlk0wiILJAwOgS0cPWBB2NsDsOi4PvTghDDvp8Pq/ixmQUsLKyovURNuYKOiogy8iqP4CwYCd2JNnJFHxHRuFHt+JES5j3fuiK122YTfq5h5bvmvcHENMorJjFoUWHLSa5pSv2fujTmDGwSu3OJWnVeyV279hmpk97iYBRhvv7+1rGlmLoNvuYe83W1lY4t9TfiqgLFvnTA+APb770FQpxSTwAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d00a7a558297b987a466855819434573/a0b58/4_3_1.webp 230w","/static/d00a7a558297b987a466855819434573/e25e9/4_3_1.webp 327w"],"sizes":"(max-width: 327px) 100vw, 327px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d00a7a558297b987a466855819434573/81c8e/4_3_1.png 230w","/static/d00a7a558297b987a466855819434573/00e65/4_3_1.png 327w"],"sizes":"(max-width: 327px) 100vw, 327px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/d00a7a558297b987a466855819434573/00e65/4_3_1.png","alt":"Listan iterointi","title":"Listan iterointi","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma tulostaa listan kaikki alkiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n2\n4\n5\n2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos verrataan tätä edelliseen esimerkkiin, huomataan, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka selkeyttää suoraviivaista listan alkioiden läpikäyntiä huomattavasti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käydä samalla idealla läpi myös merkkijonon merkit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka"}]},{"type":"text","value":"\nP\ne\nk\nk\na"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tulostus tähdillä","tmcname":"osa04-11a_tulostus_tahdilla"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää syöttämään merkkijonon ja tulostaa sitten merkkijonon kirjaimet yksitellen allekkain."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisen kirjaimen jälkeen tulostetaan lisäksi tähti (*) omalle rivilleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Python"}]},{"type":"text","value":"\nP\n*\ny\n*\nt\n*\nh\n*\no\n*\nn\n*"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktio-range","style":"position:relative;"},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"a","properties":{"href":"#funktio-range","ariaLabel":"funktio range permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukkaa tarvitaan usein myös siihen, että haluamme toistaa jonkin asian tietyn määrän kertoja tai käydä läpi tietyn lukuvälin (esimerkiksi kaikki luvut väliltä 1–100). Myös tämä onnistuu kätevästi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":" avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme kutsua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktiota monella tavalla. Yksinkertaisin tapa on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(n)"}]},{"type":"text","value":", jolloin silmukka käy läpi kokonaisluvut 0:sta lukuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"–1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n1\n2\n3\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun annamme kaksi parametria, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(a, b)"}]},{"type":"text","value":" aloittaa luvusta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" ja lopettaa lukuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"–1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n4\n5\n6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun annamme kolme parametria, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(a, b, c)"}]},{"type":"text","value":" aloittaa luvusta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":", lopettaa lukuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"–1 ja muuttaa lukua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c"}]},{"type":"text","value":":llä joka askeleella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n3\n5\n7"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös antaa negatiivisen askeleen, jolloin luvut käydään läpi käänteisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"6\n5\n4\n3"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Negatiivisesta positiiviseen","tmcname":"osa04-11b_negatiivisesta_positiiviseen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä positiivisen kokonaisluvun N. Ohjelma tulostaa sen jälkeen luvut väliltä -N...N "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nollaa lukuunottamatta"}]},{"type":"text","value":". Jokainen luku tulostetaan omalle rivilleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n-4\n-3\n-2\n-1\n1\n2\n3\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lukuvali-listaksi","style":"position:relative;"},"children":[{"type":"text","value":"Lukuväli listaksi"},{"type":"element","tagName":"a","properties":{"href":"#lukuvali-listaksi","ariaLabel":"lukuvali listaksi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":" palauttaa lukuvälin, joka voidaan käydä läpi listan kaltaisesti mutta joka ei kuitenkaan ole lista. Tämän näkee siitä, että jos tulostamme funktion palauttaman arvon, näemme vain kuvauksen lukuvälistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"range(2, 7)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustumme asiaan tarkemmin Ohjelmoinnin jatkokurssilla, mutta on hyvä tietää, että voimme muuttaa lukuvälin listaksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"list"}]},{"type":"text","value":". Tällöin listaan tulevat kaikki lukuväliin kuuluvat arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 3, 4, 5, 6]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"muistutus-tehtavien-funktioita-testaavasta-omasta-koodista","style":"position:relative;"},"children":[{"type":"text","value":"Muistutus tehtävien funktioita testaavasta omasta koodista"},{"type":"element","tagName":"a","properties":{"href":"#muistutus-tehtavien-funktioita-testaavasta-omasta-koodista","ariaLabel":"muistutus tehtavien funktioita testaavasta omasta koodista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiotehtävien tehtäväpohjat ovat tähän asti näyttäneet seuraavilta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tee ratkaisu tänne"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktiota kannattaa testata kutsumalla sitä täällä seuraavasti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olipa kerran kauan sitten ohjelmoija\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tästä eteenpäin muistutusta siitä, että testikoodi on sijoitettava "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":" -lohkoon, ei tehtäväpohjissa enää ole. Testit kuitenkin vaativat lohkon edelleen, eli joudut lisäämään sen itse."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa kuitenkin"}]},{"type":"text","value":", että jotkut tehtävät, esim. hetken kuluttua vuorossa oleva "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Palindromit"}]},{"type":"text","value":", edellyttävät funktioiden lisäksi myös funktiota kutsuvaa koodia. Tätä koodia "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei tule"}]},{"type":"text","value":" sijoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":" -lohkon sisälle. Testit eivät nimittäin suorita mitään kyseisen lohkon koodista."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tähdet","tmcname":"osa04-12_tahdet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista_tahtina"}]},{"type":"text","value":", joka saa parametriksi listan kokonaislukuja. Funktio tulostaa joukon tähtirivejä siten, että listalla olevat luvut kertovat kunkin rivin tähtimäärän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista_tahtina([3, 7, 1, 1, 2])"}]},{"type":"text","value":" tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"***\n*******\n*\n*\n**\n"}]}]},{"type":"comment","value":" **Huomaa** että tällä hetkellä Windowsissa on ongelmia joidenkin tehtävien testien suorittamisessa. Jos törmäät seuraavaan virheilmoitukseen\n\n\"Listan\n\nvoit suorittaa testit lähettämällä ne palvelimelle valitsemalla testien suoritusnapin oikealla puolella olevasta symbolista avautuvasta TMC-valikosta _Submit solutions_.\n\nOngelman saa korjattua menemällä laajennuksen asennusvalikkoon ja muuttamalla \"TMC Data\" -kohdassa tehtävien sijainnin johonkin toiseen sijaintiin, jonka tiedostopolku on lyhempi, allaolevassa kuvassa nappi _change path_. Siirrossa saattaa kestää hetken, joten odotathan operaation päättymistä.\n\n\"Listan\n\nOngelmaan pyritään saamaan parempi ratkaisu lähipäivinä. "}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Anagrammi","tmcname":"osa04-13_anagrammi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anagrammi"}]},{"type":"text","value":" joka saa parametriksi kaksi merkkijonoa. Funktio palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos merkkijonot ovat anagrammeja eli ne muodostuvat täsmälleen samoista kirjaimista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi funktiota voisi käyttää näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"talo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tola\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"talo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lato\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"talo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tammi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mitta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vihje: funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" toimii myös merkkijonoille."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Palindromit","tmcname":"osa04-14_palindromit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palindromi"}]},{"type":"text","value":", joka saa parametriksi merkkijonon ja palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos merkkijono on palindromi (eli samansisältöinen luettuna alusta loppuun tai lopusta alkuun)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee myös funktiota hyödyntävä pääohjelma, joka kyselee käyttäjältä sanoja niin kauan, kunnes käyttäjä syöttää palindromin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nei ollut palindromi\nAnna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"java"}]},{"type":"text","value":"\nei ollut palindromi\nAnna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kauppias"}]},{"type":"text","value":"\nei ollut palindromi\nAnna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"saippuakauppias"}]},{"type":"text","value":"\nsaippuakauppias on palindromi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":", että pääohjelmaa "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule kirjoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\":"}]},{"type":"text","value":"-lohkon sisälle"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Positiivisten summa","tmcname":"osa04-15_positiivisten_summa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"positiivisten_summa"}]},{"type":"text","value":", joka saa parametriksi kokonaislukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa listan positiivisten lukujen summan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" positiivisten_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 9"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertaa nyt tarvittaessa "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/3-listat"},"children":[{"type":"text","value":"edellisen osion"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lista funktion parametrina ja paluuarvona"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Parilliset","tmcname":"osa04-16_parilliset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"parilliset"}]},{"type":"text","value":", joka saa parametriksi kokonaislukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, jolla on parametrina olevan listan sisältämät parilliset luvut."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nuusi_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alkuperäinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" uusi_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"alkuperäinen [1, 2, 3, 4, 5]\nuusi [2, 4]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Summalista","tmcname":"osa04-17_summalista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":", joka saa parametriksi kaksi kokonaislukuja sisältävää listaa. Molemmissa listoissa on sama määrä alkioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, jonka alkiot muodostuvat parametreina olevien listojen alkioiden summista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nb "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# [8, 10, 12]"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Uniikit","tmcname":"osa04-18_uniikit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uniikit"}]},{"type":"text","value":", joka saa parametriksi kokonaislukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, joka sisältää parametrina annetun listan luvut suuruusjärjestyksessä siten, että jokainen luku on listalla vain kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uniikit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# [1, 2, 3]"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"parhaan-tai-huonoimman-etsiminen-listalta","style":"position:relative;"},"children":[{"type":"text","value":"Parhaan tai huonoimman etsiminen listalta"},{"type":"element","tagName":"a","properties":{"href":"#parhaan-tai-huonoimman-etsiminen-listalta","ariaLabel":"parhaan tai huonoimman etsiminen listalta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnissa tulee usein esiin tilanne, missä listalta on löydettävä jonkin kriteerin mukaan paras tai huonoin alkio. Ratkaisu onnistuu käyttämällä sopivaa apumuuttujaa, jonka avulla voidaan \"muistaa\" läpikäynnin aikana siihen mennessä löytynyt paras alkio. Tätä muistettavaa alkiota verrataan sitten yksi kerrallaan jokaiseen vastaantulevaan alkioon, ja lopulta on tiedossa koko listan paras."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Algoritmin \"luonnos\" on seuraavassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkuarvo "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# sopiva alkuarvo riippuu tilanteesta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio parempi kuin paras"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n paras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkio\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# paras on nyt tiedossa!"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin yksityiskohdat riippuvat siitä minkä tyyppisiä alkioita listalla on ja mikä parhauden/huonouden vertailukriteeri on käytössä. Joissain tilanteissa myös apumuuttujia saatetaan tarvita useampia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan hieman tämän ratkaisumenetelmän käyttöä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan pisimmän pituus","tmcname":"osa04-18a_listan_pimman_pituus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisimman_pituus"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa tiedon mikä on listan pisimmän merkkijonon pituus."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seitsemäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juhani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"9\n6"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan lyhin","tmcname":"osa04-18b_listan_lyhin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lyhin"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan lyhimmän merkkijonon. Jos samanpituisia on useita (testeissä näin ei ole), voi funktio palauttaa niistä minkä vaan. Funktio voi olettaa että listalla ei ole tyhjiä eli nollan pituisia merkkijonoja."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seitsemäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"johanna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eka\neero"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan pisimmät","tmcname":"osa04-19_listan_pisimmat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisimmat"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan, joka sisältää parametrina annetun listan pisimmän merkkijonon. Jos pisimpiä merkkijonoja on useampia, funktio palauttaa ne kaikki listassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonojen järjestyksen tuloslistassa tulee noudattaa merkkijonojen järjestystä alkuperäisessä listassa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seitsemäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ['seitsemäs']"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juhani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ['emilia', 'juhani']"}]}]}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan iteroinnilla
    • \n
    • Tiedät, miten for-silmukka toimii
    • \n
    • Osaat käyttää for-silmukkaa listojen ja merkkijonojen läpikäyntiin
    • \n

    Voimme käydä listan alkiot läpi while-silmukalla samaan tapaan kuin olemme aiemmin käyneet läpi merkkijonon merkkejä. Esimerkiksi seuraava ohjelma tulostaa kaikki listan alkiot omille riveilleen:

    lista = [3, 2, 4, 5, 2]\n\nkohta = 0\nwhile kohta < len(lista):\n    print(lista[kohta])\n    kohta += 1

    3\n2\n4\n5\n2

    Tämä on kuitenkin melko vaivalloinen tapa, sillä joudumme käyttämään indeksimuuttujaa kohta, joka \"muistaa\", missä kohtaa listaa ollaan menossa. Nyt on aika opetella parempi tapa listan, merkkijonon tai muun vastaavan rakenteen läpikäyntiin.

    for-silmukka

    Pythonin for-silmukka käy läpi annetun rakenteen sisällön. Esimerkiksi voimme käydä läpi kaikki listalla olevat alkiot vasemmalta oikealle. Ohjelmoinnissa tällaista läpikäyntiä kutsutaan myös nimellä iterointi.

    Ideana on, että for-silmukka poimii yksi kerrallaan kunkin alkion ja suorittaa kaikille saman operaation. Näin ohjelmoijan ei tarvitse itse huolehtia, mistä kohdasta alkio haetaan missäkin vaiheessa. Silmukan syntaksi on seuraava:

    for <muuttuja> in <rakenne>:\n    <lohko>

    Kun for-silmukka käy listan läpi, se poimii vuorollaan kunkin alkion, sijoittaa sen muuttujaan ja suorittaa lohkon. Kun silmukka on käynyt kaikki alkiot läpi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä.

    \n \n

    Tee ohjelma, joka pyytää käyttäjää syöttämään merkkijonon ja tulostaa sitten merkkijonon kirjaimet yksitellen allekkain.

    Jokaisen kirjaimen jälkeen tulostetaan lisäksi tähti (*) omalle rivilleen.

    Esimerkiksi:

    Anna merkkijono: Python\nP\n*\ny\n*\nt\n*\nh\n*\no\n*\nn\n*

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Funktio range

    Silmukkaa tarvitaan usein myös siihen, että haluamme toistaa jonkin asian tietyn määrän kertoja tai käydä läpi tietyn lukuvälin (esimerkiksi kaikki luvut väliltä 1–100). Myös tämä onnistuu kätevästi for-silmukalla funktion range avulla.

    Voimme kutsua range-funktiota monella tavalla. Yksinkertaisin tapa on range(n), jolloin silmukka käy läpi kokonaisluvut 0:sta lukuun n–1:

    for i in range(5):\n    print(i)

    0\n1\n2\n3\n4

    Kun annamme kaksi parametria, range(a, b) aloittaa luvusta a ja lopettaa lukuun b–1:

    for i in range(3, 7):\n    print(i)

    3\n4\n5\n6

    Kun annamme kolme parametria, range(a, b, c) aloittaa luvusta a, lopettaa lukuun b–1 ja muuttaa lukua c:llä joka askeleella:

    for i in range(1, 9, 2):\n    print(i)

    1\n3\n5\n7

    Voimme myös antaa negatiivisen askeleen, jolloin luvut käydään läpi käänteisesti:

    for i in range(6, 2, -1):\n    print(i)

    6\n5\n4\n3

    Tee ohjelma, joka lukee käyttäjältä positiivisen kokonaisluvun N. Ohjelma tulostaa sen jälkeen luvut väliltä -N...N nollaa lukuunottamatta. Jokainen luku tulostetaan omalle rivilleen.

    Esimerkiksi

    Anna luku: 4\n-4\n-3\n-2\n-1\n1\n2\n3\n4

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Lukuväli listaksi

    Funktio range palauttaa lukuvälin, joka voidaan käydä läpi listan kaltaisesti mutta joka ei kuitenkaan ole lista. Tämän näkee siitä, että jos tulostamme funktion palauttaman arvon, näemme vain kuvauksen lukuvälistä:

    luvut = range(2, 7)\nprint(luvut)

    range(2, 7)

    Tutustumme asiaan tarkemmin Ohjelmoinnin jatkokurssilla, mutta on hyvä tietää, että voimme muuttaa lukuvälin listaksi funktiolla list. Tällöin listaan tulevat kaikki lukuväliin kuuluvat arvot:

    luvut = list(range(2, 7))\nprint(luvut)

    [2, 3, 4, 5, 6]

    Muistutus tehtävien funktioita testaavasta omasta koodista

    Funktiotehtävien tehtäväpohjat ovat tähän asti näyttäneet seuraavilta:

    # tee ratkaisu tänne\n# funktiota kannattaa testata kutsumalla sitä täällä seuraavasti\nif __name__ == \"__main__\":\n    lause = \"olipa kerran kauan sitten ohjelmoija\"\n    print(eka_sana(lause))\n    print(toka_sana(lause))\n    print(vika_sana(lause))

    Tästä eteenpäin muistutusta siitä, että testikoodi on sijoitettava if __name__ == \"__main__\" -lohkoon, ei tehtäväpohjissa enää ole. Testit kuitenkin vaativat lohkon edelleen, eli joudut lisäämään sen itse.

    Huomaa kuitenkin, että jotkut tehtävät, esim. hetken kuluttua vuorossa oleva Palindromit, edellyttävät funktioiden lisäksi myös funktiota kutsuvaa koodia. Tätä koodia ei tule sijoittaa if __name__ == \"__main__\" -lohkon sisälle. Testit eivät nimittäin suorita mitään kyseisen lohkon koodista.

    Tee funktio lista_tahtina, joka saa parametriksi listan kokonaislukuja. Funktio tulostaa joukon tähtirivejä siten, että listalla olevat luvut kertovat kunkin rivin tähtimäärän.

    Esim. kutsuttaessa lista_tahtina([3, 7, 1, 1, 2]) tulostus on:

    \n***\n*******\n*\n*\n**\n

    Tee funktio anagrammi joka saa parametriksi kaksi merkkijonoa. Funktio palauttaa True, jos merkkijonot ovat anagrammeja eli ne muodostuvat täsmälleen samoista kirjaimista.

    Esimerkiksi funktiota voisi käyttää näin:

    print(anagrammi(\"talo\", \"tola\")) # True\nprint(anagrammi(\"talo\", \"lato\")) # True\nprint(anagrammi(\"talo\", \"olat\")) # True\nprint(anagrammi(\"tammi\", \"mitta\")) # False\nprint(anagrammi(\"python\", \"java\")) # False

    Vihje: funktio sorted toimii myös merkkijonoille.

    Tee funktio palindromi, joka saa parametriksi merkkijonon ja palauttaa True, jos merkkijono on palindromi (eli samansisältöinen luettuna alusta loppuun tai lopusta alkuun).

    Tee myös funktiota hyödyntävä pääohjelma, joka kyselee käyttäjältä sanoja niin kauan, kunnes käyttäjä syöttää palindromin:

    Anna palindromi: python\nei ollut palindromi\nAnna palindromi: java\nei ollut palindromi\nAnna palindromi: kauppias\nei ollut palindromi\nAnna palindromi: saippuakauppias\nsaippuakauppias on palindromi!

    Huomaa, että pääohjelmaa ei tule kirjoittaa\nif __name__ == \"__main__\":-lohkon sisälle

    Tee funktio positiivisten_summa, joka saa parametriksi kokonaislukuja sisältävän listan.

    Funktio palauttaa listan positiivisten lukujen summan.

    lista = [1, -2, 3, -4, 5]\nvastaus = positiivisten_summa(lista)\nprint(\"vastaus\", vastaus)

    vastaus 9

    Kertaa nyt tarvittaessa edellisen osion luku Lista funktion parametrina ja paluuarvona!

    Tee funktio parilliset, joka saa parametriksi kokonaislukuja sisältävän listan.

    Funktio palauttaa uuden listan, jolla on parametrina olevan listan sisältämät parilliset luvut.

    lista = [1, 2, 3, 4, 5]\nuusi_lista = parilliset(lista)\nprint(\"alkuperäinen\", lista)\nprint(\"uusi\", uusi_lista)

    alkuperäinen [1, 2, 3, 4, 5]\nuusi [2, 4]

    Tee funktio summa, joka saa parametriksi kaksi kokonaislukuja sisältävää listaa. Molemmissa listoissa on sama määrä alkioita.

    Funktio palauttaa uuden listan, jonka alkiot muodostuvat parametreina olevien listojen alkioiden summista.

    Esim:

    a = [1, 2, 3]\nb = [7, 8, 9]\nprint(summa(a, b)) # [8, 10, 12]

    Tee funktio uniikit, joka saa parametriksi kokonaislukuja sisältävän listan.

    Funktio palauttaa uuden listan, joka sisältää parametrina annetun listan luvut suuruusjärjestyksessä siten, että jokainen luku on listalla vain kerran.

    lista = [3, 2, 2, 1, 3, 3, 1]\nprint(uniikit(lista)) # [1, 2, 3]

    Parhaan tai huonoimman etsiminen listalta

    Ohjelmoinnissa tulee usein esiin tilanne, missä listalta on löydettävä jonkin kriteerin mukaan paras tai huonoin alkio. Ratkaisu onnistuu käyttämällä sopivaa apumuuttujaa, jonka avulla voidaan \"muistaa\" läpikäynnin aikana siihen mennessä löytynyt paras alkio. Tätä muistettavaa alkiota verrataan sitten yksi kerrallaan jokaiseen vastaantulevaan alkioon, ja lopulta on tiedossa koko listan paras.

    Algoritmin \"luonnos\" on seuraavassa:

    paras = alkuarvo # sopiva alkuarvo riippuu tilanteesta\nfor alkio in lista:\n    if alkio parempi kuin paras:\n        paras = alkio\n\n# paras on nyt tiedossa!

    Koodin yksityiskohdat riippuvat siitä minkä tyyppisiä alkioita listalla on ja mikä parhauden/huonouden vertailukriteeri on käytössä. Joissain tilanteissa myös apumuuttujia saatetaan tarvita useampia.

    Harjoitellaan hieman tämän ratkaisumenetelmän käyttöä.

    Tee funktio pisimman_pituus, joka saa parametriksi listan merkkijonoja. Funktio palauttaa tiedon mikä on listan pisimmän merkkijonon pituus.

    lista = [\"eka\", \"toka\", \"kolmas\", \"seitsemäs\"]\n\ntulos = pisimman_pituus(lista)\nprint(tulos)
    lista = [\"pekka\", \"emilia\", \"venla\", \"eero\", \"antti\", \"juhani\"]\n\ntulos = pisimman_pituus(lista)\nprint(tulos)

    9\n6

    Tee funktio lyhin, joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan lyhimmän merkkijonon. Jos samanpituisia on useita (testeissä näin ei ole), voi funktio palauttaa niistä minkä vaan. Funktio voi olettaa että listalla ei ole tyhjiä eli nollan pituisia merkkijonoja.

    lista = [\"eka\", \"toka\", \"kolmas\", \"seitsemäs\"]\n\ntulos = lyhin(lista)\nprint(tulos)
    lista = [\"pekka\", \"emilia\", \"johanna\", \"venla\", \"eero\", \"antti\"]\n\ntulos = lyhin(lista)\nprint(tulos)

    eka\neero

    Tee funktio pisimmat, joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan, joka sisältää parametrina annetun listan pisimmän merkkijonon. Jos pisimpiä merkkijonoja on useampia, funktio palauttaa ne kaikki listassa.

    Merkkijonojen järjestyksen tuloslistassa tulee noudattaa merkkijonojen järjestystä alkuperäisessä listassa.

    lista = [\"eka\", \"toka\", \"kolmas\", \"seitsemäs\"]\n\ntulos = pisimmat(lista)\nprint(tulos) # ['seitsemäs']
    lista = [\"pekka\", \"emilia\", \"venla\", \"eero\", \"antti\", \"juhani\"]\n\ntulos = pisimmat(lista)\nprint(tulos) # ['emilia', 'juhani']
    ","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/4-silmukat-ja-iterointi.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan iteroinnilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka toimii"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa listojen ja merkkijonojen läpikäyntiin"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käydä listan alkiot läpi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukalla samaan tapaan kuin olemme aiemmin käyneet läpi merkkijonon merkkejä. Esimerkiksi seuraava ohjelma tulostaa kaikki listan alkiot omille riveilleen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nkohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"kohta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kohta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n2\n4\n5\n2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on kuitenkin melko vaivalloinen tapa, sillä joudumme käyttämään indeksimuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kohta"}]},{"type":"text","value":", joka \"muistaa\", missä kohtaa listaa ollaan menossa. Nyt on aika opetella parempi tapa listan, merkkijonon tai muun vastaavan rakenteen läpikäyntiin."}]},{"type":"element","tagName":"h2","properties":{"id":"for-silmukka","style":"position:relative;"},"children":[{"type":"text","value":"for-silmukka"},{"type":"element","tagName":"a","properties":{"href":"#for-silmukka","ariaLabel":"for silmukka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka käy läpi annetun rakenteen sisällön. Esimerkiksi voimme käydä läpi kaikki listalla olevat alkiot vasemmalta oikealle. Ohjelmoinnissa tällaista läpikäyntiä kutsutaan myös nimellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"iterointi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ideana on, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka poimii yksi kerrallaan kunkin alkion ja suorittaa kaikille saman operaation. Näin ohjelmoijan ei tarvitse itse huolehtia, mistä kohdasta alkio haetaan missäkin vaiheessa. Silmukan syntaksi on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"muuttuja"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"rakenne"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"lohko"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka käy listan läpi, se poimii vuorollaan kunkin alkion, sijoittaa sen muuttujaan ja suorittaa lohkon. Kun silmukka on käynyt kaikki alkiot läpi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä."}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 327px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/d00a7a558297b987a466855819434573/00e65/4_3_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 214.3478260869565%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAYAAAB4pah1AAAACXBIWXMAAAsTAAALEwEAmpwYAAADSklEQVRIx62XWVMqMRCF5+f7O3zHB3yDJy2RYhNXRAERWQT3XVGwra9v9VQcMwxQN1WpyYTMyenu050QiKd9f3/rczKZyNfX16+5pBbMAry9vZWrq6v/B3hzcyOj0Sicmwc08IHZh8/Pz3J3d7ccoC3mie9oxWJRdnd3Q3+6a2IB+XE6nWqPLkyn05LNZr0W+HoI6LbxeCzD4VDa7baa/Pj4KOfn5xoci3hcA0tNbjQa0mq1FKjb7crx8bHUajXp9/tyenqq7/V6XX+7vLyUh4cH3cie9/f38vb29o8hk2tra7K+vi5HR0e6iI9LpZKUy2XZ2NiQQqEgg8FAZVSpVOTi4kIZQ4DOuNlsKmjQ6/Xk8/MzpMwCAgEoAEjn5OREmZomfY0Nn56eJGCAr6INU/Dj2dmZLnQj7HaCScM94AQMXl5ewsW2gCfBwAKfRqPPWEBr7+/vamq1WpWPjw/x6TURkIY0DIBgZTIZHTNngnc39gKaDwkA8ul0OioRgrO3t6djIgtj/JnI0AABQ9jRvDW/okE2nRsQge/s7MjBwYHKBIbkM8KGKWm4ECAyYQHvgOVyOd0AMHyIDhcCRCYWYVgCtr29rU8ruPS5ARHx6+urRhpQMghmpBQfosnr6+tYQM0UF5A8JsLMkYJWJBgzh0vYMJoxNDYLAV0dwsjeV1dXJZVKhdXbzfmoDtmUzX4xxOmwQHfMU32sjMEgTodUms3NTQ2iFgczw6Ic14hwXJQhQcACBjiaQKA9nnQLCEInQDROQDfKbjGBGK7SAgszJiioLDJz0eLh4aEWCKryLIZhlF2TyFfY2cnndvNxog5d2uhw1kEE4CwdhoA2SZWmQJAx0Y4+7dyYCei7IBEQC44bJLNkZj307ZZ09iYydM1GkwjYDig646i5c5uM433HJanlk0wiILJAwOgS0cPWBB2NsDsOi4PvTghDDvp8Pq/ixmQUsLKyovURNuYKOiogy8iqP4CwYCd2JNnJFHxHRuFHt+JES5j3fuiK122YTfq5h5bvmvcHENMorJjFoUWHLSa5pSv2fujTmDGwSu3OJWnVeyV279hmpk97iYBRhvv7+1rGlmLoNvuYe83W1lY4t9TfiqgLFvnTA+APb770FQpxSTwAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d00a7a558297b987a466855819434573/a0b58/4_3_1.webp 230w","/static/d00a7a558297b987a466855819434573/e25e9/4_3_1.webp 327w"],"sizes":"(max-width: 327px) 100vw, 327px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d00a7a558297b987a466855819434573/81c8e/4_3_1.png 230w","/static/d00a7a558297b987a466855819434573/00e65/4_3_1.png 327w"],"sizes":"(max-width: 327px) 100vw, 327px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/d00a7a558297b987a466855819434573/00e65/4_3_1.png","alt":"Listan iterointi","title":"Listan iterointi","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma tulostaa listan kaikki alkiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n2\n4\n5\n2"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos verrataan tätä edelliseen esimerkkiin, huomataan, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukka selkeyttää suoraviivaista listan alkioiden läpikäyntiä huomattavasti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käydä samalla idealla läpi myös merkkijonon merkit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna nimesi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna nimesi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Pekka"}]},{"type":"text","value":"\nP\ne\nk\nk\na"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tulostus tähdillä","tmcname":"osa04-11a_tulostus_tahdilla"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää syöttämään merkkijonon ja tulostaa sitten merkkijonon kirjaimet yksitellen allekkain."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisen kirjaimen jälkeen tulostetaan lisäksi tähti (*) omalle rivilleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Python"}]},{"type":"text","value":"\nP\n*\ny\n*\nt\n*\nh\n*\no\n*\nn\n*"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktio-range","style":"position:relative;"},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"a","properties":{"href":"#funktio-range","ariaLabel":"funktio range permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Silmukkaa tarvitaan usein myös siihen, että haluamme toistaa jonkin asian tietyn määrän kertoja tai käydä läpi tietyn lukuvälin (esimerkiksi kaikki luvut väliltä 1–100). Myös tämä onnistuu kätevästi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":" avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme kutsua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktiota monella tavalla. Yksinkertaisin tapa on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(n)"}]},{"type":"text","value":", jolloin silmukka käy läpi kokonaisluvut 0:sta lukuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"–1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n1\n2\n3\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun annamme kaksi parametria, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(a, b)"}]},{"type":"text","value":" aloittaa luvusta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" ja lopettaa lukuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"–1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n4\n5\n6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun annamme kolme parametria, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(a, b, c)"}]},{"type":"text","value":" aloittaa luvusta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":", lopettaa lukuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"–1 ja muuttaa lukua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"c"}]},{"type":"text","value":":llä joka askeleella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n3\n5\n7"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös antaa negatiivisen askeleen, jolloin luvut käydään läpi käänteisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"6\n5\n4\n3"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Negatiivisesta positiiviseen","tmcname":"osa04-11b_negatiivisesta_positiiviseen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka lukee käyttäjältä positiivisen kokonaisluvun N. Ohjelma tulostaa sen jälkeen luvut väliltä -N...N "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nollaa lukuunottamatta"}]},{"type":"text","value":". Jokainen luku tulostetaan omalle rivilleen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n-4\n-3\n-2\n-1\n1\n2\n3\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lukuvali-listaksi","style":"position:relative;"},"children":[{"type":"text","value":"Lukuväli listaksi"},{"type":"element","tagName":"a","properties":{"href":"#lukuvali-listaksi","ariaLabel":"lukuvali listaksi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":" palauttaa lukuvälin, joka voidaan käydä läpi listan kaltaisesti mutta joka ei kuitenkaan ole lista. Tämän näkee siitä, että jos tulostamme funktion palauttaman arvon, näemme vain kuvauksen lukuvälistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"range(2, 7)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustumme asiaan tarkemmin Ohjelmoinnin jatkokurssilla, mutta on hyvä tietää, että voimme muuttaa lukuvälin listaksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"list"}]},{"type":"text","value":". Tällöin listaan tulevat kaikki lukuväliin kuuluvat arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 3, 4, 5, 6]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"muistutus-tehtavien-funktioita-testaavasta-omasta-koodista","style":"position:relative;"},"children":[{"type":"text","value":"Muistutus tehtävien funktioita testaavasta omasta koodista"},{"type":"element","tagName":"a","properties":{"href":"#muistutus-tehtavien-funktioita-testaavasta-omasta-koodista","ariaLabel":"muistutus tehtavien funktioita testaavasta omasta koodista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiotehtävien tehtäväpohjat ovat tähän asti näyttäneet seuraavilta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tee ratkaisu tänne"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktiota kannattaa testata kutsumalla sitä täällä seuraavasti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olipa kerran kauan sitten ohjelmoija\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tästä eteenpäin muistutusta siitä, että testikoodi on sijoitettava "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":" -lohkoon, ei tehtäväpohjissa enää ole. Testit kuitenkin vaativat lohkon edelleen, eli joudut lisäämään sen itse."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa kuitenkin"}]},{"type":"text","value":", että jotkut tehtävät, esim. hetken kuluttua vuorossa oleva "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Palindromit"}]},{"type":"text","value":", edellyttävät funktioiden lisäksi myös funktiota kutsuvaa koodia. Tätä koodia "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei tule"}]},{"type":"text","value":" sijoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":" -lohkon sisälle. Testit eivät nimittäin suorita mitään kyseisen lohkon koodista."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tähdet","tmcname":"osa04-12_tahdet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista_tahtina"}]},{"type":"text","value":", joka saa parametriksi listan kokonaislukuja. Funktio tulostaa joukon tähtirivejä siten, että listalla olevat luvut kertovat kunkin rivin tähtimäärän."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista_tahtina([3, 7, 1, 1, 2])"}]},{"type":"text","value":" tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"***\n*******\n*\n*\n**\n"}]}]},{"type":"comment","value":" **Huomaa** että tällä hetkellä Windowsissa on ongelmia joidenkin tehtävien testien suorittamisessa. Jos törmäät seuraavaan virheilmoitukseen\n\n\"Listan\n\nvoit suorittaa testit lähettämällä ne palvelimelle valitsemalla testien suoritusnapin oikealla puolella olevasta symbolista avautuvasta TMC-valikosta _Submit solutions_.\n\nOngelman saa korjattua menemällä laajennuksen asennusvalikkoon ja muuttamalla \"TMC Data\" -kohdassa tehtävien sijainnin johonkin toiseen sijaintiin, jonka tiedostopolku on lyhempi, allaolevassa kuvassa nappi _change path_. Siirrossa saattaa kestää hetken, joten odotathan operaation päättymistä.\n\n\"Listan\n\nOngelmaan pyritään saamaan parempi ratkaisu lähipäivinä. "}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Anagrammi","tmcname":"osa04-13_anagrammi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anagrammi"}]},{"type":"text","value":" joka saa parametriksi kaksi merkkijonoa. Funktio palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos merkkijonot ovat anagrammeja eli ne muodostuvat täsmälleen samoista kirjaimista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi funktiota voisi käyttää näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"talo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tola\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"talo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lato\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"talo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# True"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tammi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mitta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"anagrammi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vihje: funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" toimii myös merkkijonoille."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Palindromit","tmcname":"osa04-14_palindromit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palindromi"}]},{"type":"text","value":", joka saa parametriksi merkkijonon ja palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos merkkijono on palindromi (eli samansisältöinen luettuna alusta loppuun tai lopusta alkuun)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee myös funktiota hyödyntävä pääohjelma, joka kyselee käyttäjältä sanoja niin kauan, kunnes käyttäjä syöttää palindromin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"python"}]},{"type":"text","value":"\nei ollut palindromi\nAnna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"java"}]},{"type":"text","value":"\nei ollut palindromi\nAnna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kauppias"}]},{"type":"text","value":"\nei ollut palindromi\nAnna palindromi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"saippuakauppias"}]},{"type":"text","value":"\nsaippuakauppias on palindromi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":", että pääohjelmaa "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule kirjoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\":"}]},{"type":"text","value":"-lohkon sisälle"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Positiivisten summa","tmcname":"osa04-15_positiivisten_summa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"positiivisten_summa"}]},{"type":"text","value":", joka saa parametriksi kokonaislukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa listan positiivisten lukujen summan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nvastaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" positiivisten_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vastaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vastaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"vastaus 9"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kertaa nyt tarvittaessa "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/3-listat"},"children":[{"type":"text","value":"edellisen osion"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Lista funktion parametrina ja paluuarvona"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Parilliset","tmcname":"osa04-16_parilliset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"parilliset"}]},{"type":"text","value":", joka saa parametriksi kokonaislukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, jolla on parametrina olevan listan sisältämät parilliset luvut."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nuusi_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" parilliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alkuperäinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" uusi_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"alkuperäinen [1, 2, 3, 4, 5]\nuusi [2, 4]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Summalista","tmcname":"osa04-17_summalista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":", joka saa parametriksi kaksi kokonaislukuja sisältävää listaa. Molemmissa listoissa on sama määrä alkioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, jonka alkiot muodostuvat parametreina olevien listojen alkioiden summista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nb "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# [8, 10, 12]"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Uniikit","tmcname":"osa04-18_uniikit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uniikit"}]},{"type":"text","value":", joka saa parametriksi kokonaislukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, joka sisältää parametrina annetun listan luvut suuruusjärjestyksessä siten, että jokainen luku on listalla vain kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uniikit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# [1, 2, 3]"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"parhaan-tai-huonoimman-etsiminen-listalta","style":"position:relative;"},"children":[{"type":"text","value":"Parhaan tai huonoimman etsiminen listalta"},{"type":"element","tagName":"a","properties":{"href":"#parhaan-tai-huonoimman-etsiminen-listalta","ariaLabel":"parhaan tai huonoimman etsiminen listalta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnissa tulee usein esiin tilanne, missä listalta on löydettävä jonkin kriteerin mukaan paras tai huonoin alkio. Ratkaisu onnistuu käyttämällä sopivaa apumuuttujaa, jonka avulla voidaan \"muistaa\" läpikäynnin aikana siihen mennessä löytynyt paras alkio. Tätä muistettavaa alkiota verrataan sitten yksi kerrallaan jokaiseen vastaantulevaan alkioon, ja lopulta on tiedossa koko listan paras."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Algoritmin \"luonnos\" on seuraavassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkuarvo "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# sopiva alkuarvo riippuu tilanteesta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkio parempi kuin paras"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n paras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkio\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# paras on nyt tiedossa!"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin yksityiskohdat riippuvat siitä minkä tyyppisiä alkioita listalla on ja mikä parhauden/huonouden vertailukriteeri on käytössä. Joissain tilanteissa myös apumuuttujia saatetaan tarvita useampia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harjoitellaan hieman tämän ratkaisumenetelmän käyttöä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan pisimmän pituus","tmcname":"osa04-18a_listan_pimman_pituus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisimman_pituus"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa tiedon mikä on listan pisimmän merkkijonon pituus."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seitsemäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juhani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"9\n6"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan lyhin","tmcname":"osa04-18b_listan_lyhin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lyhin"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan lyhimmän merkkijonon. Jos samanpituisia on useita (testeissä näin ei ole), voi funktio palauttaa niistä minkä vaan. Funktio voi olettaa että listalla ei ole tyhjiä eli nollan pituisia merkkijonoja."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seitsemäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"johanna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eka\neero"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Listan pisimmät","tmcname":"osa04-19_listan_pisimmat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisimmat"}]},{"type":"text","value":", joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan, joka sisältää parametrina annetun listan pisimmän merkkijonon. Jos pisimpiä merkkijonoja on useampia, funktio palauttaa ne kaikki listassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonojen järjestyksen tuloslistassa tulee noudattaa merkkijonojen järjestystä alkuperäisessä listassa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"seitsemäs\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ['seitsemäs']"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juhani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisimmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ['emilia', 'juhani']"}]}]}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan iteroinnilla
    • \n
    • Tiedät, miten for-silmukka toimii
    • \n
    • Osaat käyttää for-silmukkaa listojen ja merkkijonojen läpikäyntiin
    • \n

    Voimme käydä listan alkiot läpi while-silmukalla samaan tapaan kuin olemme aiemmin käyneet läpi merkkijonon merkkejä. Esimerkiksi seuraava ohjelma tulostaa kaikki listan alkiot omille riveilleen:

    lista = [3, 2, 4, 5, 2]\n\nkohta = 0\nwhile kohta < len(lista):\n    print(lista[kohta])\n    kohta += 1

    3\n2\n4\n5\n2

    Tämä on kuitenkin melko vaivalloinen tapa, sillä joudumme käyttämään indeksimuuttujaa kohta, joka \"muistaa\", missä kohtaa listaa ollaan menossa. Nyt on aika opetella parempi tapa listan, merkkijonon tai muun vastaavan rakenteen läpikäyntiin.

    for-silmukka

    Pythonin for-silmukka käy läpi annetun rakenteen sisällön. Esimerkiksi voimme käydä läpi kaikki listalla olevat alkiot vasemmalta oikealle. Ohjelmoinnissa tällaista läpikäyntiä kutsutaan myös nimellä iterointi.

    Ideana on, että for-silmukka poimii yksi kerrallaan kunkin alkion ja suorittaa kaikille saman operaation. Näin ohjelmoijan ei tarvitse itse huolehtia, mistä kohdasta alkio haetaan missäkin vaiheessa. Silmukan syntaksi on seuraava:

    for <muuttuja> in <rakenne>:\n    <lohko>

    Kun for-silmukka käy listan läpi, se poimii vuorollaan kunkin alkion, sijoittaa sen muuttujaan ja suorittaa lohkon. Kun silmukka on käynyt kaikki alkiot läpi, ohjelman suoritus jatkuu silmukan jälkeiseltä riviltä.

    \n \n

    Tee ohjelma, joka pyytää käyttäjää syöttämään merkkijonon ja tulostaa sitten merkkijonon kirjaimet yksitellen allekkain.

    Jokaisen kirjaimen jälkeen tulostetaan lisäksi tähti (*) omalle rivilleen.

    Esimerkiksi:

    Anna merkkijono: Python\nP\n*\ny\n*\nt\n*\nh\n*\no\n*\nn\n*

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Funktio range

    Silmukkaa tarvitaan usein myös siihen, että haluamme toistaa jonkin asian tietyn määrän kertoja tai käydä läpi tietyn lukuvälin (esimerkiksi kaikki luvut väliltä 1–100). Myös tämä onnistuu kätevästi for-silmukalla funktion range avulla.

    Voimme kutsua range-funktiota monella tavalla. Yksinkertaisin tapa on range(n), jolloin silmukka käy läpi kokonaisluvut 0:sta lukuun n–1:

    for i in range(5):\n    print(i)

    0\n1\n2\n3\n4

    Kun annamme kaksi parametria, range(a, b) aloittaa luvusta a ja lopettaa lukuun b–1:

    for i in range(3, 7):\n    print(i)

    3\n4\n5\n6

    Kun annamme kolme parametria, range(a, b, c) aloittaa luvusta a, lopettaa lukuun b–1 ja muuttaa lukua c:llä joka askeleella:

    for i in range(1, 9, 2):\n    print(i)

    1\n3\n5\n7

    Voimme myös antaa negatiivisen askeleen, jolloin luvut käydään läpi käänteisesti:

    for i in range(6, 2, -1):\n    print(i)

    6\n5\n4\n3

    Tee ohjelma, joka lukee käyttäjältä positiivisen kokonaisluvun N. Ohjelma tulostaa sen jälkeen luvut väliltä -N...N nollaa lukuunottamatta. Jokainen luku tulostetaan omalle rivilleen.

    Esimerkiksi

    Anna luku: 4\n-4\n-3\n-2\n-1\n1\n2\n3\n4

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Lukuväli listaksi

    Funktio range palauttaa lukuvälin, joka voidaan käydä läpi listan kaltaisesti mutta joka ei kuitenkaan ole lista. Tämän näkee siitä, että jos tulostamme funktion palauttaman arvon, näemme vain kuvauksen lukuvälistä:

    luvut = range(2, 7)\nprint(luvut)

    range(2, 7)

    Tutustumme asiaan tarkemmin Ohjelmoinnin jatkokurssilla, mutta on hyvä tietää, että voimme muuttaa lukuvälin listaksi funktiolla list. Tällöin listaan tulevat kaikki lukuväliin kuuluvat arvot:

    luvut = list(range(2, 7))\nprint(luvut)

    [2, 3, 4, 5, 6]

    Muistutus tehtävien funktioita testaavasta omasta koodista

    Funktiotehtävien tehtäväpohjat ovat tähän asti näyttäneet seuraavilta:

    # tee ratkaisu tänne\n# funktiota kannattaa testata kutsumalla sitä täällä seuraavasti\nif __name__ == \"__main__\":\n    lause = \"olipa kerran kauan sitten ohjelmoija\"\n    print(eka_sana(lause))\n    print(toka_sana(lause))\n    print(vika_sana(lause))

    Tästä eteenpäin muistutusta siitä, että testikoodi on sijoitettava if __name__ == \"__main__\" -lohkoon, ei tehtäväpohjissa enää ole. Testit kuitenkin vaativat lohkon edelleen, eli joudut lisäämään sen itse.

    Huomaa kuitenkin, että jotkut tehtävät, esim. hetken kuluttua vuorossa oleva Palindromit, edellyttävät funktioiden lisäksi myös funktiota kutsuvaa koodia. Tätä koodia ei tule sijoittaa if __name__ == \"__main__\" -lohkon sisälle. Testit eivät nimittäin suorita mitään kyseisen lohkon koodista.

    Tee funktio lista_tahtina, joka saa parametriksi listan kokonaislukuja. Funktio tulostaa joukon tähtirivejä siten, että listalla olevat luvut kertovat kunkin rivin tähtimäärän.

    Esim. kutsuttaessa lista_tahtina([3, 7, 1, 1, 2]) tulostus on:

    \n***\n*******\n*\n*\n**\n

    Tee funktio anagrammi joka saa parametriksi kaksi merkkijonoa. Funktio palauttaa True, jos merkkijonot ovat anagrammeja eli ne muodostuvat täsmälleen samoista kirjaimista.

    Esimerkiksi funktiota voisi käyttää näin:

    print(anagrammi(\"talo\", \"tola\")) # True\nprint(anagrammi(\"talo\", \"lato\")) # True\nprint(anagrammi(\"talo\", \"olat\")) # True\nprint(anagrammi(\"tammi\", \"mitta\")) # False\nprint(anagrammi(\"python\", \"java\")) # False

    Vihje: funktio sorted toimii myös merkkijonoille.

    Tee funktio palindromi, joka saa parametriksi merkkijonon ja palauttaa True, jos merkkijono on palindromi (eli samansisältöinen luettuna alusta loppuun tai lopusta alkuun).

    Tee myös funktiota hyödyntävä pääohjelma, joka kyselee käyttäjältä sanoja niin kauan, kunnes käyttäjä syöttää palindromin:

    Anna palindromi: python\nei ollut palindromi\nAnna palindromi: java\nei ollut palindromi\nAnna palindromi: kauppias\nei ollut palindromi\nAnna palindromi: saippuakauppias\nsaippuakauppias on palindromi!

    Huomaa, että pääohjelmaa ei tule kirjoittaa\nif __name__ == \"__main__\":-lohkon sisälle

    Tee funktio positiivisten_summa, joka saa parametriksi kokonaislukuja sisältävän listan.

    Funktio palauttaa listan positiivisten lukujen summan.

    lista = [1, -2, 3, -4, 5]\nvastaus = positiivisten_summa(lista)\nprint(\"vastaus\", vastaus)

    vastaus 9

    Kertaa nyt tarvittaessa edellisen osion luku Lista funktion parametrina ja paluuarvona!

    Tee funktio parilliset, joka saa parametriksi kokonaislukuja sisältävän listan.

    Funktio palauttaa uuden listan, jolla on parametrina olevan listan sisältämät parilliset luvut.

    lista = [1, 2, 3, 4, 5]\nuusi_lista = parilliset(lista)\nprint(\"alkuperäinen\", lista)\nprint(\"uusi\", uusi_lista)

    alkuperäinen [1, 2, 3, 4, 5]\nuusi [2, 4]

    Tee funktio summa, joka saa parametriksi kaksi kokonaislukuja sisältävää listaa. Molemmissa listoissa on sama määrä alkioita.

    Funktio palauttaa uuden listan, jonka alkiot muodostuvat parametreina olevien listojen alkioiden summista.

    Esim:

    a = [1, 2, 3]\nb = [7, 8, 9]\nprint(summa(a, b)) # [8, 10, 12]

    Tee funktio uniikit, joka saa parametriksi kokonaislukuja sisältävän listan.

    Funktio palauttaa uuden listan, joka sisältää parametrina annetun listan luvut suuruusjärjestyksessä siten, että jokainen luku on listalla vain kerran.

    lista = [3, 2, 2, 1, 3, 3, 1]\nprint(uniikit(lista)) # [1, 2, 3]

    Parhaan tai huonoimman etsiminen listalta

    Ohjelmoinnissa tulee usein esiin tilanne, missä listalta on löydettävä jonkin kriteerin mukaan paras tai huonoin alkio. Ratkaisu onnistuu käyttämällä sopivaa apumuuttujaa, jonka avulla voidaan \"muistaa\" läpikäynnin aikana siihen mennessä löytynyt paras alkio. Tätä muistettavaa alkiota verrataan sitten yksi kerrallaan jokaiseen vastaantulevaan alkioon, ja lopulta on tiedossa koko listan paras.

    Algoritmin \"luonnos\" on seuraavassa:

    paras = alkuarvo # sopiva alkuarvo riippuu tilanteesta\nfor alkio in lista:\n    if alkio parempi kuin paras:\n        paras = alkio\n\n# paras on nyt tiedossa!

    Koodin yksityiskohdat riippuvat siitä minkä tyyppisiä alkioita listalla on ja mikä parhauden/huonouden vertailukriteeri on käytössä. Joissain tilanteissa myös apumuuttujia saatetaan tarvita useampia.

    Harjoitellaan hieman tämän ratkaisumenetelmän käyttöä.

    Tee funktio pisimman_pituus, joka saa parametriksi listan merkkijonoja. Funktio palauttaa tiedon mikä on listan pisimmän merkkijonon pituus.

    lista = [\"eka\", \"toka\", \"kolmas\", \"seitsemäs\"]\n\ntulos = pisimman_pituus(lista)\nprint(tulos)
    lista = [\"pekka\", \"emilia\", \"venla\", \"eero\", \"antti\", \"juhani\"]\n\ntulos = pisimman_pituus(lista)\nprint(tulos)

    9\n6

    Tee funktio lyhin, joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan lyhimmän merkkijonon. Jos samanpituisia on useita (testeissä näin ei ole), voi funktio palauttaa niistä minkä vaan. Funktio voi olettaa että listalla ei ole tyhjiä eli nollan pituisia merkkijonoja.

    lista = [\"eka\", \"toka\", \"kolmas\", \"seitsemäs\"]\n\ntulos = lyhin(lista)\nprint(tulos)
    lista = [\"pekka\", \"emilia\", \"johanna\", \"venla\", \"eero\", \"antti\"]\n\ntulos = lyhin(lista)\nprint(tulos)

    eka\neero

    Tee funktio pisimmat, joka saa parametriksi listan merkkijonoja. Funktio palauttaa listan, joka sisältää parametrina annetun listan pisimmän merkkijonon. Jos pisimpiä merkkijonoja on useampia, funktio palauttaa ne kaikki listassa.

    Merkkijonojen järjestyksen tuloslistassa tulee noudattaa merkkijonojen järjestystä alkuperäisessä listassa.

    lista = [\"eka\", \"toka\", \"kolmas\", \"seitsemäs\"]\n\ntulos = pisimmat(lista)\nprint(tulos) # ['seitsemäs']
    lista = [\"pekka\", \"emilia\", \"venla\", \"eero\", \"antti\", \"juhani\"]\n\ntulos = pisimmat(lista)\nprint(tulos) # ['emilia', 'juhani']
    ","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/4-silmukat-ja-iterointi.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/5-tulostuksen-muotoilu/page-data.json b/page-data/osa-4/5-tulostuksen-muotoilu/page-data.json index 59fcf8e1f..5a3ea33e5 100644 --- a/page-data/osa-4/5-tulostuksen-muotoilu/page-data.json +++ b/page-data/osa-4/5-tulostuksen-muotoilu/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-4/5-tulostuksen-muotoilu", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon tulostusta saa muokattua parametrien avulla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää f-merkkijonoja tulosteen muotoilussa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän mennessä yhdistelleet tulostettavaa tietoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa kolmella eri tavalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen tapa on käyttää merkkijonojen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattoria ja muodostaa näin yksittäinen merkkijono, jonka print saa parametrikseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ikäsi on \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" vuotta\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tapa edellyttää, että kaikki yhdistettävät osat ovat merkkijonoja. Koska muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ika"}]},{"type":"text","value":" on tyypiltään kokonaisluku, se on muutettu yhdistämistä varten merkkijonoksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen käyttämämme tapa on eritellä tulostuksen osat pilkulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikäsi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuotta\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän koodin lopputulos on sama kuin edellisen esimerkin. Näin käytettynä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" tulostaa kaikki parametrinsa välilyönnillä eroteltuna. Etuna tässä tavassa on, että tulostettavat osat voivat olla eri tyyppisiä eli tyyppimuunnosta merkkijonoksi ei tarvita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Automaattisesta välilyönnistä pilkulla eriteltyjen osien välillä on mahdollista päästä eroon antamalla funktiolle parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sep"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikäsi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuotta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sep"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on nyt seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HeiErkkiikäsi on39vuotta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sep=\"\""}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimetty parametri"}]},{"type":"text","value":", joka määrittelee, että pilkulla eroteltujen osien väliin laitetaan ainoastaan tyhjä merkkijono. Voisimme myös saada jokaisen osan tulostumaan omalle rivilleen määrittelemällä erottimeksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"text","value":" eli rivinvaihtoa kuvaavan merkin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikäsi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuotta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sep"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei\nErkki\nikäsi on\n39\nvuotta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvoisesti print-komento päättyy rivinvaihtoon, mutta tätä voidaan muokata parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"end"}]},{"type":"text","value":" avulla. Esim. jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"end"}]},{"type":"text","value":" saa arvoksi tyhjän merkkijonon, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komento ei aiheuta automaattista rivinvaihtoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"f-merkkijonot","style":"position:relative;"},"children":[{"type":"text","value":"f-merkkijonot"},{"type":"element","tagName":"a","properties":{"href":"#f-merkkijonot","ariaLabel":"f merkkijonot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmas käyttämämme tapa on f-merkkijonot. Aiempi nimen ja iän tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Hei "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ikäsi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" vuotta\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme toistaiseksi käyttäneet f-merkkijonoja vain niiden yksinkertaisimmassa muodossa. F-merkkijonot tarjoavat kuitenkin monia muitakin mahdollisuuksia tulostuksen muotoiluun. Yksi tavallinen käyttötapa on antaa liukuluvun tulostuksessa näytettävien desimaalien määrä. Oletusarvoisesti tulostuu jokin määrä desimaaleja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku on 0.333333333333333"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saamme määriteltyä tulostuvien desimaalien määrän f-merkkijonon avulla. Tulostuksen muoto määritellään lisäämällä aaltosulkeiden sisään tulostettavan muuttujan jälkeen kaksoispiste ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muotoiluohje"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":".2f"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"Luku on "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.33"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muotoiluohje "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":".2f"}]},{"type":"text","value":" siis määrittelee, että desimaaliluku tulostetaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kahden desimaalin"}]},{"type":"text","value":" tarkkuudella. Kirjain "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"f"}]},{"type":"text","value":" luvun 2 jälkeen tarkoittaa, että muotoiluohje koskee desimaalilukua eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":"-tyyppistä arvoa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on vielä toisenlainen esimerkki, jossa tulostetaan nimiä 15 merkin levyiseen tekstialueeseen, ensin vasemmalle sisennettynä ja sen jälkeen oikealle sisennettynä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juha-Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maya\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" keskellä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":">15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"Antti keskellä Antti\nEmilia keskellä Emilia\nJuha"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"Pekka keskellä Juha"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"Pekka\nMaya keskellä Maya"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"F-merkkijonoja voi käyttää muuallakin kuin tulostuskomennossa. Niitä voi esimerkiksi sijoittaa muuttujiin ja sekä yhdistellä normaaleihin merkkijonoihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"59"}]},{"type":"text","value":"\nkaupunki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lappeenranta\""}]},{"type":"text","value":"\ntervehdys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Hei "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", olet "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"-vuotias\""}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tervehdys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\", asuinpaikkasi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kaupunki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien \"parametrien\" perusteella."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lukulistasta merkkijonolistaksi","tmcname":"osa04-20_lukulistasta_merkkijonolistaksi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"muotoile"}]},{"type":"text","value":", joka saa parametrikseen liukulukuja sisältävän listan. Funktio muodostaa listan perusteella uuden merkkijonoja sisältävän listan, jossa jokainen liukulukulistan alkio esitetään pyöristettynä kahden desimaalin tarkkuuteen. Listan alkioiden järjestyksen tulee säilyä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Vinkki: Käytä liukulukujen muotoiluun merkkijonoiksi f-merkkijonoa."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.234"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.3333"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.11111"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.446"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" muotoile"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['1.23', '0.33', '0.11', '3.45']"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"aae62107-cdf7-5af8-9256-b057a53d522b"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten print-komennon tulostusta saa muokattua parametrien avulla
    • \n
    • Osaat käyttää f-merkkijonoja tulosteen muotoilussa
    • \n

    Olemme tähän mennessä yhdistelleet tulostettavaa tietoa print-komennossa kolmella eri tavalla.

    Ensimmäinen tapa on käyttää merkkijonojen +-operaattoria ja muodostaa näin yksittäinen merkkijono, jonka print saa parametrikseen:

    nimi = \"Erkki\"\nika = 39\nprint(\"Hei \" + nimi + \" ikäsi on \" + str(ika) + \" vuotta\" )

    Tämä tapa edellyttää, että kaikki yhdistettävät osat ovat merkkijonoja. Koska muuttuja ika on tyypiltään kokonaisluku, se on muutettu yhdistämistä varten merkkijonoksi funktiolla str.

    Toinen käyttämämme tapa on eritellä tulostuksen osat pilkulla:

    print(\"Hei\", nimi, \"ikäsi on\", ika, \"vuotta\" )

    Tämän koodin lopputulos on sama kuin edellisen esimerkin. Näin käytettynä print tulostaa kaikki parametrinsa välilyönnillä eroteltuna. Etuna tässä tavassa on, että tulostettavat osat voivat olla eri tyyppisiä eli tyyppimuunnosta merkkijonoksi ei tarvita.

    Automaattisesta välilyönnistä pilkulla eriteltyjen osien välillä on mahdollista päästä eroon antamalla funktiolle parametri sep:

    print(\"Hei\", nimi, \"ikäsi on\", ika, \"vuotta\", sep=\"\")

    Tulostus on nyt seuraava:

    HeiErkkiikäsi on39vuotta

    Parametri sep=\"\" on nimetty parametri, joka määrittelee, että pilkulla eroteltujen osien väliin laitetaan ainoastaan tyhjä merkkijono. Voisimme myös saada jokaisen osan tulostumaan omalle rivilleen määrittelemällä erottimeksi \"\\n\" eli rivinvaihtoa kuvaavan merkin:

    print(\"Hei\", nimi, \"ikäsi on\", ika, \"vuotta\", sep=\"\\n\")

    Hei\nErkki\nikäsi on\n39\nvuotta

    Oletusarvoisesti print-komento päättyy rivinvaihtoon, mutta tätä voidaan muokata parametrin end avulla. Esim. jos end saa arvoksi tyhjän merkkijonon, print-komento ei aiheuta automaattista rivinvaihtoa:

    print(\"Moi \", end=\"\")\nprint(\"kaikki!\")

    Moi kaikki!

    f-merkkijonot

    Kolmas käyttämämme tapa on f-merkkijonot. Aiempi nimen ja iän tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:

    nimi = \"Erkki\"\nika = 39\nprint(f\"Hei {nimi} ikäsi on {ika} vuotta\")

    Olemme toistaiseksi käyttäneet f-merkkijonoja vain niiden yksinkertaisimmassa muodossa. F-merkkijonot tarjoavat kuitenkin monia muitakin mahdollisuuksia tulostuksen muotoiluun. Yksi tavallinen käyttötapa on antaa liukuluvun tulostuksessa näytettävien desimaalien määrä. Oletusarvoisesti tulostuu jokin määrä desimaaleja:

    luku = 1/3\nprint(f\"Luku on {luku}\")

    Luku on 0.333333333333333

    Saamme määriteltyä tulostuvien desimaalien määrän f-merkkijonon avulla. Tulostuksen muoto määritellään lisäämällä aaltosulkeiden sisään tulostettavan muuttujan jälkeen kaksoispiste ja muotoiluohje:

    luku = 1/3\nprint(f\"Luku on {luku:.2f}\")
    Luku on 0.33

    Muotoiluohje .2f siis määrittelee, että desimaaliluku tulostetaan kahden desimaalin tarkkuudella. Kirjain f luvun 2 jälkeen tarkoittaa, että muotoiluohje koskee desimaalilukua eli float-tyyppistä arvoa!

    Tässä on vielä toisenlainen esimerkki, jossa tulostetaan nimiä 15 merkin levyiseen tekstialueeseen, ensin vasemmalle sisennettynä ja sen jälkeen oikealle sisennettynä:

    nimet =  [ \"Antti\", \"Emilia\", \"Juha-Pekka\", \"Maya\" ]\nfor nimi in nimet:\n  print(f\"{nimi:15} keskellä {nimi:>15}\")
    Antti           keskellä           Antti\nEmilia          keskellä          Emilia\nJuha-Pekka      keskellä      Juha-Pekka\nMaya            keskellä            Maya

    F-merkkijonoja voi käyttää muuallakin kuin tulostuskomennossa. Niitä voi esimerkiksi sijoittaa muuttujiin ja sekä yhdistellä normaaleihin merkkijonoihin:

    nimi = \"Pekka\"\nika = 59\nkaupunki = \"Lappeenranta\"\ntervehdys = f\"Hei {nimi}, olet {ika}-vuotias\"\nprint(tervehdys + f\", asuinpaikkasi on {kaupunki}\")

    Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta

    F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien \"parametrien\" perusteella.

    Kirjoita funktio muotoile, joka saa parametrikseen liukulukuja sisältävän listan. Funktio muodostaa listan perusteella uuden merkkijonoja sisältävän listan, jossa jokainen liukulukulistan alkio esitetään pyöristettynä kahden desimaalin tarkkuuteen. Listan alkioiden järjestyksen tulee säilyä.

    Vinkki: Käytä liukulukujen muotoiluun merkkijonoiksi f-merkkijonoa.

    Esimerkki funktion käytöstä:

    lista = [1.234, 0.3333, 0.11111, 3.446]\nlista2 = muotoile(lista)\nprint(lista2)

    ['1.23', '0.33', '0.11', '3.45']

    ","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/5-tulostuksen-muotoilu.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennon tulostusta saa muokattua parametrien avulla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää f-merkkijonoja tulosteen muotoilussa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän mennessä yhdistelleet tulostettavaa tietoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa kolmella eri tavalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäinen tapa on käyttää merkkijonojen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"-operaattoria ja muodostaa näin yksittäinen merkkijono, jonka print saa parametrikseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" ikäsi on \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" vuotta\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tapa edellyttää, että kaikki yhdistettävät osat ovat merkkijonoja. Koska muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ika"}]},{"type":"text","value":" on tyypiltään kokonaisluku, se on muutettu yhdistämistä varten merkkijonoksi funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen käyttämämme tapa on eritellä tulostuksen osat pilkulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikäsi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuotta\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän koodin lopputulos on sama kuin edellisen esimerkin. Näin käytettynä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":" tulostaa kaikki parametrinsa välilyönnillä eroteltuna. Etuna tässä tavassa on, että tulostettavat osat voivat olla eri tyyppisiä eli tyyppimuunnosta merkkijonoksi ei tarvita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Automaattisesta välilyönnistä pilkulla eriteltyjen osien välillä on mahdollista päästä eroon antamalla funktiolle parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sep"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikäsi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuotta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sep"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus on nyt seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HeiErkkiikäsi on39vuotta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametri "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sep=\"\""}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimetty parametri"}]},{"type":"text","value":", joka määrittelee, että pilkulla eroteltujen osien väliin laitetaan ainoastaan tyhjä merkkijono. Voisimme myös saada jokaisen osan tulostumaan omalle rivilleen määrittelemällä erottimeksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"text","value":" eli rivinvaihtoa kuvaavan merkin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikäsi on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuotta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sep"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei\nErkki\nikäsi on\n39\nvuotta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvoisesti print-komento päättyy rivinvaihtoon, mutta tätä voidaan muokata parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"end"}]},{"type":"text","value":" avulla. Esim. jos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"end"}]},{"type":"text","value":" saa arvoksi tyhjän merkkijonon, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komento ei aiheuta automaattista rivinvaihtoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"f-merkkijonot","style":"position:relative;"},"children":[{"type":"text","value":"f-merkkijonot"},{"type":"element","tagName":"a","properties":{"href":"#f-merkkijonot","ariaLabel":"f merkkijonot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmas käyttämämme tapa on f-merkkijonot. Aiempi nimen ja iän tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Hei "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ikäsi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" vuotta\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme toistaiseksi käyttäneet f-merkkijonoja vain niiden yksinkertaisimmassa muodossa. F-merkkijonot tarjoavat kuitenkin monia muitakin mahdollisuuksia tulostuksen muotoiluun. Yksi tavallinen käyttötapa on antaa liukuluvun tulostuksessa näytettävien desimaalien määrä. Oletusarvoisesti tulostuu jokin määrä desimaaleja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luku on 0.333333333333333"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saamme määriteltyä tulostuvien desimaalien määrän f-merkkijonon avulla. Tulostuksen muoto määritellään lisäämällä aaltosulkeiden sisään tulostettavan muuttujan jälkeen kaksoispiste ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muotoiluohje"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":".2f"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"Luku on "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.33"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muotoiluohje "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":".2f"}]},{"type":"text","value":" siis määrittelee, että desimaaliluku tulostetaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kahden desimaalin"}]},{"type":"text","value":" tarkkuudella. Kirjain "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"f"}]},{"type":"text","value":" luvun 2 jälkeen tarkoittaa, että muotoiluohje koskee desimaalilukua eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":"-tyyppistä arvoa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä on vielä toisenlainen esimerkki, jossa tulostetaan nimiä 15 merkin levyiseen tekstialueeseen, ensin vasemmalle sisennettynä ja sen jälkeen oikealle sisennettynä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juha-Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maya\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" keskellä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":">15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"Antti keskellä Antti\nEmilia keskellä Emilia\nJuha"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"Pekka keskellä Juha"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"Pekka\nMaya keskellä Maya"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"F-merkkijonoja voi käyttää muuallakin kuin tulostuskomennossa. Niitä voi esimerkiksi sijoittaa muuttujiin ja sekä yhdistellä normaaleihin merkkijonoihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"59"}]},{"type":"text","value":"\nkaupunki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lappeenranta\""}]},{"type":"text","value":"\ntervehdys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Hei "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", olet "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"-vuotias\""}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tervehdys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\", asuinpaikkasi on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kaupunki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien \"parametrien\" perusteella."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lukulistasta merkkijonolistaksi","tmcname":"osa04-20_lukulistasta_merkkijonolistaksi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"muotoile"}]},{"type":"text","value":", joka saa parametrikseen liukulukuja sisältävän listan. Funktio muodostaa listan perusteella uuden merkkijonoja sisältävän listan, jossa jokainen liukulukulistan alkio esitetään pyöristettynä kahden desimaalin tarkkuuteen. Listan alkioiden järjestyksen tulee säilyä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Vinkki: Käytä liukulukujen muotoiluun merkkijonoiksi f-merkkijonoa."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.234"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.3333"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.11111"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3.446"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" muotoile"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['1.23', '0.33', '0.11', '3.45']"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"aae62107-cdf7-5af8-9256-b057a53d522b"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten print-komennon tulostusta saa muokattua parametrien avulla
    • \n
    • Osaat käyttää f-merkkijonoja tulosteen muotoilussa
    • \n

    Olemme tähän mennessä yhdistelleet tulostettavaa tietoa print-komennossa kolmella eri tavalla.

    Ensimmäinen tapa on käyttää merkkijonojen +-operaattoria ja muodostaa näin yksittäinen merkkijono, jonka print saa parametrikseen:

    nimi = \"Erkki\"\nika = 39\nprint(\"Hei \" + nimi + \" ikäsi on \" + str(ika) + \" vuotta\" )

    Tämä tapa edellyttää, että kaikki yhdistettävät osat ovat merkkijonoja. Koska muuttuja ika on tyypiltään kokonaisluku, se on muutettu yhdistämistä varten merkkijonoksi funktiolla str.

    Toinen käyttämämme tapa on eritellä tulostuksen osat pilkulla:

    print(\"Hei\", nimi, \"ikäsi on\", ika, \"vuotta\" )

    Tämän koodin lopputulos on sama kuin edellisen esimerkin. Näin käytettynä print tulostaa kaikki parametrinsa välilyönnillä eroteltuna. Etuna tässä tavassa on, että tulostettavat osat voivat olla eri tyyppisiä eli tyyppimuunnosta merkkijonoksi ei tarvita.

    Automaattisesta välilyönnistä pilkulla eriteltyjen osien välillä on mahdollista päästä eroon antamalla funktiolle parametri sep:

    print(\"Hei\", nimi, \"ikäsi on\", ika, \"vuotta\", sep=\"\")

    Tulostus on nyt seuraava:

    HeiErkkiikäsi on39vuotta

    Parametri sep=\"\" on nimetty parametri, joka määrittelee, että pilkulla eroteltujen osien väliin laitetaan ainoastaan tyhjä merkkijono. Voisimme myös saada jokaisen osan tulostumaan omalle rivilleen määrittelemällä erottimeksi \"\\n\" eli rivinvaihtoa kuvaavan merkin:

    print(\"Hei\", nimi, \"ikäsi on\", ika, \"vuotta\", sep=\"\\n\")

    Hei\nErkki\nikäsi on\n39\nvuotta

    Oletusarvoisesti print-komento päättyy rivinvaihtoon, mutta tätä voidaan muokata parametrin end avulla. Esim. jos end saa arvoksi tyhjän merkkijonon, print-komento ei aiheuta automaattista rivinvaihtoa:

    print(\"Moi \", end=\"\")\nprint(\"kaikki!\")

    Moi kaikki!

    f-merkkijonot

    Kolmas käyttämämme tapa on f-merkkijonot. Aiempi nimen ja iän tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:

    nimi = \"Erkki\"\nika = 39\nprint(f\"Hei {nimi} ikäsi on {ika} vuotta\")

    Olemme toistaiseksi käyttäneet f-merkkijonoja vain niiden yksinkertaisimmassa muodossa. F-merkkijonot tarjoavat kuitenkin monia muitakin mahdollisuuksia tulostuksen muotoiluun. Yksi tavallinen käyttötapa on antaa liukuluvun tulostuksessa näytettävien desimaalien määrä. Oletusarvoisesti tulostuu jokin määrä desimaaleja:

    luku = 1/3\nprint(f\"Luku on {luku}\")

    Luku on 0.333333333333333

    Saamme määriteltyä tulostuvien desimaalien määrän f-merkkijonon avulla. Tulostuksen muoto määritellään lisäämällä aaltosulkeiden sisään tulostettavan muuttujan jälkeen kaksoispiste ja muotoiluohje:

    luku = 1/3\nprint(f\"Luku on {luku:.2f}\")
    Luku on 0.33

    Muotoiluohje .2f siis määrittelee, että desimaaliluku tulostetaan kahden desimaalin tarkkuudella. Kirjain f luvun 2 jälkeen tarkoittaa, että muotoiluohje koskee desimaalilukua eli float-tyyppistä arvoa!

    Tässä on vielä toisenlainen esimerkki, jossa tulostetaan nimiä 15 merkin levyiseen tekstialueeseen, ensin vasemmalle sisennettynä ja sen jälkeen oikealle sisennettynä:

    nimet =  [ \"Antti\", \"Emilia\", \"Juha-Pekka\", \"Maya\" ]\nfor nimi in nimet:\n  print(f\"{nimi:15} keskellä {nimi:>15}\")
    Antti           keskellä           Antti\nEmilia          keskellä          Emilia\nJuha-Pekka      keskellä      Juha-Pekka\nMaya            keskellä            Maya

    F-merkkijonoja voi käyttää muuallakin kuin tulostuskomennossa. Niitä voi esimerkiksi sijoittaa muuttujiin ja sekä yhdistellä normaaleihin merkkijonoihin:

    nimi = \"Pekka\"\nika = 59\nkaupunki = \"Lappeenranta\"\ntervehdys = f\"Hei {nimi}, olet {ika}-vuotias\"\nprint(tervehdys + f\", asuinpaikkasi on {kaupunki}\")

    Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta

    F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien \"parametrien\" perusteella.

    Kirjoita funktio muotoile, joka saa parametrikseen liukulukuja sisältävän listan. Funktio muodostaa listan perusteella uuden merkkijonoja sisältävän listan, jossa jokainen liukulukulistan alkio esitetään pyöristettynä kahden desimaalin tarkkuuteen. Listan alkioiden järjestyksen tulee säilyä.

    Vinkki: Käytä liukulukujen muotoiluun merkkijonoiksi f-merkkijonoa.

    Esimerkki funktion käytöstä:

    lista = [1.234, 0.3333, 0.11111, 3.446]\nlista2 = muotoile(lista)\nprint(lista2)

    ['1.23', '0.33', '0.11', '3.45']

    ","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/5-tulostuksen-muotoilu.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/6-lisaa-rakenteista/page-data.json b/page-data/osa-4/6-lisaa-rakenteista/page-data.json index 90f2a85a2..bf8ad7dfb 100644 --- a/page-data/osa-4/6-lisaa-rakenteista/page-data.json +++ b/page-data/osa-4/6-lisaa-rakenteista/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-4/6-lisaa-rakenteista", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet lisää tapoja erottaa osia merkkijonosta tai listasta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mitä tarkoittaa merkkijonon muuttumattomuus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää metodeita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme käyttäneet aiemmin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":"-syntaksia merkkijonon osajonon erottamiseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"merk"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama syntaksi toimii myös listoissa, ja voimme erottaa sen avulla listan osan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[4, 6, 1, 2]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-erottamisesta","style":"position:relative;"},"children":[{"type":"text","value":"Lisää erottamisesta"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-erottamisesta","ariaLabel":"lisaa erottamisesta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse asiassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":"-syntaksi toimii hyvin samalla periaatteella kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktio, eli voimme antaa sille myös askeleen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eiek\n[7, 6, 5, 4]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos emme anna jotain arvoa, oletuksena koko sisältö valitaan mukaan. Tämän avulla voimme tehdä seuraavan lyhyen ohjelman, joka kääntää merkkijonon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirjoita merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"esimerkki"}]},{"type":"text","value":"\nikkremise"}]}]},{"type":"comment","value":"vastaava varoitusteksti löytyy osioista 3-4, 4-6 ja 5-1, tsekkaa kaikki jos muokkaat"},{"type":"element","tagName":"h2","properties":{"id":"varoitus-globaalin-muuttujan-kaytto-funktion-sisalla","style":"position:relative;"},"children":[{"type":"text","value":"Varoitus: globaalin muuttujan käyttö funktion sisällä"},{"type":"element","tagName":"a","properties":{"href":"#varoitus-globaalin-muuttujan-kaytto-funktion-sisalla","ariaLabel":"varoitus globaalin muuttujan kaytto funktion sisalla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden sisällä on mahdollista määritellä muuttujia, mutta tämän lisäksi funktio näkee sen ulkopuolella pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"globaaleiksi"}]},{"type":"text","value":" muuttujiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\nnimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":" olevat nimet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaikki funktiota testaava koodi tämän lohkon sisälle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\n nimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt myös globaalin muuttujan määrittely on siirtynyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TMC-testit suoritetaan aina siten, että mitään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkon sisällä olevaa koodia ei suoriteta. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":", jota ei testejä suoritettaessa ole lainkaan olemassa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaikki väärinpäin","tmcname":"osa04-21_kaikki_vaarinpain"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki_vaarinpain"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja. Funktio luo ja palauttaa uuden listan, jossa kaikki alkuperäisellä listalla olevat merkkijonot on käännetty. Myös listan alkioiden järjestys muutetaan käänteiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vielä yksi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kaikki_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['isky äleiv', 'ikkremise', 'ikkiak', 'ioM']"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijonoa-ei-voi-muuttaa","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijonoa ei voi muuttaa"},{"type":"element","tagName":"a","properties":{"href":"#merkkijonoa-ei-voi-muuttaa","ariaLabel":"merkkijonoa ei voi muuttaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonoilla ja listoilla on paljon yhteistä, ja useimmat operaatiot toimivat samalla tavalla sekä merkkijonoille että listoille. Kuitenkin erona on, että merkkijonoa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei voi muuttaa"}]},{"type":"text","value":". Esimerkiksi seuraava koodi ei toimi tarkoitetulla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"text","value":"\nmjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska merkkijonoa ei voi muuttaa, ohjelman suoritus aiheuttaa virheen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: 'str' object does not support item assignment"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samankaltainen virhe seuraa, jos yritetään esimerkiksi järjestää merkkijonoa järjestykseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":"-metodilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka merkkijonoa ei voi muuttaa, voimme silti sijoittaa merkkijonon paikalle toisen merkkijonon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Onkin tärkeää huomata ero seuraavien esimerkkien välillä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 271px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/4_4_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 70.43478260869564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVQ4y5WT66rCQAyE9337w8eT/hEfQVCs4K2iWO+1VevdyDewBxE91EDYbHZ3Opmkbj6fWxzH1uv1bDab2Xa7tTzPLUkSW61WtlgslJ9Op4bd73d7PB5f3RVFIQB8v98rebvd7HA42G63U471eDxaGXP2g202G1WwXq/l7zHn7nK5iAFMKQd2+PV61Up+MBjY6XRS6TBFCkCIAVkul6qIveNStVq1Wq2mi/1+37rdrpy42WxapVKRzoB7KXgMkM/RC5XsNYPpu+AYTHH24/FYmtIw3APRMD5C2c4/xD517fUMVoDA6puXbsor+L9dRsPRaGTD4VDUKQtt/LiwZ6TKzKDmkId+HNI0tSzLBISmOGDn87n0aP1UMqMDOOu32NFB3+FPxgTAnBVZqAaJkIL8ZDLR3g+4o+1hGFq9XtccMn+dTkdO3Gg0LAgCgdFFAACCAHJABnZIppL5MgckiCmNy74BXIYVZ61WS38Na7vd1keiKPrLs38CMo80d8OuAIYAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/a0b58/4_4_1.webp 230w","/static/8b07a257ace229cc26a5eedf03a60986/cadab/4_4_1.webp 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/81c8e/4_4_1.png 230w","/static/8b07a257ace229cc26a5eedf03a60986/5fce1/4_4_1.png 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/4_4_1.png","alt":"4 4 1","title":"4 4 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi\""}]},{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]}]}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 281px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/4_4_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 85.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAABpklEQVQ4y52UWYsCQQyE+2eL/8xnQVAQHxXvA+/7vq3lC2TpHca9AmEy6e50qiozYblcqtfrqd/vazabab/f63A4qNvtqtlsajqd6nQ6CXu9Xj96oACFFouF1uu1rterHo+HFaEY6775Nxb0B9tut1qtVnbxZrMxJ8ZBejweFW63m0E8n8/WHc4CTpcUqdVqtmc+n4v98R7iy+Wi+/2uyWSi0Ol0lMvlVCgUVCqVLAl3rVbLeKxWq8pms2IfBdzG47HlYoM2g+y84e8MDkejkcEDNg5Mj8lbh0myXYDn8/npnudCIDvsOPamgm92o8A7RTnA+ndIAqMBZ41GQ4PBwMaE9uGw3W5bHmjkd7udjRhCvZvLLyqjlsN0lV1B/N9z+A4yl/vFziGxO2vWIfOFIzvvaXwSc8ARsA8UPJ1XEwU+isWi8vm8yuWyjcZwOLQb446BHOc4zJeSFCgVMp3ydfDDiDuGU4RBIP+JuFj+DGlKuUFDvV43xZkEOiKH6sT+bfOOMwEhrViycKVSUSaTsWJuFEpSkwo5LhTHHIQKN+DyTt4bgOcPk2YlBJdlLTcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/a0b58/4_4_2.webp 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/f44a8/4_4_2.webp 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/81c8e/4_4_2.png 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/4_4_2.png 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/4_4_2.png","alt":"4 4 2","title":"4 4 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisessä esimerkissä listan sisältö muuttuu. Toisessa esimerkissä alkuperäinen merkkijono korvataan toisella merkkijonolla. Alkuperäinen merkkijono jää muistiin, mutta siihen ei enää ole viittausta, joten sitä ei voi enää käyttää ohjelmassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän palataan tarkemmin ensi viikolla, kun viittauksia listoihin käsitellään tarkemmin."}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-metodeita","style":"position:relative;"},"children":[{"type":"text","value":"Lisää metodeita"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-metodeita","ariaLabel":"lisaa metodeita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" avulla voidaan laskea osajonon esiintymien määrä. Metodi toimii samaan tapaan sekä merkkijonon että listan kanssa. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"si\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" ei laske päällekkäisiä esiintymiä. Esimerkiksi metodin mukaan merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aaaa"}]},{"type":"text","value":" esiintyy kaksi kertaa osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aa"}]},{"type":"text","value":", vaikka oikeastaan esiintymiä olisi kolme, jos päällekkäiset esiintymät sallitaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":" avulla voidaan muodostaa uusi merkkijono, jossa tietty merkkijono on korvattu toisella merkkijonolla. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki\""}]},{"type":"text","value":"\nuusi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei kaikki"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi korvaa kaikki merkkijonon esiintymät:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei heilan löysin minä heinikosta hei\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"HEI\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HEI HEIlan löysin minä HEInikosta HEI"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyypillinen virhe "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":"-metodia käytettäessä on unohtaa, että merkkijonot ovat muuttumattomia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python on kivaa\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korvataan alijono, muttei tallenneta tulosta mihinkään..."}]},{"type":"text","value":"\nmjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python on kivaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos vanhaa jonoa ei tarvita, voidaan uusi jono sijoittaa samaan muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python on kivaa\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korvataan alijono, tallennetaan tulos samaan muuttujaan"}]},{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Java on kivaa"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Eniten kirjaimia","tmcname":"osa04-22_eniten_kirjaimia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eniten_kirjainta"}]},{"type":"text","value":", joka saa parametrikseen merkkijonon. Funktio palauttaa kirjaimen, jota esiintyy eniten merkkijonossa. Jos yhtä yleisiä kirjaimia on monta, funktion tulee palauttaa niistä ensimmäisenä merkkijonossa esiintyvä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcbdbe\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_kirjainta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntoinen_jono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkkimerkkijonokki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_kirjainta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toinen_jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"b\nk"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vokaalit pois","tmcname":"osa04-23_vokaalit_pois"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ilman_vokaaleja"}]},{"type":"text","value":", joka saa parametrikseen merkkijonon. Funktio palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon vokaalit on poistettu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että merkkijono koostuu pelkästään pienistä suomen kielen kirjaimista a...ö."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tämä on esimerkki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ilman_vokaaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tm n smrkk"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Poista isot","tmcname":"osa04-24_poista_isot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin merkkijonometodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"isupper()"}]},{"type":"text","value":" palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos merkkijono koostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pelkästään isoista kirjaimista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"XYZ\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isupper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nonko_iso "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Abc\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isupper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_iso"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita metodia hyödyntäen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_isot"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja. Funktio palauttaa uuden listan, jolla on sen parametrina olevasta listasta ne merkkijonot, jotka eivät koostu kokonaan isoista kirjaimista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ABC\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"def\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ISO\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"TOINENISO\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pieni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toinen pieni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osittain Iso\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkarsittu_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" poista_isot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"karsittu_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['def', 'pieni', 'toinen pieni', 'Osittain Iso']"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Naapureita listassa","tmcname":"osa04-25_naapureita_listassa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määritellään, että listan alkiot ovat naapureita, jos niiden erotus on 1. Naapureita olisivat siis esim alkiot 1 ja 2 tai alkiot 56 ja 55."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin_naapurijono"}]},{"type":"text","value":", joka etsii listasta pisimmän peräkkäisiä naapureita sisältävän osalistan ja palauttaa sen pituuden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi listassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[1, 2, 5, 4, 3, 4]"}]},{"type":"text","value":" pisin tällainen osalista olisi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[5, 4, 3, 4]"}]},{"type":"text","value":", ja sen pituus 4."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisin_naapurijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"laajemman-ohjelman-tekeminen","style":"position:relative;"},"children":[{"type":"text","value":"Laajemman ohjelman tekeminen"},{"type":"element","tagName":"a","properties":{"href":"#laajemman-ohjelman-tekeminen","ariaLabel":"laajemman ohjelman tekeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osan huipentaa ensimmäinen hieman laajempi ohjelma, jota tehdessäsi pääset soveltamaan kaikkea tähän asti opeteltua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sääntö numero yksi isompaa tai oikeastaan mitä tahansa ohjelmaa tehdessä on se, että ei kannata yrittää ratkaista kaikkia ongelmia yhtä aikaa. Ohjelma kannattaa rakentaa pienistä paloista kuten sopivista apufunktioista, ja kunkin palan toimivuus kannattaa varmistaa ennen kun alkaa rakentaa seuraavaa palaa. Jos näin ei tee, on aika varmaa että edessä on suuri kaaos."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Isompaa ohjelmaa rakentaessa on järkevää testailla ohjelman funktioita aluksi erillään pääohjelmasta. Yksi helppo tapa on tehdä myös pääohjelmasta oma funktio, esimerkiksi nimeltään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", jonka ohjelman funktioiden ulkopuoleinen osa käynnistää. Esimerkiksi seuraavaa tehtävää voitaisiin ruveta lähestymään näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman koodi tänne"}]},{"type":"text","value":"\n\nmain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin ohjelman apufunktioita on mahdollista testata ilman pääohjelman suorittamista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# apufunktio, joka laskee arvosanan pisteiden perusteella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"arvosana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodia"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman koodi tänne"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kommentoidaan pääohjelma pois"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"#main()"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# testataan apufunktiota"}]},{"type":"text","value":"\npistemaara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pistemaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-valittaminen-funktiosta-toiseen","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon välittäminen funktiosta toiseen"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-valittaminen-funktiosta-toiseen","ariaLabel":"tiedon valittaminen funktiosta toiseen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelma koostuu useista funktioista, nousee esiin kysymys, miten tietoa siirretään funktiosta toiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Syötä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" lukua:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luvut ovat: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n keskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukuja yhteensä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", keskiarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", pienin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktioita käyttävä \"pääohjelma\""}]},{"type":"text","value":"\nsyotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nanalyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä 5 lukua:\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"34"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-32"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"99"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-53"}]},{"type":"text","value":"\nLuvut ovat:\n10\n34\n-32\n99\n-53\nLukuja yhteensä 5, keskiarvo 11.6, pienin -53 ja suurin 99"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallentaa\" ohjelman käsittelemän tiedon eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":". Jos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komennolla. Näin tekevät käyttäjän syötteen lukeva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"text","value":" sekä analyysin tekevä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olisi periaatteessa mahdollista, että funktiot käyttäisivät suoraan \"pääohjelman\" globaalia muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":". Se "},{"type":"element","tagName":"a","properties":{"href":"https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ei kuitenkaan ole järkevää"}]},{"type":"text","value":", sillä jos funktiot pystyvät muuttamaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen pääohjelma eriytettäisiin omaan funktioon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pääohjelmaa edustava funktio"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n analyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman käynnistys"}]},{"type":"text","value":"\nmain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Arvosanatilasto","tmcname":"osa04-26_arvosanatilasto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan ohjelma kurssin arvosanatilastojen tulostamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmalle syötetään rivejä, jotka sisältävät yhden opiskelijan koepistemäärän sekä tehtyjen harjoitustehtävien määrän. Ohjelma tulostaa niiden perusteella arvosanoihin liittyviä tilastoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteet ovat kokonaislukuja väliltä 0–20. Tehtyjen harjoitustehtävien lukumäärät taas kokonaislukuja väliltä 0–100."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kyselee käyttäjältä rivejä niin kauan, kunnes käyttäjä syöttää tyhjän rivin. Voit olettaa, että kaikki rivit on syötetty \"oikein\", eli rivillä on joko kaksi kokonaislukua tai rivi on tyhjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteiden ja harjoitustehtävien syöttäminen etenee seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15 87"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10 55"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"11 40"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4 17"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä:\nTilasto:"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun käyttäjä on syöttänyt tyhjän rivin, tulostaa ohjelma tilastot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tilastot muodostuvat seuraavasti:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtyjen harjoitustehtävien lukumäärästä saa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"harjoituspisteitä"}]},{"type":"text","value":" siten, että vähintään 10 % tehtävämäärästä tuo yhden harjoituspisteen, 20 % tuo 2 harjoituspistettä, jne., ja 100 % eli 100 harjoitustehtävää tuo 10 harjoituspistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin arvosana määräytyy kokeen pistemäärän ja harjoitustehtävistä saatavien pisteiden summasta seuraavan taulukon mukaan:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"koepisteet+harjoituspisteet"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"arvosana"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0–14"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0 (eli hylätty)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"15–17"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"18–20"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"21–23"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"24–27"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"28–30"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edelliseen on kuitenkin poikkeus: jos kokeen pistemäärä on alle 10, on arvosana kokonaispistemäärästä riippumatta 0 eli hylätty."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä olevalla esimerkkisyötteellä ohjelma tulostaa seuraavat tilastot:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Tilasto:\nPisteiden keskiarvo: 14.5\nHyväksymisprosentti: 75.0\nArvosanajakauma:\n 5:\n 4:\n 3: *\n 2:\n 1: **\n 0: *\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Desimaaliluvut tulostetaan yhden desimaalin tarkkuudella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon! Eli jos ohjelmasi toiminnallisuus on esim. funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", tulee sitä kutsuva koodi kirjoittaa normaaliin tapaan, eikä ym. if-lohkoon kuten on tehtävä niissä tehtävissä, joissa edellytetään funktioiden toteuttamista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje:"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman syöte koostuu riveistä joilla on peräkkäin kaksi numeroa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15 87"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syöterivi pitää pilkkoa ensin kahtia ja muuttaa palaset kokonaisluvuksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":"-funktiolla. Rivin pilkkominen onnistuu samalla tavalla kun tehtävässä "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/2-lisaa-funktioista"},"children":[{"type":"text","value":"Eka, toka ja vika sana"}]},{"type":"text","value":". Siihen on olemassa myös hieman helpompi keino, merkkijonojen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":". Googlaa jos haluat, käytä esim. hakusanoja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"python string split"}]},{"type":"text","value":"."}]},{"type":"comment","value":" **Huomaa** että tällä hetkellä Windowsissa on ongelmia joidenkin tehtävien testien suorittamisessa. Jos törmäät seuraavaan virheilmoitukseen\n\n\"Listan\n\nvoit suorittaa testit lähettämällä ne palvelimelle valitsemalla testien suoritusnapin oikealla puolella olevasta symbolista avautuvasta TMC-valikosta _Submit solutions_.\n\nOngelman saa korjattua menemällä laajennuksen asennusvalikkoon ja muuttamalla \"TMC Data\" -kohdassa tehtävien sijainnin johonkin toiseen sijaintiin, jonka tiedostopolku on lyhempi, allaolevassa kuvassa nappi _change path_. Siirrossa saattaa kestää hetken, joten odotathan operaation päättymistä.\n\n\"Listan\n\nOngelmaan pyritään saamaan parempi ratkaisu lähipäivinä. "}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"9b354cf1-f413-5ec3-befd-992039b09100"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet lisää tapoja erottaa osia merkkijonosta tai listasta
    • \n
    • Ymmärrät, mitä tarkoittaa merkkijonon muuttumattomuus
    • \n
    • Osaat käyttää metodeita count ja replace
    • \n

    Olemme käyttäneet aiemmin []-syntaksia merkkijonon osajonon erottamiseen:

    mjono = \"esimerkki\"\nprint(mjono[3:7])

    merk

    Sama syntaksi toimii myös listoissa, ja voimme erottaa sen avulla listan osan:

    lista = [3,4,2,4,6,1,2,4,2]\nprint(lista[3:7])

    [4, 6, 1, 2]

    Lisää erottamisesta

    Itse asiassa []-syntaksi toimii hyvin samalla periaatteella kuin range-funktio, eli voimme antaa sille myös askeleen:

    mjono = \"esimerkki\"\nprint(mjono[0:7:2])\nlista = [1,2,3,4,5,6,7,8]\nprint(lista[6:2:-1])

    eiek\n[7, 6, 5, 4]

    Jos emme anna jotain arvoa, oletuksena koko sisältö valitaan mukaan. Tämän avulla voimme tehdä seuraavan lyhyen ohjelman, joka kääntää merkkijonon:

    mjono = input(\"Kirjoita merkkijono: \")\nprint(mjono[::-1])

    Kirjoita merkkijono: esimerkki\nikkremise

    Varoitus: globaalin muuttujan käyttö funktion sisällä

    Funktioiden sisällä on mahdollista määritellä muuttujia, mutta tämän lisäksi funktio näkee sen ulkopuolella pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan globaaleiksi muuttujiksi.

    Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin.

    Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i >= 0:\n        print(nimilista[i])\n        i -= 1\n\n# globaali muuttuja\nnimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\ntulosta_vaarinpain(nimilista)\nprint()\ntulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Margaret\nErkki\nEmilia\nAntti

    Margaret\nErkki\nEmilia\nAntti

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa nimilista olevat nimet.

    Kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i>=0:\n        print(nimilista[i])\n        i -= 1\n\n# kaikki funktiota testaava koodi tämän lohkon sisälle\nif __name__ == \"__main__\":\n    # globaali muuttuja\n    nimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\n    tulosta_vaarinpain(nimilista)\n    print()\n    tulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Nyt myös globaalin muuttujan määrittely on siirtynyt if-lohkoon.

    TMC-testit suoritetaan aina siten, että mitään if-lohkon sisällä olevaa koodia ei suoriteta. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan nimilista, jota ei testejä suoritettaessa ole lainkaan olemassa.

    Kirjoita funktio kaikki_vaarinpain, joka saa parametrikseen listan merkkijonoja. Funktio luo ja palauttaa uuden listan, jossa kaikki alkuperäisellä listalla olevat merkkijonot on käännetty. Myös listan alkioiden järjestys muutetaan käänteiseksi.

    Esimerkki funktion käytöstä:

    lista = [\"Moi\", \"kaikki\", \"esimerkki\", \"vielä yksi\"]\nlista2 = kaikki_vaarinpain(lista)\nprint(lista2)

    ['isky äleiv', 'ikkremise', 'ikkiak', 'ioM']

    Merkkijonoa ei voi muuttaa

    Merkkijonoilla ja listoilla on paljon yhteistä, ja useimmat operaatiot toimivat samalla tavalla sekä merkkijonoille että listoille. Kuitenkin erona on, että merkkijonoa ei voi muuttaa. Esimerkiksi seuraava koodi ei toimi tarkoitetulla tavalla:

    mjono = \"esimerkki\"\nmjono[0] = \"a\"

    Koska merkkijonoa ei voi muuttaa, ohjelman suoritus aiheuttaa virheen:

    TypeError: 'str' object does not support item assignment

    Samankaltainen virhe seuraa, jos yritetään esimerkiksi järjestää merkkijonoa järjestykseen sort-metodilla.

    Vaikka merkkijonoa ei voi muuttaa, voimme silti sijoittaa merkkijonon paikalle toisen merkkijonon.

    Onkin tärkeää huomata ero seuraavien esimerkkien välillä:

    lista = [1,2,3]\nlista[0] = 10
    \n \n

    Kirjoita funktio eniten_kirjainta, joka saa parametrikseen merkkijonon. Funktio palauttaa kirjaimen, jota esiintyy eniten merkkijonossa. Jos yhtä yleisiä kirjaimia on monta, funktion tulee palauttaa niistä ensimmäisenä merkkijonossa esiintyvä.

    Esimerkki funktion käytöstä:

    mjono = \"abcbdbe\"\nprint(eniten_kirjainta(mjono))\n\ntoinen_jono = \"esimerkkimerkkijonokki\"\nprint(eniten_kirjainta(toinen_jono))

    b\nk

    Kirjoita funktio ilman_vokaaleja, joka saa parametrikseen merkkijonon. Funktio palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon vokaalit on poistettu.

    Voit olettaa, että merkkijono koostuu pelkästään pienistä suomen kielen kirjaimista a...ö.

    Esimerkki funktion käytöstä:

    mjono = \"tämä on esimerkki\"\nprint(ilman_vokaaleja(mjono))

    tm n smrkk

    Pythonin merkkijonometodi isupper() palauttaa arvon True, jos merkkijono koostuu pelkästään isoista kirjaimista.

    Esimerkiksi:

    print(\"XYZ\".isupper())\n\nonko_iso = \"Abc\".isupper()\nprint(onko_iso)

    True\nFalse

    Kirjoita metodia hyödyntäen funktio poista_isot, joka saa parametrikseen listan merkkijonoja. Funktio palauttaa uuden listan, jolla on sen parametrina olevasta listasta ne merkkijonot, jotka eivät koostu kokonaan isoista kirjaimista.

    Esimerkki funktion käytöstä:

    lista = [\"ABC\", \"def\", \"ISO\", \"TOINENISO\", \"pieni\", \"toinen pieni\", \"Osittain Iso\"]\nkarsittu_lista = poista_isot(lista)\nprint(karsittu_lista)

    ['def', 'pieni', 'toinen pieni', 'Osittain Iso']

    Määritellään, että listan alkiot ovat naapureita, jos niiden erotus on 1. Naapureita olisivat siis esim alkiot 1 ja 2 tai alkiot 56 ja 55.

    Kirjoita funktio pisin_naapurijono, joka etsii listasta pisimmän peräkkäisiä naapureita sisältävän osalistan ja palauttaa sen pituuden.

    Esimerkiksi listassa [1, 2, 5, 4, 3, 4] pisin tällainen osalista olisi [5, 4, 3, 4], ja sen pituus 4.

    Esimerkki funktion kutsumisesta:

    lista = [1, 2, 5, 7, 6, 5, 6, 3, 4, 1, 0]\nprint(pisin_naapurijono(lista))

    4

    Laajemman ohjelman tekeminen

    Tämän osan huipentaa ensimmäinen hieman laajempi ohjelma, jota tehdessäsi pääset soveltamaan kaikkea tähän asti opeteltua.

    Sääntö numero yksi isompaa tai oikeastaan mitä tahansa ohjelmaa tehdessä on se, että ei kannata yrittää ratkaista kaikkia ongelmia yhtä aikaa. Ohjelma kannattaa rakentaa pienistä paloista kuten sopivista apufunktioista, ja kunkin palan toimivuus kannattaa varmistaa ennen kun alkaa rakentaa seuraavaa palaa. Jos näin ei tee, on aika varmaa että edessä on suuri kaaos.

    Isompaa ohjelmaa rakentaessa on järkevää testailla ohjelman funktioita aluksi erillään pääohjelmasta. Yksi helppo tapa on tehdä myös pääohjelmasta oma funktio, esimerkiksi nimeltään main, jonka ohjelman funktioiden ulkopuoleinen osa käynnistää. Esimerkiksi seuraavaa tehtävää voitaisiin ruveta lähestymään näin:

    def main():\n    pisteet = []\n    # ohjelman koodi tänne\n\nmain()

    Näin ohjelman apufunktioita on mahdollista testata ilman pääohjelman suorittamista:

    # apufunktio, joka laskee arvosanan pisteiden perusteella\ndef arvosana(pisteet):\n    # koodia\n\ndef main():\n    pisteet = []\n    # ohjelman koodi tänne\n\n# kommentoidaan pääohjelma pois\n#main()\n\n# testataan apufunktiota\npistemaara = 35\ntulos = arvosana(pistemaara)\nprint(tulos)

    Tiedon välittäminen funktiosta toiseen

    Jos ohjelma koostuu useista funktioista, nousee esiin kysymys, miten tietoa siirretään funktiosta toiseen.

    Seuraavassa on esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:

    def lue_kayttajalta(maara: int):\n    print(f\"Syötä {maara} lukua:\")\n    luvut = []\n\n    for i in range(maara):\n        luku = int(input(\"Anna luku: \"))\n        luvut.append(luku)\n\n    return luvut\n\ndef tulosta(luvut: list):\n    print(\"Luvut ovat: \")\n    for luku in luvut:\n        print(luku)\n\ndef analysoi(luvut: list):\n    keskiarvo = sum(luvut) / len(luvut)\n    return f\"Lukuja yhteensä {len(luvut)}, keskiarvo {keskiarvo}, pienin {min(luvut)} ja suurin {max(luvut)}\"\n\n# funktioita käyttävä \"pääohjelma\"\nsyotteet = lue_kayttajalta(5)\ntulosta(syotteet)\nanalyysin_tulos = analysoi(syotteet)\nprint(analyysin_tulos)

    Esimerkkisuoritus:

    Syötä 5 lukua:\nAnna luku: 10\nAnna luku: 34\nAnna luku: -32\nAnna luku: 99\nAnna luku: -53\nLuvut ovat:\n10\n34\n-32\n99\n-53\nLukuja yhteensä 5, keskiarvo 11.6, pienin -53 ja suurin 99

    Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallentaa\" ohjelman käsittelemän tiedon eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa syotteet.

    Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa tulosta ja analysoi. Jos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan return-komennolla. Näin tekevät käyttäjän syötteen lukeva funktio lue_kayttajalta sekä analyysin tekevä funktio analysoi.

    Olisi periaatteessa mahdollista, että funktiot käyttäisivät suoraan \"pääohjelman\" globaalia muuttujaa syotteet. Se ei kuitenkaan ole järkevää, sillä jos funktiot pystyvät muuttamaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa.

    Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla.

    Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen pääohjelma eriytettäisiin omaan funktioon main, siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:

    # pääohjelmaa edustava funktio\ndef main():\n    syotteet = lue_kayttajalta(5)\n    tulosta(syotteet)\n    analyysin_tulos = analysoi(syotteet)\n\n    print(analyysin_tulos)\n\n# ohjelman käynnistys\nmain()

    Tässä tehtävässä toteutetaan ohjelma kurssin arvosanatilastojen tulostamiseen.

    Ohjelmalle syötetään rivejä, jotka sisältävät yhden opiskelijan koepistemäärän sekä tehtyjen harjoitustehtävien määrän. Ohjelma tulostaa niiden perusteella arvosanoihin liittyviä tilastoja.

    Koepisteet ovat kokonaislukuja väliltä 0–20. Tehtyjen harjoitustehtävien lukumäärät taas kokonaislukuja väliltä 0–100.

    Ohjelma kyselee käyttäjältä rivejä niin kauan, kunnes käyttäjä syöttää tyhjän rivin. Voit olettaa, että kaikki rivit on syötetty \"oikein\", eli rivillä on joko kaksi kokonaislukua tai rivi on tyhjä.

    Koepisteiden ja harjoitustehtävien syöttäminen etenee seuraavasti:

    Koepisteet ja harjoitusten määrä: 15 87\nKoepisteet ja harjoitusten määrä: 10 55\nKoepisteet ja harjoitusten määrä: 11 40\nKoepisteet ja harjoitusten määrä: 4 17\nKoepisteet ja harjoitusten määrä:\nTilasto:

    Kun käyttäjä on syöttänyt tyhjän rivin, tulostaa ohjelma tilastot.

    Tilastot muodostuvat seuraavasti:

    Tehtyjen harjoitustehtävien lukumäärästä saa harjoituspisteitä siten, että vähintään 10 % tehtävämäärästä tuo yhden harjoituspisteen, 20 % tuo 2 harjoituspistettä, jne., ja 100 % eli 100 harjoitustehtävää tuo 10 harjoituspistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku.

    Kurssin arvosana määräytyy kokeen pistemäärän ja harjoitustehtävistä saatavien pisteiden summasta seuraavan taulukon mukaan:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    koepisteet+harjoituspisteetarvosana
    0–140 (eli hylätty)
    15–171
    18–202
    21–233
    24–274
    28–305

    Edelliseen on kuitenkin poikkeus: jos kokeen pistemäärä on alle 10, on arvosana kokonaispistemäärästä riippumatta 0 eli hylätty.

    Yllä olevalla esimerkkisyötteellä ohjelma tulostaa seuraavat tilastot:

    \nTilasto:\nPisteiden keskiarvo: 14.5\nHyväksymisprosentti: 75.0\nArvosanajakauma:\n  5:\n  4:\n  3: *\n  2:\n  1: **\n  0: *\n

    Desimaaliluvut tulostetaan yhden desimaalin tarkkuudella.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon! Eli jos ohjelmasi toiminnallisuus on esim. funktiossa main, tulee sitä kutsuva koodi kirjoittaa normaaliin tapaan, eikä ym. if-lohkoon kuten on tehtävä niissä tehtävissä, joissa edellytetään funktioiden toteuttamista.

    Vihje:

    Ohjelman syöte koostuu riveistä joilla on peräkkäin kaksi numeroa:

    Koepisteet ja harjoitusten määrä: 15 87

    Syöterivi pitää pilkkoa ensin kahtia ja muuttaa palaset kokonaisluvuksi int-funktiolla. Rivin pilkkominen onnistuu samalla tavalla kun tehtävässä Eka, toka ja vika sana. Siihen on olemassa myös hieman helpompi keino, merkkijonojen metodi split. Googlaa jos haluat, käytä esim. hakusanoja python string split.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/6-lisaa-rakenteista.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet lisää tapoja erottaa osia merkkijonosta tai listasta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mitä tarkoittaa merkkijonon muuttumattomuus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää metodeita "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme käyttäneet aiemmin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":"-syntaksia merkkijonon osajonon erottamiseen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"merk"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama syntaksi toimii myös listoissa, ja voimme erottaa sen avulla listan osan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[4, 6, 1, 2]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-erottamisesta","style":"position:relative;"},"children":[{"type":"text","value":"Lisää erottamisesta"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-erottamisesta","ariaLabel":"lisaa erottamisesta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse asiassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":"-syntaksi toimii hyvin samalla periaatteella kuin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktio, eli voimme antaa sille myös askeleen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eiek\n[7, 6, 5, 4]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos emme anna jotain arvoa, oletuksena koko sisältö valitaan mukaan. Tämän avulla voimme tehdä seuraavan lyhyen ohjelman, joka kääntää merkkijonon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirjoita merkkijono: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita merkkijono: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"esimerkki"}]},{"type":"text","value":"\nikkremise"}]}]},{"type":"comment","value":"vastaava varoitusteksti löytyy osioista 3-4, 4-6 ja 5-1, tsekkaa kaikki jos muokkaat"},{"type":"element","tagName":"h2","properties":{"id":"varoitus-globaalin-muuttujan-kaytto-funktion-sisalla","style":"position:relative;"},"children":[{"type":"text","value":"Varoitus: globaalin muuttujan käyttö funktion sisällä"},{"type":"element","tagName":"a","properties":{"href":"#varoitus-globaalin-muuttujan-kaytto-funktion-sisalla","ariaLabel":"varoitus globaalin muuttujan kaytto funktion sisalla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden sisällä on mahdollista määritellä muuttujia, mutta tämän lisäksi funktio näkee sen ulkopuolella pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"globaaleiksi"}]},{"type":"text","value":" muuttujiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\nnimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":" olevat nimet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaikki funktiota testaava koodi tämän lohkon sisälle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\n nimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt myös globaalin muuttujan määrittely on siirtynyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TMC-testit suoritetaan aina siten, että mitään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkon sisällä olevaa koodia ei suoriteta. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":", jota ei testejä suoritettaessa ole lainkaan olemassa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaikki väärinpäin","tmcname":"osa04-21_kaikki_vaarinpain"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaikki_vaarinpain"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja. Funktio luo ja palauttaa uuden listan, jossa kaikki alkuperäisellä listalla olevat merkkijonot on käännetty. Myös listan alkioiden järjestys muutetaan käänteiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaikki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vielä yksi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kaikki_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['isky äleiv', 'ikkremise', 'ikkiak', 'ioM']"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"merkkijonoa-ei-voi-muuttaa","style":"position:relative;"},"children":[{"type":"text","value":"Merkkijonoa ei voi muuttaa"},{"type":"element","tagName":"a","properties":{"href":"#merkkijonoa-ei-voi-muuttaa","ariaLabel":"merkkijonoa ei voi muuttaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonoilla ja listoilla on paljon yhteistä, ja useimmat operaatiot toimivat samalla tavalla sekä merkkijonoille että listoille. Kuitenkin erona on, että merkkijonoa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei voi muuttaa"}]},{"type":"text","value":". Esimerkiksi seuraava koodi ei toimi tarkoitetulla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki\""}]},{"type":"text","value":"\nmjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska merkkijonoa ei voi muuttaa, ohjelman suoritus aiheuttaa virheen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: 'str' object does not support item assignment"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samankaltainen virhe seuraa, jos yritetään esimerkiksi järjestää merkkijonoa järjestykseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sort"}]},{"type":"text","value":"-metodilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka merkkijonoa ei voi muuttaa, voimme silti sijoittaa merkkijonon paikalle toisen merkkijonon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Onkin tärkeää huomata ero seuraavien esimerkkien välillä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 271px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/4_4_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 70.43478260869564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVQ4y5WT66rCQAyE9337w8eT/hEfQVCs4K2iWO+1VevdyDewBxE91EDYbHZ3Opmkbj6fWxzH1uv1bDab2Xa7tTzPLUkSW61WtlgslJ9Op4bd73d7PB5f3RVFIQB8v98rebvd7HA42G63U471eDxaGXP2g202G1WwXq/l7zHn7nK5iAFMKQd2+PV61Up+MBjY6XRS6TBFCkCIAVkul6qIveNStVq1Wq2mi/1+37rdrpy42WxapVKRzoB7KXgMkM/RC5XsNYPpu+AYTHH24/FYmtIw3APRMD5C2c4/xD517fUMVoDA6puXbsor+L9dRsPRaGTD4VDUKQtt/LiwZ6TKzKDmkId+HNI0tSzLBISmOGDn87n0aP1UMqMDOOu32NFB3+FPxgTAnBVZqAaJkIL8ZDLR3g+4o+1hGFq9XtccMn+dTkdO3Gg0LAgCgdFFAACCAHJABnZIppL5MgckiCmNy74BXIYVZ61WS38Na7vd1keiKPrLs38CMo80d8OuAIYAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/a0b58/4_4_1.webp 230w","/static/8b07a257ace229cc26a5eedf03a60986/cadab/4_4_1.webp 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/81c8e/4_4_1.png 230w","/static/8b07a257ace229cc26a5eedf03a60986/5fce1/4_4_1.png 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/4_4_1.png","alt":"4 4 1","title":"4 4 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi\""}]},{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"!\""}]}]}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 281px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/4_4_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 85.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAABpklEQVQ4y52UWYsCQQyE+2eL/8xnQVAQHxXvA+/7vq3lC2TpHca9AmEy6e50qiozYblcqtfrqd/vazabab/f63A4qNvtqtlsajqd6nQ6CXu9Xj96oACFFouF1uu1rterHo+HFaEY6775Nxb0B9tut1qtVnbxZrMxJ8ZBejweFW63m0E8n8/WHc4CTpcUqdVqtmc+n4v98R7iy+Wi+/2uyWSi0Ol0lMvlVCgUVCqVLAl3rVbLeKxWq8pms2IfBdzG47HlYoM2g+y84e8MDkejkcEDNg5Mj8lbh0myXYDn8/npnudCIDvsOPamgm92o8A7RTnA+ndIAqMBZ41GQ4PBwMaE9uGw3W5bHmjkd7udjRhCvZvLLyqjlsN0lV1B/N9z+A4yl/vFziGxO2vWIfOFIzvvaXwSc8ARsA8UPJ1XEwU+isWi8vm8yuWyjcZwOLQb446BHOc4zJeSFCgVMp3ydfDDiDuGU4RBIP+JuFj+DGlKuUFDvV43xZkEOiKH6sT+bfOOMwEhrViycKVSUSaTsWJuFEpSkwo5LhTHHIQKN+DyTt4bgOcPk2YlBJdlLTcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/a0b58/4_4_2.webp 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/f44a8/4_4_2.webp 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/81c8e/4_4_2.png 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/4_4_2.png 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/4_4_2.png","alt":"4 4 2","title":"4 4 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisessä esimerkissä listan sisältö muuttuu. Toisessa esimerkissä alkuperäinen merkkijono korvataan toisella merkkijonolla. Alkuperäinen merkkijono jää muistiin, mutta siihen ei enää ole viittausta, joten sitä ei voi enää käyttää ohjelmassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän palataan tarkemmin ensi viikolla, kun viittauksia listoihin käsitellään tarkemmin."}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-metodeita","style":"position:relative;"},"children":[{"type":"text","value":"Lisää metodeita"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-metodeita","ariaLabel":"lisaa metodeita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" avulla voidaan laskea osajonon esiintymien määrä. Metodi toimii samaan tapaan sekä merkkijonon että listan kanssa. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"si\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" ei laske päällekkäisiä esiintymiä. Esimerkiksi metodin mukaan merkkijonossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aaaa"}]},{"type":"text","value":" esiintyy kaksi kertaa osajono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aa"}]},{"type":"text","value":", vaikka oikeastaan esiintymiä olisi kolme, jos päällekkäiset esiintymät sallitaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":" avulla voidaan muodostaa uusi merkkijono, jossa tietty merkkijono on korvattu toisella merkkijonolla. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki\""}]},{"type":"text","value":"\nuusi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei kaikki"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi korvaa kaikki merkkijonon esiintymät:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei heilan löysin minä heinikosta hei\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"HEI\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HEI HEIlan löysin minä HEInikosta HEI"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tyypillinen virhe "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":"-metodia käytettäessä on unohtaa, että merkkijonot ovat muuttumattomia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python on kivaa\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korvataan alijono, muttei tallenneta tulosta mihinkään..."}]},{"type":"text","value":"\nmjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python on kivaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos vanhaa jonoa ei tarvita, voidaan uusi jono sijoittaa samaan muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python on kivaa\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korvataan alijono, tallennetaan tulos samaan muuttujaan"}]},{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Java on kivaa"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Eniten kirjaimia","tmcname":"osa04-22_eniten_kirjaimia"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"eniten_kirjainta"}]},{"type":"text","value":", joka saa parametrikseen merkkijonon. Funktio palauttaa kirjaimen, jota esiintyy eniten merkkijonossa. Jos yhtä yleisiä kirjaimia on monta, funktion tulee palauttaa niistä ensimmäisenä merkkijonossa esiintyvä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcbdbe\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_kirjainta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntoinen_jono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkkimerkkijonokki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eniten_kirjainta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toinen_jono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"b\nk"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vokaalit pois","tmcname":"osa04-23_vokaalit_pois"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ilman_vokaaleja"}]},{"type":"text","value":", joka saa parametrikseen merkkijonon. Funktio palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon vokaalit on poistettu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että merkkijono koostuu pelkästään pienistä suomen kielen kirjaimista a...ö."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tämä on esimerkki\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ilman_vokaaleja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tm n smrkk"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Poista isot","tmcname":"osa04-24_poista_isot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin merkkijonometodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"isupper()"}]},{"type":"text","value":" palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos merkkijono koostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pelkästään isoista kirjaimista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"XYZ\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isupper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nonko_iso "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Abc\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isupper"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_iso"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita metodia hyödyntäen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_isot"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja. Funktio palauttaa uuden listan, jolla on sen parametrina olevasta listasta ne merkkijonot, jotka eivät koostu kokonaan isoista kirjaimista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ABC\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"def\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ISO\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"TOINENISO\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pieni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toinen pieni\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Osittain Iso\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkarsittu_lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" poista_isot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"karsittu_lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['def', 'pieni', 'toinen pieni', 'Osittain Iso']"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Naapureita listassa","tmcname":"osa04-25_naapureita_listassa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määritellään, että listan alkiot ovat naapureita, jos niiden erotus on 1. Naapureita olisivat siis esim alkiot 1 ja 2 tai alkiot 56 ja 55."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin_naapurijono"}]},{"type":"text","value":", joka etsii listasta pisimmän peräkkäisiä naapureita sisältävän osalistan ja palauttaa sen pituuden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi listassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[1, 2, 5, 4, 3, 4]"}]},{"type":"text","value":" pisin tällainen osalista olisi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[5, 4, 3, 4]"}]},{"type":"text","value":", ja sen pituus 4."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisin_naapurijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"laajemman-ohjelman-tekeminen","style":"position:relative;"},"children":[{"type":"text","value":"Laajemman ohjelman tekeminen"},{"type":"element","tagName":"a","properties":{"href":"#laajemman-ohjelman-tekeminen","ariaLabel":"laajemman ohjelman tekeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osan huipentaa ensimmäinen hieman laajempi ohjelma, jota tehdessäsi pääset soveltamaan kaikkea tähän asti opeteltua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sääntö numero yksi isompaa tai oikeastaan mitä tahansa ohjelmaa tehdessä on se, että ei kannata yrittää ratkaista kaikkia ongelmia yhtä aikaa. Ohjelma kannattaa rakentaa pienistä paloista kuten sopivista apufunktioista, ja kunkin palan toimivuus kannattaa varmistaa ennen kun alkaa rakentaa seuraavaa palaa. Jos näin ei tee, on aika varmaa että edessä on suuri kaaos."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Isompaa ohjelmaa rakentaessa on järkevää testailla ohjelman funktioita aluksi erillään pääohjelmasta. Yksi helppo tapa on tehdä myös pääohjelmasta oma funktio, esimerkiksi nimeltään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", jonka ohjelman funktioiden ulkopuoleinen osa käynnistää. Esimerkiksi seuraavaa tehtävää voitaisiin ruveta lähestymään näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman koodi tänne"}]},{"type":"text","value":"\n\nmain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin ohjelman apufunktioita on mahdollista testata ilman pääohjelman suorittamista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# apufunktio, joka laskee arvosanan pisteiden perusteella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"arvosana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodia"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman koodi tänne"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kommentoidaan pääohjelma pois"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"#main()"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# testataan apufunktiota"}]},{"type":"text","value":"\npistemaara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pistemaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-valittaminen-funktiosta-toiseen","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon välittäminen funktiosta toiseen"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-valittaminen-funktiosta-toiseen","ariaLabel":"tiedon valittaminen funktiosta toiseen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelma koostuu useista funktioista, nousee esiin kysymys, miten tietoa siirretään funktiosta toiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Syötä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" lukua:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luvut ovat: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n keskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Lukuja yhteensä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", keskiarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", pienin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktioita käyttävä \"pääohjelma\""}]},{"type":"text","value":"\nsyotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nanalyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä 5 lukua:\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"34"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-32"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"99"}]},{"type":"text","value":"\nAnna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-53"}]},{"type":"text","value":"\nLuvut ovat:\n10\n34\n-32\n99\n-53\nLukuja yhteensä 5, keskiarvo 11.6, pienin -53 ja suurin 99"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallentaa\" ohjelman käsittelemän tiedon eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":". Jos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":"-komennolla. Näin tekevät käyttäjän syötteen lukeva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"text","value":" sekä analyysin tekevä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olisi periaatteessa mahdollista, että funktiot käyttäisivät suoraan \"pääohjelman\" globaalia muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":". Se "},{"type":"element","tagName":"a","properties":{"href":"https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ei kuitenkaan ole järkevää"}]},{"type":"text","value":", sillä jos funktiot pystyvät muuttamaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen pääohjelma eriytettäisiin omaan funktioon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pääohjelmaa edustava funktio"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n analyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman käynnistys"}]},{"type":"text","value":"\nmain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Arvosanatilasto","tmcname":"osa04-26_arvosanatilasto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan ohjelma kurssin arvosanatilastojen tulostamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmalle syötetään rivejä, jotka sisältävät yhden opiskelijan koepistemäärän sekä tehtyjen harjoitustehtävien määrän. Ohjelma tulostaa niiden perusteella arvosanoihin liittyviä tilastoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteet ovat kokonaislukuja väliltä 0–20. Tehtyjen harjoitustehtävien lukumäärät taas kokonaislukuja väliltä 0–100."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kyselee käyttäjältä rivejä niin kauan, kunnes käyttäjä syöttää tyhjän rivin. Voit olettaa, että kaikki rivit on syötetty \"oikein\", eli rivillä on joko kaksi kokonaislukua tai rivi on tyhjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteiden ja harjoitustehtävien syöttäminen etenee seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15 87"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10 55"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"11 40"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4 17"}]},{"type":"text","value":"\nKoepisteet ja harjoitusten määrä:\nTilasto:"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun käyttäjä on syöttänyt tyhjän rivin, tulostaa ohjelma tilastot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tilastot muodostuvat seuraavasti:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtyjen harjoitustehtävien lukumäärästä saa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"harjoituspisteitä"}]},{"type":"text","value":" siten, että vähintään 10 % tehtävämäärästä tuo yhden harjoituspisteen, 20 % tuo 2 harjoituspistettä, jne., ja 100 % eli 100 harjoitustehtävää tuo 10 harjoituspistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin arvosana määräytyy kokeen pistemäärän ja harjoitustehtävistä saatavien pisteiden summasta seuraavan taulukon mukaan:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"koepisteet+harjoituspisteet"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"arvosana"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0–14"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0 (eli hylätty)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"15–17"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"18–20"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"21–23"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"24–27"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"28–30"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edelliseen on kuitenkin poikkeus: jos kokeen pistemäärä on alle 10, on arvosana kokonaispistemäärästä riippumatta 0 eli hylätty."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä olevalla esimerkkisyötteellä ohjelma tulostaa seuraavat tilastot:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Tilasto:\nPisteiden keskiarvo: 14.5\nHyväksymisprosentti: 75.0\nArvosanajakauma:\n 5:\n 4:\n 3: *\n 2:\n 1: **\n 0: *\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Desimaaliluvut tulostetaan yhden desimaalin tarkkuudella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon! Eli jos ohjelmasi toiminnallisuus on esim. funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", tulee sitä kutsuva koodi kirjoittaa normaaliin tapaan, eikä ym. if-lohkoon kuten on tehtävä niissä tehtävissä, joissa edellytetään funktioiden toteuttamista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje:"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman syöte koostuu riveistä joilla on peräkkäin kaksi numeroa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koepisteet ja harjoitusten määrä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"15 87"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syöterivi pitää pilkkoa ensin kahtia ja muuttaa palaset kokonaisluvuksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":"-funktiolla. Rivin pilkkominen onnistuu samalla tavalla kun tehtävässä "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/2-lisaa-funktioista"},"children":[{"type":"text","value":"Eka, toka ja vika sana"}]},{"type":"text","value":". Siihen on olemassa myös hieman helpompi keino, merkkijonojen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":". Googlaa jos haluat, käytä esim. hakusanoja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"python string split"}]},{"type":"text","value":"."}]},{"type":"comment","value":" **Huomaa** että tällä hetkellä Windowsissa on ongelmia joidenkin tehtävien testien suorittamisessa. Jos törmäät seuraavaan virheilmoitukseen\n\n\"Listan\n\nvoit suorittaa testit lähettämällä ne palvelimelle valitsemalla testien suoritusnapin oikealla puolella olevasta symbolista avautuvasta TMC-valikosta _Submit solutions_.\n\nOngelman saa korjattua menemällä laajennuksen asennusvalikkoon ja muuttamalla \"TMC Data\" -kohdassa tehtävien sijainnin johonkin toiseen sijaintiin, jonka tiedostopolku on lyhempi, allaolevassa kuvassa nappi _change path_. Siirrossa saattaa kestää hetken, joten odotathan operaation päättymistä.\n\n\"Listan\n\nOngelmaan pyritään saamaan parempi ratkaisu lähipäivinä. "}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"9b354cf1-f413-5ec3-befd-992039b09100"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet lisää tapoja erottaa osia merkkijonosta tai listasta
    • \n
    • Ymmärrät, mitä tarkoittaa merkkijonon muuttumattomuus
    • \n
    • Osaat käyttää metodeita count ja replace
    • \n

    Olemme käyttäneet aiemmin []-syntaksia merkkijonon osajonon erottamiseen:

    mjono = \"esimerkki\"\nprint(mjono[3:7])

    merk

    Sama syntaksi toimii myös listoissa, ja voimme erottaa sen avulla listan osan:

    lista = [3,4,2,4,6,1,2,4,2]\nprint(lista[3:7])

    [4, 6, 1, 2]

    Lisää erottamisesta

    Itse asiassa []-syntaksi toimii hyvin samalla periaatteella kuin range-funktio, eli voimme antaa sille myös askeleen:

    mjono = \"esimerkki\"\nprint(mjono[0:7:2])\nlista = [1,2,3,4,5,6,7,8]\nprint(lista[6:2:-1])

    eiek\n[7, 6, 5, 4]

    Jos emme anna jotain arvoa, oletuksena koko sisältö valitaan mukaan. Tämän avulla voimme tehdä seuraavan lyhyen ohjelman, joka kääntää merkkijonon:

    mjono = input(\"Kirjoita merkkijono: \")\nprint(mjono[::-1])

    Kirjoita merkkijono: esimerkki\nikkremise

    Varoitus: globaalin muuttujan käyttö funktion sisällä

    Funktioiden sisällä on mahdollista määritellä muuttujia, mutta tämän lisäksi funktio näkee sen ulkopuolella pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan globaaleiksi muuttujiksi.

    Globaalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin.

    Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i >= 0:\n        print(nimilista[i])\n        i -= 1\n\n# globaali muuttuja\nnimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\ntulosta_vaarinpain(nimilista)\nprint()\ntulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Margaret\nErkki\nEmilia\nAntti

    Margaret\nErkki\nEmilia\nAntti

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa nimilista olevat nimet.

    Kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i>=0:\n        print(nimilista[i])\n        i -= 1\n\n# kaikki funktiota testaava koodi tämän lohkon sisälle\nif __name__ == \"__main__\":\n    # globaali muuttuja\n    nimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\n    tulosta_vaarinpain(nimilista)\n    print()\n    tulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Nyt myös globaalin muuttujan määrittely on siirtynyt if-lohkoon.

    TMC-testit suoritetaan aina siten, että mitään if-lohkon sisällä olevaa koodia ei suoriteta. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan nimilista, jota ei testejä suoritettaessa ole lainkaan olemassa.

    Kirjoita funktio kaikki_vaarinpain, joka saa parametrikseen listan merkkijonoja. Funktio luo ja palauttaa uuden listan, jossa kaikki alkuperäisellä listalla olevat merkkijonot on käännetty. Myös listan alkioiden järjestys muutetaan käänteiseksi.

    Esimerkki funktion käytöstä:

    lista = [\"Moi\", \"kaikki\", \"esimerkki\", \"vielä yksi\"]\nlista2 = kaikki_vaarinpain(lista)\nprint(lista2)

    ['isky äleiv', 'ikkremise', 'ikkiak', 'ioM']

    Merkkijonoa ei voi muuttaa

    Merkkijonoilla ja listoilla on paljon yhteistä, ja useimmat operaatiot toimivat samalla tavalla sekä merkkijonoille että listoille. Kuitenkin erona on, että merkkijonoa ei voi muuttaa. Esimerkiksi seuraava koodi ei toimi tarkoitetulla tavalla:

    mjono = \"esimerkki\"\nmjono[0] = \"a\"

    Koska merkkijonoa ei voi muuttaa, ohjelman suoritus aiheuttaa virheen:

    TypeError: 'str' object does not support item assignment

    Samankaltainen virhe seuraa, jos yritetään esimerkiksi järjestää merkkijonoa järjestykseen sort-metodilla.

    Vaikka merkkijonoa ei voi muuttaa, voimme silti sijoittaa merkkijonon paikalle toisen merkkijonon.

    Onkin tärkeää huomata ero seuraavien esimerkkien välillä:

    lista = [1,2,3]\nlista[0] = 10
    \n \n

    Kirjoita funktio eniten_kirjainta, joka saa parametrikseen merkkijonon. Funktio palauttaa kirjaimen, jota esiintyy eniten merkkijonossa. Jos yhtä yleisiä kirjaimia on monta, funktion tulee palauttaa niistä ensimmäisenä merkkijonossa esiintyvä.

    Esimerkki funktion käytöstä:

    mjono = \"abcbdbe\"\nprint(eniten_kirjainta(mjono))\n\ntoinen_jono = \"esimerkkimerkkijonokki\"\nprint(eniten_kirjainta(toinen_jono))

    b\nk

    Kirjoita funktio ilman_vokaaleja, joka saa parametrikseen merkkijonon. Funktio palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon vokaalit on poistettu.

    Voit olettaa, että merkkijono koostuu pelkästään pienistä suomen kielen kirjaimista a...ö.

    Esimerkki funktion käytöstä:

    mjono = \"tämä on esimerkki\"\nprint(ilman_vokaaleja(mjono))

    tm n smrkk

    Pythonin merkkijonometodi isupper() palauttaa arvon True, jos merkkijono koostuu pelkästään isoista kirjaimista.

    Esimerkiksi:

    print(\"XYZ\".isupper())\n\nonko_iso = \"Abc\".isupper()\nprint(onko_iso)

    True\nFalse

    Kirjoita metodia hyödyntäen funktio poista_isot, joka saa parametrikseen listan merkkijonoja. Funktio palauttaa uuden listan, jolla on sen parametrina olevasta listasta ne merkkijonot, jotka eivät koostu kokonaan isoista kirjaimista.

    Esimerkki funktion käytöstä:

    lista = [\"ABC\", \"def\", \"ISO\", \"TOINENISO\", \"pieni\", \"toinen pieni\", \"Osittain Iso\"]\nkarsittu_lista = poista_isot(lista)\nprint(karsittu_lista)

    ['def', 'pieni', 'toinen pieni', 'Osittain Iso']

    Määritellään, että listan alkiot ovat naapureita, jos niiden erotus on 1. Naapureita olisivat siis esim alkiot 1 ja 2 tai alkiot 56 ja 55.

    Kirjoita funktio pisin_naapurijono, joka etsii listasta pisimmän peräkkäisiä naapureita sisältävän osalistan ja palauttaa sen pituuden.

    Esimerkiksi listassa [1, 2, 5, 4, 3, 4] pisin tällainen osalista olisi [5, 4, 3, 4], ja sen pituus 4.

    Esimerkki funktion kutsumisesta:

    lista = [1, 2, 5, 7, 6, 5, 6, 3, 4, 1, 0]\nprint(pisin_naapurijono(lista))

    4

    Laajemman ohjelman tekeminen

    Tämän osan huipentaa ensimmäinen hieman laajempi ohjelma, jota tehdessäsi pääset soveltamaan kaikkea tähän asti opeteltua.

    Sääntö numero yksi isompaa tai oikeastaan mitä tahansa ohjelmaa tehdessä on se, että ei kannata yrittää ratkaista kaikkia ongelmia yhtä aikaa. Ohjelma kannattaa rakentaa pienistä paloista kuten sopivista apufunktioista, ja kunkin palan toimivuus kannattaa varmistaa ennen kun alkaa rakentaa seuraavaa palaa. Jos näin ei tee, on aika varmaa että edessä on suuri kaaos.

    Isompaa ohjelmaa rakentaessa on järkevää testailla ohjelman funktioita aluksi erillään pääohjelmasta. Yksi helppo tapa on tehdä myös pääohjelmasta oma funktio, esimerkiksi nimeltään main, jonka ohjelman funktioiden ulkopuoleinen osa käynnistää. Esimerkiksi seuraavaa tehtävää voitaisiin ruveta lähestymään näin:

    def main():\n    pisteet = []\n    # ohjelman koodi tänne\n\nmain()

    Näin ohjelman apufunktioita on mahdollista testata ilman pääohjelman suorittamista:

    # apufunktio, joka laskee arvosanan pisteiden perusteella\ndef arvosana(pisteet):\n    # koodia\n\ndef main():\n    pisteet = []\n    # ohjelman koodi tänne\n\n# kommentoidaan pääohjelma pois\n#main()\n\n# testataan apufunktiota\npistemaara = 35\ntulos = arvosana(pistemaara)\nprint(tulos)

    Tiedon välittäminen funktiosta toiseen

    Jos ohjelma koostuu useista funktioista, nousee esiin kysymys, miten tietoa siirretään funktiosta toiseen.

    Seuraavassa on esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:

    def lue_kayttajalta(maara: int):\n    print(f\"Syötä {maara} lukua:\")\n    luvut = []\n\n    for i in range(maara):\n        luku = int(input(\"Anna luku: \"))\n        luvut.append(luku)\n\n    return luvut\n\ndef tulosta(luvut: list):\n    print(\"Luvut ovat: \")\n    for luku in luvut:\n        print(luku)\n\ndef analysoi(luvut: list):\n    keskiarvo = sum(luvut) / len(luvut)\n    return f\"Lukuja yhteensä {len(luvut)}, keskiarvo {keskiarvo}, pienin {min(luvut)} ja suurin {max(luvut)}\"\n\n# funktioita käyttävä \"pääohjelma\"\nsyotteet = lue_kayttajalta(5)\ntulosta(syotteet)\nanalyysin_tulos = analysoi(syotteet)\nprint(analyysin_tulos)

    Esimerkkisuoritus:

    Syötä 5 lukua:\nAnna luku: 10\nAnna luku: 34\nAnna luku: -32\nAnna luku: 99\nAnna luku: -53\nLuvut ovat:\n10\n34\n-32\n99\n-53\nLukuja yhteensä 5, keskiarvo 11.6, pienin -53 ja suurin 99

    Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallentaa\" ohjelman käsittelemän tiedon eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa syotteet.

    Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa tulosta ja analysoi. Jos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan return-komennolla. Näin tekevät käyttäjän syötteen lukeva funktio lue_kayttajalta sekä analyysin tekevä funktio analysoi.

    Olisi periaatteessa mahdollista, että funktiot käyttäisivät suoraan \"pääohjelman\" globaalia muuttujaa syotteet. Se ei kuitenkaan ole järkevää, sillä jos funktiot pystyvät muuttamaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa.

    Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla.

    Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen pääohjelma eriytettäisiin omaan funktioon main, siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:

    # pääohjelmaa edustava funktio\ndef main():\n    syotteet = lue_kayttajalta(5)\n    tulosta(syotteet)\n    analyysin_tulos = analysoi(syotteet)\n\n    print(analyysin_tulos)\n\n# ohjelman käynnistys\nmain()

    Tässä tehtävässä toteutetaan ohjelma kurssin arvosanatilastojen tulostamiseen.

    Ohjelmalle syötetään rivejä, jotka sisältävät yhden opiskelijan koepistemäärän sekä tehtyjen harjoitustehtävien määrän. Ohjelma tulostaa niiden perusteella arvosanoihin liittyviä tilastoja.

    Koepisteet ovat kokonaislukuja väliltä 0–20. Tehtyjen harjoitustehtävien lukumäärät taas kokonaislukuja väliltä 0–100.

    Ohjelma kyselee käyttäjältä rivejä niin kauan, kunnes käyttäjä syöttää tyhjän rivin. Voit olettaa, että kaikki rivit on syötetty \"oikein\", eli rivillä on joko kaksi kokonaislukua tai rivi on tyhjä.

    Koepisteiden ja harjoitustehtävien syöttäminen etenee seuraavasti:

    Koepisteet ja harjoitusten määrä: 15 87\nKoepisteet ja harjoitusten määrä: 10 55\nKoepisteet ja harjoitusten määrä: 11 40\nKoepisteet ja harjoitusten määrä: 4 17\nKoepisteet ja harjoitusten määrä:\nTilasto:

    Kun käyttäjä on syöttänyt tyhjän rivin, tulostaa ohjelma tilastot.

    Tilastot muodostuvat seuraavasti:

    Tehtyjen harjoitustehtävien lukumäärästä saa harjoituspisteitä siten, että vähintään 10 % tehtävämäärästä tuo yhden harjoituspisteen, 20 % tuo 2 harjoituspistettä, jne., ja 100 % eli 100 harjoitustehtävää tuo 10 harjoituspistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku.

    Kurssin arvosana määräytyy kokeen pistemäärän ja harjoitustehtävistä saatavien pisteiden summasta seuraavan taulukon mukaan:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    koepisteet+harjoituspisteetarvosana
    0–140 (eli hylätty)
    15–171
    18–202
    21–233
    24–274
    28–305

    Edelliseen on kuitenkin poikkeus: jos kokeen pistemäärä on alle 10, on arvosana kokonaispistemäärästä riippumatta 0 eli hylätty.

    Yllä olevalla esimerkkisyötteellä ohjelma tulostaa seuraavat tilastot:

    \nTilasto:\nPisteiden keskiarvo: 14.5\nHyväksymisprosentti: 75.0\nArvosanajakauma:\n  5:\n  4:\n  3: *\n  2:\n  1: **\n  0: *\n

    Desimaaliluvut tulostetaan yhden desimaalin tarkkuudella.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon! Eli jos ohjelmasi toiminnallisuus on esim. funktiossa main, tulee sitä kutsuva koodi kirjoittaa normaaliin tapaan, eikä ym. if-lohkoon kuten on tehtävä niissä tehtävissä, joissa edellytetään funktioiden toteuttamista.

    Vihje:

    Ohjelman syöte koostuu riveistä joilla on peräkkäin kaksi numeroa:

    Koepisteet ja harjoitusten määrä: 15 87

    Syöterivi pitää pilkkoa ensin kahtia ja muuttaa palaset kokonaisluvuksi int-funktiolla. Rivin pilkkominen onnistuu samalla tavalla kun tehtävässä Eka, toka ja vika sana. Siihen on olemassa myös hieman helpompi keino, merkkijonojen metodi split. Googlaa jos haluat, käytä esim. hakusanoja python string split.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/6-lisaa-rakenteista.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-4/page-data.json b/page-data/osa-4/page-data.json index dde18a274..6d5a93198 100644 --- a/page-data/osa-4/page-data.json +++ b/page-data/osa-4/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-4", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-4","title":"Osa 4"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-4","title":"Osa 4"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-4/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-5/1-lisaa-listoja/page-data.json b/page-data/osa-5/1-lisaa-listoja/page-data.json index 35ee51bea..dce7068db 100644 --- a/page-data/osa-5/1-lisaa-listoja/page-data.json +++ b/page-data/osa-5/1-lisaa-listoja/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-5/1-lisaa-listoja", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda listoja, joissa on erityyppistä tietoa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten listoja voi käyttää tiedon ryhmittelyyn"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tallentaa matriisin kaksiulotteisena listana"}]},{"type":"text","value":"\n"}]}]},{"type":"comment","value":"vastaava teksti löytyy osioista 3-1, 5-1 ja 6-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Kurssin tehtävien tekemisestä"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvosteluperusteet"}]},{"type":"text","value":" toteavat, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä."}]},{"type":"text","value":" Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan"}]},{"type":"text","value":". Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-listoista","style":"position:relative;"},"children":[{"type":"text","value":"Lisää listoista"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-listoista","ariaLabel":"lisaa listoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viime kerralla käsiteltiin lähes yksinomaan listoja, joissa alkiot ovat kokonaislukuja. Listoihin voi kuitenkin tallentaa minkä tahansa tyyppisiä arvoja. Esimerkiksi voimme tallentaa listaan merkkijonoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kalle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Listalla nimiä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimet aakkosjärjestyksessä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Maija', 'Liisa', 'Pekka']\n['Maija', 'Liisa', 'Pekka', 'Kalle']\nListalla nimiä: 4\nNimet aakkosjärjestyksessä:\nKalle\nLiisa\nMaija\nPekka"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samalla tavalla listalle voidaan tallentaa liukulukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mittaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14.6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"21.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19.2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" mittaus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mittaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mittaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkeskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mittaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mittaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keskiarvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"-2.5\n1.1\n7.5\n14.6\n21.0\n19.2\nKeskiarvo: 10.15"}]}]},{"type":"comment","value":"vastaava varoitusteksti löytyy osioista 3-4, 4-6 ja 5-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"h2","properties":{"id":"muistutus-globaalin-muuttujan-kayton-sudenkuoppa","style":"position:relative;"},"children":[{"type":"text","value":"Muistutus: globaalin muuttujan käytön sudenkuoppa"},{"type":"element","tagName":"a","properties":{"href":"#muistutus-globaalin-muuttujan-kayton-sudenkuoppa","ariaLabel":"muistutus globaalin muuttujan kayton sudenkuoppa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella, eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"globaaleiksi"}]},{"type":"text","value":" muuttujiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\nnimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":" olevat nimet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme nähneet, kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaikki funktiota testaava koodi tämän lohkon sisälle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\n nimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt myös globaalin muuttujan määrittely on siirtynyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TMC-testit suoritetaan aina siten, että mitään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkon sisällä olevaa koodia ei huomioida. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":" mitä ei testejä suoritettaessa ole ollenkaan olemassa."}]},{"type":"element","tagName":"h2","properties":{"id":"varoitus-parametrin-ylikirjoittaminen-ja-liian-aikainen-return","style":"position:relative;"},"children":[{"type":"text","value":"Varoitus: parametrin ylikirjoittaminen ja liian aikainen return"},{"type":"element","tagName":"a","properties":{"href":"#varoitus-parametrin-ylikirjoittaminen-ja-liian-aikainen-return","ariaLabel":"varoitus parametrin ylikirjoittaminen ja liian aikainen return permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ennen tämän osan tehtäviin menemistä on syytä kiinnittää huomiota pariin potentiaaliseen ongelmalähteeseen. Tarkastellaan funktiota, joka kertoo löytyykö parametrina oleva luku listalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luku_listalla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa jostain syystä aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":". Syynä tälle on se, että for-silmukka ylikirjoittaa parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" arvon, ja tämän takia if-lauseen ehto on aina tosi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelmasta päästään eroon nimeämällä parametri uudelleen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luku_listalla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt if-lauseen ehto on kunnossa. Funktiossa on kuitenkin uusi ongelma, se ei näytä edelleenkään toimivan. Esim. seuraava kokeilu tuo esiin bugin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"on "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku_listalla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vika on nyt siinä että funktiosta poistutaan liian aikaisin. Funktio tarkistaa ainoastaan ensimmäisen luvun ja riippuen sen arvosta palauttaa heti joko arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":". Lopullista tuomiota, eli tietoa siitä että luku "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole listalla"}]},{"type":"text","value":" ei voi kuitenkaan antaa ennen kuin kaikki luvut on tarkastettu. Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return False"}]},{"type":"text","value":" pitääkin siirtää silmukan ulkopuolelle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luku_listalla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä yhtä virheellistä esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luvut_erisuuret"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# joko luku on nähty?"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\non "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luvut_erisuuret"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu True"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio siis yrittää testata ovatko kaikki listan alkiot erisuuria. Se kuitenkin palauttaa aina arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelmana on jälleen se, että funktio vahingossa ylikirjottaa parametrinsa arvon. Funktio yrittää käyttää muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":" pitämään kirjaa jo vastaan tulleista luvuista ja tämä ylikirjoittaa parametrin. Lääke ongelmaan on muuttujan uudelleennimeäminen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luvut_erisuuret"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu"}]},{"type":"text","value":"\n havaitut_luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# joko luku on nähty?"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" havaitut_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n havaitut_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\non "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luvut_erisuuret"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nämä kuten oikeastaan kaikki koodia vaivaavat ongelmat selviävät debuggerilla tai "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":", jonka käytön tärkeyttä ei voi olla korostamatta liikaa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pisin merkkijono","tmcname":"osa05-01a_pisin_merkkijono"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"HUOM:"}]},{"type":"text","value":" tämä ja seuraava tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin(merkkijonot: list)"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja. Funktio etsii ja palauttaa listalta pisimmän merkkijonon. Voit olettaa, että vain yksi jonoista on pisin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkikutsu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n jonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"heip\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hellurei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"terve\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"hellurei"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-listat","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset listat"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-listat","ariaLabel":"sisakkaiset listat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkiot voivat olla myös listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[5, 2, 3], [4, 1], [2, 2, 5, 1]]\n[4, 1]\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin voimme käyttää listoja jonka sisällä on listoja?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voisimme esimerkiksi esittää henkilön tiedot listana, jossa ensimmäisenä alkiona on henkilön nimi, toisena ikä ja kolmantena kengännumero:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti joukko henkilöitä on lista, joka sisältää yksittäisiä henkilöä kuvaavia listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Petteri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"37"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kenka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": ikä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" vuotta, kengännumero "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kenka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anu: ikä 10 vuotta, kengännumero 26\nPetteri: ikä 7 vuotta, kengännumero 22\nEmilia: ikä 32 vuotta, kengännumero 37\nAntti: ikä 39 vuotta, kengännumero 44"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, miten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lause käy läpi henkilöt yksitellen, eli toiston lohko-osassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo"}]},{"type":"text","value":" saa yksi kerrallaan arvokseen kutakin henkilöä esittävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lista ei ole välttämättä paras Pythonin tietorakenne henkilön tietojen esittämiseen. Tutustumme pian "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sanakirjaan"}]},{"type":"text","value":", joka on usein luontevampi tapa hoitaa vastaava tilanne."}]},{"type":"element","tagName":"h2","properties":{"id":"matriisit","style":"position:relative;"},"children":[{"type":"text","value":"Matriisit"},{"type":"element","tagName":"a","properties":{"href":"#matriisit","ariaLabel":"matriisit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäkkäisten listojen avulla voidaan myös esittää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"matriisi"}]},{"type":"text","value":" eli kaksiulotteinen taulukko."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi matriisi"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 151px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/57e8504bd70c2538405be5b5e1572347/29fe9/5_1_0.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABw0lEQVQ4y62UyYoCQQyG+3EF38YHUPHoyYsLeFLw4smDO654UVBxAXfN8AVS1LSt4zATCJ1OUn+l8qcqKBQKMhwOpd1uq3Y6Hen3+1Iul6XZbEq323UxbHzEyCHX1pgGgEXJbDaTV/IuFrADst/vpdFouMBgMJDT6aR2r9fTyhB8xJDH4yH1el02m43+3+93CSgT2W63kkwmHeBoNHKAuVxOstmsA/RPlUgktBVPgPzsdjv9Iiw6n89qT6dTmc/nauMzwNvtpjHLo+KA5kbJZDJx4L7gI/ayhzBGk+kLO6MsqFQqyuR4PHYxbHzEyMFnMVqEBtZsyr5cLqpUwcLD4SDX61UVP198xMixfF8Dv6G+UA0AYcFHJS+PbKSs12tJpVIOxCelWq1KsViMZJkJYK0jxeZwtVpJOp2W4/HoAG1s8vm8lEqlSED6+Q3wt0dmVN4eOUwK3z+R8snYmP+jsfn3wTaW7T7TozDLy+VSSQtfPUhYLBZ61CeWuZPxeNyB+CzDfiaTeWKZFyoWi2krIl+bWq3mdvMr5PlqtVpPFQLAjNrzpRX6RzanPV8/3RTL9e1vzxf98wGtWmJGED4f0F9DhV9fOel+Sn/2BgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/57e8504bd70c2538405be5b5e1572347/8d139/5_1_0.webp 151w"],"sizes":"(max-width: 151px) 100vw, 151px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/57e8504bd70c2538405be5b5e1572347/29fe9/5_1_0.png 151w"],"sizes":"(max-width: 151px) 100vw, 151px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/57e8504bd70c2538405be5b5e1572347/29fe9/5_1_0.png","alt":"5 1 0","title":"5 1 0","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"voitaisiin mallintaa kaksiulotteisena listana näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska matriisi on lista listoja, matriisin alkioihin viitataan käyttämällä peräkkäisiä hakasulkuja. Ensimmäinen indeksi viittaa riviin ja toinen sarakkeeseen. Niinpä esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"m[0][1]"}]},{"type":"text","value":" tarkoittaa ensimmäisen rivin toista alkiota (kun muistetaan, että indeksointi alkaa nollasta)."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n[[1, 2, 3], [10, 2, 1], [4, 5, 6]]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käydä läpi matriisin rivit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla. Esimerkiksi seuraava koodi tulostaa matriisin rivit allekkain:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3]\n[4, 5, 6]\n[7, 8, 9]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi puolestaan tulostaa matriisin alkiot yksitellen kahden "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"uusi rivi\n1\n2\n3\nuusi rivi\n4\n5\n6\nuusi rivi\n7\n8\n9"}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaisia-listoja-kayttavan-koodin-visualisointi","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäisiä listoja käyttävän koodin visualisointi"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaisia-listoja-kayttavan-koodin-visualisointi","ariaLabel":"sisakkaisia listoja kayttavan koodin visualisointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos sisäkkäisiä listoja käsittelevät ohjelmat tuntuvat hankalalta ymmärtää, kannattaa ehdottomasti havainnollistaa niitä Python Tutorin "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":". Seuraavassa kuva edellisen esimerkin visualisoinnista:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9450893ea3ce24ad2a607cde889d3e70/769f8/5_1_0a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABFElEQVQY03WQ207DMAyG+/7PtgtuBhMSDG1rx+jWJG0OtuMDamCIm32yLCv6fzt2Z2Yigoi10rzkY38dLq4UICIAUFUiSikRESJSQ0S00ZkZiyzLkn7JeNcBQOtLYZ6Z2RrNJSLMzKu5QiHEvu8Ph8P5PPzp/qm1lCzCpaxfbI9rrGYhNDMACGEZrz6mdWBrLmZGxK/78+6tB5IY/ZKOGW4IvUjoYnDOB+cc16pqBRhJ7jPXjMQv+6/N9iOC5jJdbk9uPqX0DHDqatsPEd3K1MJN05RS+lmOKvuIV5dYxNQy8Od1C2Wnpl3MtOSaYslz8CEMwzCOY4yRiOwBfh5ifDeDjkVZVETtMdrOdi+tgPd+Q3T8Bqyl0FSTvoR1AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9450893ea3ce24ad2a607cde889d3e70/a0b58/5_1_0a.webp 230w","/static/9450893ea3ce24ad2a607cde889d3e70/bc10c/5_1_0a.webp 460w","/static/9450893ea3ce24ad2a607cde889d3e70/966d8/5_1_0a.webp 920w","/static/9450893ea3ce24ad2a607cde889d3e70/445df/5_1_0a.webp 1380w","/static/9450893ea3ce24ad2a607cde889d3e70/78de1/5_1_0a.webp 1840w","/static/9450893ea3ce24ad2a607cde889d3e70/7e82b/5_1_0a.webp 1924w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9450893ea3ce24ad2a607cde889d3e70/81c8e/5_1_0a.png 230w","/static/9450893ea3ce24ad2a607cde889d3e70/08a84/5_1_0a.png 460w","/static/9450893ea3ce24ad2a607cde889d3e70/c0255/5_1_0a.png 920w","/static/9450893ea3ce24ad2a607cde889d3e70/b1001/5_1_0a.png 1380w","/static/9450893ea3ce24ad2a607cde889d3e70/161ec/5_1_0a.png 1840w","/static/9450893ea3ce24ad2a607cde889d3e70/769f8/5_1_0a.png 1924w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9450893ea3ce24ad2a607cde889d3e70/c0255/5_1_0a.png","alt":"5 1 0a","title":"5 1 0a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten kuva paljastaa, 3x3-matriisi koostuu teknisesti ottaen neljästä listasta. Ensimmäinen lista edustaa koko matriisia ja sen alkioina on erillisiä rivejä edustavat listat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuva havainnollistaa jo sitä seikkaa, josta puhumme tarkemmin "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/2-viittaukset"},"children":[{"type":"text","value":"seuraavassa osassa"}]},{"type":"text","value":": moniulotteisessa listassa listat eivät ole todellisuudessa sisäkkäin, vaan matriisia edustava lista \"viittaa\" jokaista riviä edustavaan listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuvassa tulostus on edennyt matriisin toiselle riville, johon muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivi"}]},{"type":"text","value":" parhaillaan viittaa. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alkio"}]},{"type":"text","value":" kertoo sen alkion, jonka kohdalla tulostus on menossa. Muuttujan arvo on nyt keskimmäisen rivin keskimmäinen eli 5."}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-matriisin-kasittelya","style":"position:relative;"},"children":[{"type":"text","value":"Lisää matriisin käsittelyä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-matriisin-kasittelya","ariaLabel":"lisaa matriisin kasittelya permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matriisin yksittäisten rivien käsittely on helppoa, riittää että valitaan haluttu rivi. Esimerkiksi seuraava funktio laskee halutun rivin alkioiden summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rivin_alkioiden_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tarkasteluun valitaan yksi rivi"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" alkio\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa\n\nm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivin_alkioiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu 33 (saadaan laskemalla 9 + 1 + 12 + 11)"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos taas haluttaisiin laskea tietyn sarakkeen eli \"pystyrivin\" alkioiden summa, tilanne olisi jo monimutkaisempi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sarakkeen_alkioiden_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# summaan lisätään kaikkien rivien halutussa kohdassa oleva alkio"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa\n\nm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sarakkeen_alkioiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu 39 (saadaan laskemalla 3 + 12 + 9 + 15)"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkasteltava sarake siis koostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jokaisen rivin"}]},{"type":"text","value":" paikassa 2 olevasta alkiosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näidenkin ohjelmien toiminta kannattaa ehdottomasti käydä läpi "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matriisissa olevan yksittäisen arvon vaihtaminen on helppoa. Riittää että valitaan matriisin sisältä oikea rivi ja sen sisältä sarake:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vaihda_arvoon"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# haetaan oikea rivi"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja sen sisältä oikea kohta"}]},{"type":"text","value":"\n rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvo\n\nm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvaihda_arvoon"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n[[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 1000], [2, 9, 15, 1]]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli halutaan muuttaa matriisin sisältöä silmukan sisällä, ei ole mahdollista käyttää \"normaalia\" for-silmukkaa, sillä muutettaessa sisältöä on pakko tietää muutettavien alkioiden indeksit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä taas onnistuu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukalla tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla hyödyntämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktiota iteroinnissa. Esimerkiksi seuraava koodi kasvattaa jokaista matriisin alkiota yhdellä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"m "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" j "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"j"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[2, 3, 4], [5, 6, 7], [8, 9, 10]]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ulompi silmukka käy "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktion avulla läpi arvot nollasta matriisin pituuteen (eli matriisin rivien määrään) ja sisempi silmukka jokaisen rivin alkiot nollasta rivin pituuteen."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkioiden määrä","tmcname":"osa05-01_alkoiden_maara"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"HUOM:"}]},{"type":"text","value":" tämä ja edellinen tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laske_alkiot(matriisi: list, alkio: int)"}]},{"type":"text","value":", joka saa parametrikseen kaksiulotteisen kokonaislukutaulukon. Funktio laskee, kuinka monta annetun alkion mukaista arvoa taulukosta löytyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"m "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"kaksiulotteinen-taulukko-pelin-tietorakenteena","style":"position:relative;"},"children":[{"type":"text","value":"Kaksiulotteinen taulukko pelin tietorakenteena"},{"type":"element","tagName":"a","properties":{"href":"#kaksiulotteinen-taulukko-pelin-tietorakenteena","ariaLabel":"kaksiulotteinen taulukko pelin tietorakenteena permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matriisi sopii hyvin monien pelien tietorakenteeksi. Esim. sudokun ruudukko"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 410px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5a4d938ae5202e8db72b179ff4d76293/d68e4/5_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100.43478260869566%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAABYlAAAWJQFJUiTwAAADmUlEQVQ4y0WUWXOqPACG/fX9B163vTg67dQuap2OYBfbutQFRSmQoDGQQBAQqsXd5hvLmfO915l5kndJStM0XdcBAJ7nfX5+uq5bKpUIIQghTdMAAISQfr//8vJCCNE0zbZtVVWn0ylCKAV+5bou59w0zcPhUCgUVqtVFEWKomCMV6uVYRjPz8/T6dS27c1mY1kW55wQktJ13XGc4XAYBIEsy9Pp9OLiAmMMITQMAwBgWVar1SqXy8kxx3EGg4Hv+xDClOu6+/3e933OOWOMcy6KIsY4DEP7V7vdbjKZNJvN+Xzued5+v0+OMcZSyd0kSbJtu9PpUEr//PkDIVRVFQCgqup4PK7Vag8PD4wxSZJM05QkiTGmadqRfDgcHMfxPI9SyjkXBIEQ4nnecrn8+vpar9fj8ViSpIR2OBwopaZpHt98f39fLBaz2WyhUMhkMqIonpyc5HK5q6ur29vb6+vrQqFwdnaWTqcFQchms6VSKZvN3t3dvby8pCilm80GITSZTAghEMJ8Pr/ZbGazWRRFQRB8f38DAFqtVuLwer3+322EUBiGSVoAANM0c7lcGIaEEMYYpdTzPFmWX19fk8zm8zmEcLlcHnPGGEdRhBDabreGYaxWq3w+DyG0LAv+KgxDRVFEUXRdV1VVCCFCaL1eY4z/kiGEcRxrmrZYLG5ubizLIoQYv/J9X5blSqUym80Gg0GSfxzHRzJCiFJq2/bhcMAYu66bz+fjOA6CACFECFksFrquV6vVIAgSgzDGPz8/lmWl2u12t9vtdDoY40ajIUnS6enpaDRSFKVSqdTrdcMw3t7eLi8vW61Wu92GEH58fGCMFUVJ1Wq1drstiqIsy+VyuVqtptPpcrn89PTUaDRqtdrj42Mulzs/P6/X66IottttQRAkSep0On/rGQQB59x13SiKyuVyUs/lchnHMWNsOBy+v7/PZjPf9//V03XdlKqqpmkmk5AkiVKayWRs206M0XXdNM1msykIQhAEvV6PECJJ0mQyAQCkHMfZbreO43DOKaWMsWKxuFqtwjCcz+dhGMZxbBhGUhJK6W63M03TdV1K6ZGMMR4Oh57n9Xo927az2WwS8mg0AgBgjBPydDqVZZlS2u/3Hcc5khFClmWFYcg5t22bc14qlXa73WKxiOM4GcZoNOp2u/+GkczGcZzUeDxOps8YSz6GarVqWVbSdoSQaZqKonQ6HcYYAIBSqut60qL/AD7hB6pgN21XAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a4d938ae5202e8db72b179ff4d76293/a0b58/5_1_1.webp 230w","/static/5a4d938ae5202e8db72b179ff4d76293/0cb6c/5_1_1.webp 410w"],"sizes":"(max-width: 410px) 100vw, 410px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a4d938ae5202e8db72b179ff4d76293/81c8e/5_1_1.png 230w","/static/5a4d938ae5202e8db72b179ff4d76293/d68e4/5_1_1.png 410w"],"sizes":"(max-width: 410px) 100vw, 410px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5a4d938ae5202e8db72b179ff4d76293/d68e4/5_1_1.png","alt":"5 1 1","title":"5 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"voitaisiin esittää seuraavana matriisina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvolla nolla siis kuvataan tilanne, jossa ruutu on vielä tyhjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa vielä yksinkertainen versio sudokun tulostavasta metodista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ruutu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" _\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"\n 9 _ _ _ 8 _ 3 _ _\n _ _ _ 2 5 _ 7 _ _\n _ 2 _ 3 _ _ _ _ 4\n _ 9 4 _ _ _ _ _ _\n _ _ _ 7 3 _ 5 6 _\n 7 _ 5 _ 6 _ 4 _ _\n _ _ 7 8 _ 3 9 _ _\n _ _ 1 _ _ _ _ _ 3\n 3 _ _ _ _ _ _ _ 2\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavalla tavalla on mahdollista kuvata moni tuttu peli (esim. shakki, miinaharava, laivan upotus, mastermind, ...) matriisina. Pelistä riippuu, mikä on sopiva tapa \"koodata\" pelin tilanne matriisiin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Go","tmcname":"osa05-02_go"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Go-pelissä lisätään vuorotellen mustia ja valkoisia kiviä pelilaudalle. Pelin voittaa se pelaaja, joka saa omilla kivillään rajattua enemmän aluetta pelilaudalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kumpi_voitti(pelilauta: list)"}]},{"type":"text","value":", joka saa parametrikseen kaksiulotteisen taulukon, joka kuvaa pelilautaa. Taulukko koostuu kokonaisluvuista seuraavasti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"0: tyhjä ruutu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"1: pelaajan 1 nappula"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"2: pelaajan 2 nappula"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä pelilaudan koko voi olla mikä tahansa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa arvon 1, jos pelaaja 1 on voittanut pelin, ja arvon 2, jos pelaaja 2 on voittanut pelin. Jos molemmilla pelaajilla on yhtä paljon nappuloita laudalla, funktio palauttaa arvon 0."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: rivit oikein","tmcname":"osa05-03_sudoku_osa1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivi_oikein(sudoku: list, rivi_nro: int)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja rivin numeron kertovan kokonaisluvun (rivit on numeroitu nollasta alkaen). Metodi palauttaa tiedon, onko rivi oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: sarakkeet oikein","tmcname":"osa05-04_sudoku_osa2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sarake_oikein(sudoku: list, sarake_nro: int)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja sarakkeen (eli pystyrivin) numeron kertovan kokonaisluvun. Metodi palauttaa tiedon, onko sarake oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarake_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarake_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: neliöt oikein","tmcname":"osa05-05_sudoku_osa3"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nelio_oikein(sudoku: list, rivi_nro: int, sarake_nro: int)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon sekä yhden ruudun paikan kertovat rivi- ja sarakenumerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio kertoo onko parametrina saadusta rivi/sarakenumerosta alkava 3x3-kokoinen neliö oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tässä tehtävässä toteutettava funktio on hieman yleiskäyttöisempi kuin sudokussa oikeasti tarvitaan. Todellisuudessahan oikeassa sudokussa tarkastellaan ainoastaan kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavia neliöitä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nelio_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nelio_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisen funktiokutsun tarkastelema kohdasta 0, 0 alkava neliö on"}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"9 0 0\n2 0 0\n0 2 0\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisen funktiokutsun tarkastelema kohdasta riviltä 1 ja sarakkeesta 2 alkava neliö on"}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"0 2 5\n0 3 0\n4 0 0\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä neliö on siis sellainen, jota oikeassa sudokussa ei tarkasteltaisi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: ruudukko oikein","tmcname":"osa05-06_sudoku_osa4"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sudoku_oikein(sudoku: list)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon. Funktio kertoo käyttäen edellisen kolmen tehtävän funktioita (kopioi ne tämän tehtävän koodin joukkoon), onko parametrina saatu ruudukko täytetty oikein, eli sen jokainen rivi, jokainen sarake sekä kaikki erilliset 3x3-neliöt sisältävät korkeintaan kertaalleen jokaisen luvuista 1–9."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom: ylempänä olevaan sudokuruudukkoa esittävään kuvaan on merkitty ne 3x3-neliöt, joita sudokua ratkaistessa tulee tarkastella.\nNämä ovat siis kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavat yhdeksän neliöä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsudoku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda listoja, joissa on erityyppistä tietoa
    • \n
    • Tiedät, miten listoja voi käyttää tiedon ryhmittelyyn
    • \n
    • Osaat tallentaa matriisin kaksiulotteisena listana
    • \n

    Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

    Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten arvosteluperusteet toteavat, kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä.

    Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää.

    Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta.

    Lisää listoista

    Viime kerralla käsiteltiin lähes yksinomaan listoja, joissa alkiot ovat kokonaislukuja. Listoihin voi kuitenkin tallentaa minkä tahansa tyyppisiä arvoja. Esimerkiksi voimme tallentaa listaan merkkijonoja:

    nimet = [\"Maija\", \"Liisa\", \"Pekka\"]\nprint(nimet)\nnimet.append(\"Kalle\")\nprint(nimet)\n\nprint(\"Listalla nimiä:\", len(nimet))\nprint(\"Nimet aakkosjärjestyksessä:\")\nnimet.sort()\nfor nimi in nimet:\n  print(nimi)

    ['Maija', 'Liisa', 'Pekka']\n['Maija', 'Liisa', 'Pekka', 'Kalle']\nListalla nimiä: 4\nNimet aakkosjärjestyksessä:\nKalle\nLiisa\nMaija\nPekka

    Samalla tavalla listalle voidaan tallentaa liukulukuja:

    mittaukset = [-2.5, 1.1, 7.5, 14.6, 21.0, 19.2]\n\nfor mittaus in mittaukset:\n    print(mittaus)\n\nkeskiarvo = sum(mittaukset) / len(mittaukset)\n\nprint(\"Keskiarvo:\", keskiarvo)

    -2.5\n1.1\n7.5\n14.6\n21.0\n19.2\nKeskiarvo: 10.15

    Muistutus: globaalin muuttujan käytön sudenkuoppa

    Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella, eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan globaaleiksi muuttujiksi.

    Globalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin.

    Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i>=0:\n        print(nimilista[i])\n        i -= 1\n\n# globaali muuttuja\nnimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\ntulosta_vaarinpain(nimilista)\nprint()\ntulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Margaret\nErkki\nEmilia\nAntti

    Margaret\nErkki\nEmilia\nAntti

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa nimilista olevat nimet.

    Kuten olemme nähneet, kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i>=0:\n        print(nimilista[i])\n        i -= 1\n\n# kaikki funktiota testaava koodi tämän lohkon sisälle\nif __name__ == \"__main__\":\n    # globaali muuttuja\n    nimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\n    tulosta_vaarinpain(nimilista)\n    print()\n    tulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Nyt myös globaalin muuttujan määrittely on siirtynyt if-lohkoon.

    TMC-testit suoritetaan aina siten, että mitään if-lohkon sisällä olevaa koodia ei huomioida. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan nimilista mitä ei testejä suoritettaessa ole ollenkaan olemassa.

    Varoitus: parametrin ylikirjoittaminen ja liian aikainen return

    Ennen tämän osan tehtäviin menemistä on syytä kiinnittää huomiota pariin potentiaaliseen ongelmalähteeseen. Tarkastellaan funktiota, joka kertoo löytyykö parametrina oleva luku listalta:

    def luku_listalla(luvut: list, luku: int):\n    for luku in luvut:\n        if luku == luku:\n            return True\n        else:\n            return False

    Funktio palauttaa jostain syystä aina True. Syynä tälle on se, että for-silmukka ylikirjoittaa parametrin luku arvon, ja tämän takia if-lauseen ehto on aina tosi.

    Ongelmasta päästään eroon nimeämällä parametri uudelleen:

    def luku_listalla(luvut: list, etsittava_luku: int):\n    for luku in luvut:\n        if luku == etsittava_luku:\n            return True\n        else:\n            return False

    Nyt if-lauseen ehto on kunnossa. Funktiossa on kuitenkin uusi ongelma, se ei näytä edelleenkään toimivan. Esim. seuraava kokeilu tuo esiin bugin:

    on = luku_listalla([1, 2, 3, 4], 3)\nprint(on)  # tulostuu False

    Vika on nyt siinä että funktiosta poistutaan liian aikaisin. Funktio tarkistaa ainoastaan ensimmäisen luvun ja riippuen sen arvosta palauttaa heti joko arvon True tai False. Lopullista tuomiota, eli tietoa siitä että luku ei ole listalla ei voi kuitenkaan antaa ennen kuin kaikki luvut on tarkastettu. Komento return False pitääkin siirtää silmukan ulkopuolelle:

    def luku_listalla(luvut: list, etsittava_luku: int):\n    for luku in luvut:\n        if luku == etsittava_luku:\n            return True\n\n    return False

    Tarkastellaan vielä yhtä virheellistä esimerkkiä:

    def luvut_erisuuret(luvut: list):\n    # apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu\n    luvut = []\n    for luku in luvut:\n        # joko luku on nähty?\n        if luku in luvut:\n            return False\n        luvut.append(luku)\n\n    return True\n\non = luvut_erisuuret([1, 2, 2])\nprint(on)  # tulostuu True

    Funktio siis yrittää testata ovatko kaikki listan alkiot erisuuria. Se kuitenkin palauttaa aina arvon True.

    Ongelmana on jälleen se, että funktio vahingossa ylikirjottaa parametrinsa arvon. Funktio yrittää käyttää muuttujaa luvut pitämään kirjaa jo vastaan tulleista luvuista ja tämä ylikirjoittaa parametrin. Lääke ongelmaan on muuttujan uudelleennimeäminen:

    def luvut_erisuuret(luvut: list):\n    # apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu\n    havaitut_luvut = []\n    for luku in luvut:\n        # joko luku on nähty?\n        if luku in havaitut_luvut:\n            return False\n        havaitut_luvut.append(luku)\n\n    return True\n\non = luvut_erisuuret([1, 2, 2])\nprint(on)  # tulostuu False

    Nämä kuten oikeastaan kaikki koodia vaivaavat ongelmat selviävät debuggerilla tai visualisaattorilla, jonka käytön tärkeyttä ei voi olla korostamatta liikaa.

    HUOM: tämä ja seuraava tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa

    Tee funktio pisin(merkkijonot: list), joka saa parametrikseen listan merkkijonoja. Funktio etsii ja palauttaa listalta pisimmän merkkijonon. Voit olettaa, että vain yksi jonoista on pisin.

    Esimerkkikutsu:

    \nif __name__ == \"__main__\":\n    jonot = [\"moi\", \"moikka\", \"heip\", \"hellurei\", \"terve\"]\n    print(pisin(jonot))\n

    hellurei

    Sisäkkäiset listat

    Listan alkiot voivat olla myös listoja:

    lista = [[5, 2, 3], [4, 1], [2, 2, 5, 1]]\nprint(lista)\nprint(lista[1])\nprint(lista[1][0])

    [[5, 2, 3], [4, 1], [2, 2, 5, 1]]\n[4, 1]\n4

    Mihin voimme käyttää listoja jonka sisällä on listoja?

    Voisimme esimerkiksi esittää henkilön tiedot listana, jossa ensimmäisenä alkiona on henkilön nimi, toisena ikä ja kolmantena kengännumero:

    [\"Anu\", 10, 26]

    Vastaavasti joukko henkilöitä on lista, joka sisältää yksittäisiä henkilöä kuvaavia listoja:

    henkilot = [[\"Anu\", 10, 26], [\"Petteri\", 7, 22], [\"Emilia\", 32, 37], [\"Antti\", 39, 44]]\n\nfor henkilo in henkilot:\n  nimi = henkilo[0]\n  ika = henkilo[1]\n  kenka = henkilo[2]\n  print(f\"{nimi}: ikä {ika} vuotta, kengännumero {kenka}\")

    Anu: ikä 10 vuotta, kengännumero 26\nPetteri: ikä 7 vuotta, kengännumero 22\nEmilia: ikä 32 vuotta, kengännumero 37\nAntti: ikä 39 vuotta, kengännumero 44

    Huomaa, miten for-lause käy läpi henkilöt yksitellen, eli toiston lohko-osassa muuttuja henkilo saa yksi kerrallaan arvokseen kutakin henkilöä esittävän listan.

    Lista ei ole välttämättä paras Pythonin tietorakenne henkilön tietojen esittämiseen. Tutustumme pian sanakirjaan, joka on usein luontevampi tapa hoitaa vastaava tilanne.

    Matriisit

    Sisäkkäisten listojen avulla voidaan myös esittää matriisi eli kaksiulotteinen taulukko.

    Esimerkiksi matriisi

    \n \n \n \n \n \n \"5\n \n \n

    voitaisiin mallintaa kaksiulotteisena listana näin:

    matriisi = [[1, 2, 3], [3, 2, 1], [4, 5, 6]]

    Koska matriisi on lista listoja, matriisin alkioihin viitataan käyttämällä peräkkäisiä hakasulkuja. Ensimmäinen indeksi viittaa riviin ja toinen sarakkeeseen. Niinpä esimerkiksi m[0][1] tarkoittaa ensimmäisen rivin toista alkiota (kun muistetaan, että indeksointi alkaa nollasta).

    matriisi = [[1, 2, 3], [3, 2, 1], [4, 5, 6]]\n\nprint(matriisi[0][1])\nmatriisi[1][0] = 10\nprint(matriisi)

    2\n[[1, 2, 3], [10, 2, 1], [4, 5, 6]]

    Voimme käydä läpi matriisin rivit for-silmukalla. Esimerkiksi seuraava koodi tulostaa matriisin rivit allekkain:

    matriisi = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n\nfor rivi in matriisi:\n    print(rivi)

    [1, 2, 3]\n[4, 5, 6]\n[7, 8, 9]

    Seuraava koodi puolestaan tulostaa matriisin alkiot yksitellen kahden for-silmukan avulla:

    matriisi = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n\nfor rivi in matriisi:\n    print(\"uusi rivi\")\n    for alkio in rivi:\n        print(alkio)

    uusi rivi\n1\n2\n3\nuusi rivi\n4\n5\n6\nuusi rivi\n7\n8\n9

    Sisäkkäisiä listoja käyttävän koodin visualisointi

    Jos sisäkkäisiä listoja käsittelevät ohjelmat tuntuvat hankalalta ymmärtää, kannattaa ehdottomasti havainnollistaa niitä Python Tutorin visualisaattorilla. Seuraavassa kuva edellisen esimerkin visualisoinnista:

    \n \n \n \n \n \n \"5\n \n \n

    Kuten kuva paljastaa, 3x3-matriisi koostuu teknisesti ottaen neljästä listasta. Ensimmäinen lista edustaa koko matriisia ja sen alkioina on erillisiä rivejä edustavat listat.

    Kuva havainnollistaa jo sitä seikkaa, josta puhumme tarkemmin seuraavassa osassa: moniulotteisessa listassa listat eivät ole todellisuudessa sisäkkäin, vaan matriisia edustava lista \"viittaa\" jokaista riviä edustavaan listaan.

    Kuvassa tulostus on edennyt matriisin toiselle riville, johon muuttuja rivi parhaillaan viittaa. Muuttuja alkio kertoo sen alkion, jonka kohdalla tulostus on menossa. Muuttujan arvo on nyt keskimmäisen rivin keskimmäinen eli 5.

    Lisää matriisin käsittelyä

    Matriisin yksittäisten rivien käsittely on helppoa, riittää että valitaan haluttu rivi. Esimerkiksi seuraava funktio laskee halutun rivin alkioiden summan:

    def rivin_alkioiden_summa(matriisi, rivi_nro: int):\n    # tarkasteluun valitaan yksi rivi\n    rivi = matriisi[rivi_nro]\n    summa = 0\n    for alkio in rivi:\n        summa += alkio\n\n    return summa\n\nm = [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n\nsumma = rivin_alkioiden_summa(m, 1)\nprint(summa) # tulostuu 33 (saadaan laskemalla 9 + 1 + 12 + 11)

    Jos taas haluttaisiin laskea tietyn sarakkeen eli \"pystyrivin\" alkioiden summa, tilanne olisi jo monimutkaisempi:

    def sarakkeen_alkioiden_summa(matriisi, sarake_nro: int):\n    # summaan lisätään kaikkien rivien halutussa kohdassa oleva alkio\n    summa = 0\n    for rivi in matriisi:\n        summa += rivi[sarake_nro]\n\n    return summa\n\nm = [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n\nsumma = sarakkeen_alkioiden_summa(m, 2)\nprint(summa) # tulostuu 39 (saadaan laskemalla 3 + 12 + 9 + 15)

    Tarkasteltava sarake siis koostuu jokaisen rivin paikassa 2 olevasta alkiosta.

    Näidenkin ohjelmien toiminta kannattaa ehdottomasti käydä läpi visualisaattorilla!

    Matriisissa olevan yksittäisen arvon vaihtaminen on helppoa. Riittää että valitaan matriisin sisältä oikea rivi ja sen sisältä sarake:

    def vaihda_arvoon(matriisi, rivi_nro: int, sarake_nro: int, arvo: int):\n    # haetaan oikea rivi\n    rivi = matriisi[rivi_nro]\n    # ja sen sisältä oikea kohta\n    rivi[sarake_nro] = arvo\n\nm = [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n\nprint(m)\nvaihda_arvoon(m, 2, 3, 1000)\nprint(m)

    [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n[[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 1000], [2, 9, 15, 1]]

    Mikäli halutaan muuttaa matriisin sisältöä silmukan sisällä, ei ole mahdollista käyttää \"normaalia\" for-silmukkaa, sillä muutettaessa sisältöä on pakko tietää muutettavien alkioiden indeksit.

    Tämä taas onnistuu while-silmukalla tai for-silmukalla hyödyntämällä range-funktiota iteroinnissa. Esimerkiksi seuraava koodi kasvattaa jokaista matriisin alkiota yhdellä:

    m = [[1,2,3], [4,5,6], [7,8,9]]\n\nfor i in range(len(m)):\n    for j in range(len(m[i])):\n        m[i][j] += 1\n\nprint(m)

    [[2, 3, 4], [5, 6, 7], [8, 9, 10]]

    Ulompi silmukka käy range-funktion avulla läpi arvot nollasta matriisin pituuteen (eli matriisin rivien määrään) ja sisempi silmukka jokaisen rivin alkiot nollasta rivin pituuteen.

    HUOM: tämä ja edellinen tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa

    Tee funktio laske_alkiot(matriisi: list, alkio: int), joka saa parametrikseen kaksiulotteisen kokonaislukutaulukon. Funktio laskee, kuinka monta annetun alkion mukaista arvoa taulukosta löytyy.

    Esimerkiksi

    m = [[1, 2, 1], [0, 3, 4], [1, 0, 0]]\nprint(laske_alkiot(m, 1))

    3

    Kaksiulotteinen taulukko pelin tietorakenteena

    Matriisi sopii hyvin monien pelien tietorakenteeksi. Esim. sudokun ruudukko

    \n \n \n \n \n \n \"5\n \n \n

    voitaisiin esittää seuraavana matriisina:

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [0, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [0, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]

    Arvolla nolla siis kuvataan tilanne, jossa ruutu on vielä tyhjä.

    Seuraavassa vielä yksinkertainen versio sudokun tulostavasta metodista:

    def tulosta(sudoku):\n    for rivi in sudoku:\n        for ruutu in rivi:\n            if ruutu > 0:\n                print(f\" {ruutu}\", end=\"\")\n            else:\n                print(\" _\", end=\"\")\n        print()\n\ntulosta(sudoku)

    Tulostus näyttää seuraavalta:

    \n 9 _ _ _ 8 _ 3 _ _\n _ _ _ 2 5 _ 7 _ _\n _ 2 _ 3 _ _ _ _ 4\n _ 9 4 _ _ _ _ _ _\n _ _ _ 7 3 _ 5 6 _\n 7 _ 5 _ 6 _ 4 _ _\n _ _ 7 8 _ 3 9 _ _\n _ _ 1 _ _ _ _ _ 3\n 3 _ _ _ _ _ _ _ 2\n

    Vastaavalla tavalla on mahdollista kuvata moni tuttu peli (esim. shakki, miinaharava, laivan upotus, mastermind, ...) matriisina. Pelistä riippuu, mikä on sopiva tapa \"koodata\" pelin tilanne matriisiin.

    Go-pelissä lisätään vuorotellen mustia ja valkoisia kiviä pelilaudalle. Pelin voittaa se pelaaja, joka saa omilla kivillään rajattua enemmän aluetta pelilaudalta.

    Kirjoita funktio kumpi_voitti(pelilauta: list), joka saa parametrikseen kaksiulotteisen taulukon, joka kuvaa pelilautaa. Taulukko koostuu kokonaisluvuista seuraavasti:

      \n
    • 0: tyhjä ruutu
    • \n
    • 1: pelaajan 1 nappula
    • \n
    • 2: pelaajan 2 nappula
    • \n

    Esimerkissä pelilaudan koko voi olla mikä tahansa.

    Funktio palauttaa arvon 1, jos pelaaja 1 on voittanut pelin, ja arvon 2, jos pelaaja 2 on voittanut pelin. Jos molemmilla pelaajilla on yhtä paljon nappuloita laudalla, funktio palauttaa arvon 0.

    Tee funktio rivi_oikein(sudoku: list, rivi_nro: int), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja rivin numeron kertovan kokonaisluvun (rivit on numeroitu nollasta alkaen). Metodi palauttaa tiedon, onko rivi oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran.

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(rivi_oikein(sudoku, 0))\nprint(rivi_oikein(sudoku, 1))

    True\nFalse

    Tee funktio sarake_oikein(sudoku: list, sarake_nro: int), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja sarakkeen (eli pystyrivin) numeron kertovan kokonaisluvun. Metodi palauttaa tiedon, onko sarake oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran.

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(sarake_oikein(sudoku, 0))\nprint(sarake_oikein(sudoku, 1))

    False\nTrue

    Tee funktio nelio_oikein(sudoku: list, rivi_nro: int, sarake_nro: int), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon sekä yhden ruudun paikan kertovat rivi- ja sarakenumerot.

    Funktio kertoo onko parametrina saadusta rivi/sarakenumerosta alkava 3x3-kokoinen neliö oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran.

    Huomaa, että tässä tehtävässä toteutettava funktio on hieman yleiskäyttöisempi kuin sudokussa oikeasti tarvitaan. Todellisuudessahan oikeassa sudokussa tarkastellaan ainoastaan kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavia neliöitä.

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(nelio_oikein(sudoku, 0, 0))\nprint(nelio_oikein(sudoku, 1, 2))

    False\nTrue

    Ensimmäisen funktiokutsun tarkastelema kohdasta 0, 0 alkava neliö on

    \n9 0 0\n2 0 0\n0 2 0\n

    Toisen funktiokutsun tarkastelema kohdasta riviltä 1 ja sarakkeesta 2 alkava neliö on

    \n0 2 5\n0 3 0\n4 0 0\n

    Tämä neliö on siis sellainen, jota oikeassa sudokussa ei tarkasteltaisi.

    Tee funktio sudoku_oikein(sudoku: list), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon. Funktio kertoo käyttäen edellisen kolmen tehtävän funktioita (kopioi ne tämän tehtävän koodin joukkoon), onko parametrina saatu ruudukko täytetty oikein, eli sen jokainen rivi, jokainen sarake sekä kaikki erilliset 3x3-neliöt sisältävät korkeintaan kertaalleen jokaisen luvuista 1–9.

    Huom: ylempänä olevaan sudokuruudukkoa esittävään kuvaan on merkitty ne 3x3-neliöt, joita sudokua ratkaistessa tulee tarkastella.\nNämä ovat siis kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavat yhdeksän neliöä.

    sudoku1 = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(sudoku_oikein(sudoku1))\n\nsudoku2 = [\n  [2, 6, 7, 8, 3, 9, 5, 0, 4],\n  [9, 0, 3, 5, 1, 0, 6, 0, 0],\n  [0, 5, 1, 6, 0, 0, 8, 3, 9],\n  [5, 1, 9, 0, 4, 6, 3, 2, 8],\n  [8, 0, 2, 1, 0, 5, 7, 0, 6],\n  [6, 7, 4, 3, 2, 0, 0, 0, 5],\n  [0, 0, 0, 4, 5, 7, 2, 6, 3],\n  [3, 2, 0, 0, 8, 0, 0, 5, 7],\n  [7, 4, 5, 0, 0, 3, 9, 0, 1]\n]\n\nprint(sudoku_oikein(sudoku2))

    False\nTrue

    ","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/1-lisaa-listoista.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda listoja, joissa on erityyppistä tietoa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten listoja voi käyttää tiedon ryhmittelyyn"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tallentaa matriisin kaksiulotteisena listana"}]},{"type":"text","value":"\n"}]}]},{"type":"comment","value":"vastaava teksti löytyy osioista 3-1, 5-1 ja 6-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Kurssin tehtävien tekemisestä"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvosteluperusteet"}]},{"type":"text","value":" toteavat, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä."}]},{"type":"text","value":" Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan"}]},{"type":"text","value":". Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-listoista","style":"position:relative;"},"children":[{"type":"text","value":"Lisää listoista"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-listoista","ariaLabel":"lisaa listoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viime kerralla käsiteltiin lähes yksinomaan listoja, joissa alkiot ovat kokonaislukuja. Listoihin voi kuitenkin tallentaa minkä tahansa tyyppisiä arvoja. Esimerkiksi voimme tallentaa listaan merkkijonoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kalle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Listalla nimiä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimet aakkosjärjestyksessä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Maija', 'Liisa', 'Pekka']\n['Maija', 'Liisa', 'Pekka', 'Kalle']\nListalla nimiä: 4\nNimet aakkosjärjestyksessä:\nKalle\nLiisa\nMaija\nPekka"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samalla tavalla listalle voidaan tallentaa liukulukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"mittaukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1.1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14.6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"21.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19.2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" mittaus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" mittaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mittaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkeskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mittaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mittaukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keskiarvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"-2.5\n1.1\n7.5\n14.6\n21.0\n19.2\nKeskiarvo: 10.15"}]}]},{"type":"comment","value":"vastaava varoitusteksti löytyy osioista 3-4, 4-6 ja 5-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"h2","properties":{"id":"muistutus-globaalin-muuttujan-kayton-sudenkuoppa","style":"position:relative;"},"children":[{"type":"text","value":"Muistutus: globaalin muuttujan käytön sudenkuoppa"},{"type":"element","tagName":"a","properties":{"href":"#muistutus-globaalin-muuttujan-kayton-sudenkuoppa","ariaLabel":"muistutus globaalin muuttujan kayton sudenkuoppa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella, eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"globaaleiksi"}]},{"type":"text","value":" muuttujiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\nnimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Margaret\nErkki\nEmilia\nAntti"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":" olevat nimet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten olemme nähneet, kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_vaarinpain"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kaikki funktiota testaava koodi tämän lohkon sisälle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# globaali muuttuja"}]},{"type":"text","value":"\n nimilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Margaret\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta_vaarinpain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lupu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt myös globaalin muuttujan määrittely on siirtynyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TMC-testit suoritetaan aina siten, että mitään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":"-lohkon sisällä olevaa koodia ei huomioida. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimilista"}]},{"type":"text","value":" mitä ei testejä suoritettaessa ole ollenkaan olemassa."}]},{"type":"element","tagName":"h2","properties":{"id":"varoitus-parametrin-ylikirjoittaminen-ja-liian-aikainen-return","style":"position:relative;"},"children":[{"type":"text","value":"Varoitus: parametrin ylikirjoittaminen ja liian aikainen return"},{"type":"element","tagName":"a","properties":{"href":"#varoitus-parametrin-ylikirjoittaminen-ja-liian-aikainen-return","ariaLabel":"varoitus parametrin ylikirjoittaminen ja liian aikainen return permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ennen tämän osan tehtäviin menemistä on syytä kiinnittää huomiota pariin potentiaaliseen ongelmalähteeseen. Tarkastellaan funktiota, joka kertoo löytyykö parametrina oleva luku listalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luku_listalla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa jostain syystä aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":". Syynä tälle on se, että for-silmukka ylikirjoittaa parametrin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" arvon, ja tämän takia if-lauseen ehto on aina tosi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelmasta päästään eroon nimeämällä parametri uudelleen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luku_listalla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt if-lauseen ehto on kunnossa. Funktiossa on kuitenkin uusi ongelma, se ei näytä edelleenkään toimivan. Esim. seuraava kokeilu tuo esiin bugin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"on "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku_listalla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vika on nyt siinä että funktiosta poistutaan liian aikaisin. Funktio tarkistaa ainoastaan ensimmäisen luvun ja riippuen sen arvosta palauttaa heti joko arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":". Lopullista tuomiota, eli tietoa siitä että luku "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole listalla"}]},{"type":"text","value":" ei voi kuitenkaan antaa ennen kuin kaikki luvut on tarkastettu. Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"return False"}]},{"type":"text","value":" pitääkin siirtää silmukan ulkopuolelle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luku_listalla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" etsittava_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä yhtä virheellistä esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luvut_erisuuret"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# joko luku on nähty?"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\non "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luvut_erisuuret"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu True"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio siis yrittää testata ovatko kaikki listan alkiot erisuuria. Se kuitenkin palauttaa aina arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelmana on jälleen se, että funktio vahingossa ylikirjottaa parametrinsa arvon. Funktio yrittää käyttää muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":" pitämään kirjaa jo vastaan tulleista luvuista ja tämä ylikirjoittaa parametrin. Lääke ongelmaan on muuttujan uudelleennimeäminen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"luvut_erisuuret"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu"}]},{"type":"text","value":"\n havaitut_luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# joko luku on nähty?"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" havaitut_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n havaitut_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\non "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luvut_erisuuret"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"on"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nämä kuten oikeastaan kaikki koodia vaivaavat ongelmat selviävät debuggerilla tai "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":", jonka käytön tärkeyttä ei voi olla korostamatta liikaa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pisin merkkijono","tmcname":"osa05-01a_pisin_merkkijono"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"HUOM:"}]},{"type":"text","value":" tämä ja seuraava tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin(merkkijonot: list)"}]},{"type":"text","value":", joka saa parametrikseen listan merkkijonoja. Funktio etsii ja palauttaa listalta pisimmän merkkijonon. Voit olettaa, että vain yksi jonoista on pisin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkikutsu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n jonot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"moikka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"heip\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hellurei\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"terve\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jonot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"hellurei"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaiset-listat","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäiset listat"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaiset-listat","ariaLabel":"sisakkaiset listat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkiot voivat olla myös listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[5, 2, 3], [4, 1], [2, 2, 5, 1]]\n[4, 1]\n4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mihin voimme käyttää listoja jonka sisällä on listoja?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voisimme esimerkiksi esittää henkilön tiedot listana, jossa ensimmäisenä alkiona on henkilön nimi, toisena ikä ja kolmantena kengännumero:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti joukko henkilöitä on lista, joka sisältää yksittäisiä henkilöä kuvaavia listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"26"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Petteri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"37"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"39"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kenka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": ikä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" vuotta, kengännumero "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kenka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anu: ikä 10 vuotta, kengännumero 26\nPetteri: ikä 7 vuotta, kengännumero 22\nEmilia: ikä 32 vuotta, kengännumero 37\nAntti: ikä 39 vuotta, kengännumero 44"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, miten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lause käy läpi henkilöt yksitellen, eli toiston lohko-osassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo"}]},{"type":"text","value":" saa yksi kerrallaan arvokseen kutakin henkilöä esittävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lista ei ole välttämättä paras Pythonin tietorakenne henkilön tietojen esittämiseen. Tutustumme pian "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sanakirjaan"}]},{"type":"text","value":", joka on usein luontevampi tapa hoitaa vastaava tilanne."}]},{"type":"element","tagName":"h2","properties":{"id":"matriisit","style":"position:relative;"},"children":[{"type":"text","value":"Matriisit"},{"type":"element","tagName":"a","properties":{"href":"#matriisit","ariaLabel":"matriisit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäkkäisten listojen avulla voidaan myös esittää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"matriisi"}]},{"type":"text","value":" eli kaksiulotteinen taulukko."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi matriisi"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 151px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/57e8504bd70c2538405be5b5e1572347/29fe9/5_1_0.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABw0lEQVQ4y62UyYoCQQyG+3EF38YHUPHoyYsLeFLw4smDO654UVBxAXfN8AVS1LSt4zATCJ1OUn+l8qcqKBQKMhwOpd1uq3Y6Hen3+1Iul6XZbEq323UxbHzEyCHX1pgGgEXJbDaTV/IuFrADst/vpdFouMBgMJDT6aR2r9fTyhB8xJDH4yH1el02m43+3+93CSgT2W63kkwmHeBoNHKAuVxOstmsA/RPlUgktBVPgPzsdjv9Iiw6n89qT6dTmc/nauMzwNvtpjHLo+KA5kbJZDJx4L7gI/ayhzBGk+kLO6MsqFQqyuR4PHYxbHzEyMFnMVqEBtZsyr5cLqpUwcLD4SDX61UVP198xMixfF8Dv6G+UA0AYcFHJS+PbKSs12tJpVIOxCelWq1KsViMZJkJYK0jxeZwtVpJOp2W4/HoAG1s8vm8lEqlSED6+Q3wt0dmVN4eOUwK3z+R8snYmP+jsfn3wTaW7T7TozDLy+VSSQtfPUhYLBZ61CeWuZPxeNyB+CzDfiaTeWKZFyoWi2krIl+bWq3mdvMr5PlqtVpPFQLAjNrzpRX6RzanPV8/3RTL9e1vzxf98wGtWmJGED4f0F9DhV9fOel+Sn/2BgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/57e8504bd70c2538405be5b5e1572347/8d139/5_1_0.webp 151w"],"sizes":"(max-width: 151px) 100vw, 151px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/57e8504bd70c2538405be5b5e1572347/29fe9/5_1_0.png 151w"],"sizes":"(max-width: 151px) 100vw, 151px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/57e8504bd70c2538405be5b5e1572347/29fe9/5_1_0.png","alt":"5 1 0","title":"5 1 0","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"voitaisiin mallintaa kaksiulotteisena listana näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska matriisi on lista listoja, matriisin alkioihin viitataan käyttämällä peräkkäisiä hakasulkuja. Ensimmäinen indeksi viittaa riviin ja toinen sarakkeeseen. Niinpä esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"m[0][1]"}]},{"type":"text","value":" tarkoittaa ensimmäisen rivin toista alkiota (kun muistetaan, että indeksointi alkaa nollasta)."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n[[1, 2, 3], [10, 2, 1], [4, 5, 6]]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käydä läpi matriisin rivit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla. Esimerkiksi seuraava koodi tulostaa matriisin rivit allekkain:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3]\n[4, 5, 6]\n[7, 8, 9]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi puolestaan tulostaa matriisin alkiot yksitellen kahden "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"uusi rivi\n1\n2\n3\nuusi rivi\n4\n5\n6\nuusi rivi\n7\n8\n9"}]}]},{"type":"element","tagName":"h2","properties":{"id":"sisakkaisia-listoja-kayttavan-koodin-visualisointi","style":"position:relative;"},"children":[{"type":"text","value":"Sisäkkäisiä listoja käyttävän koodin visualisointi"},{"type":"element","tagName":"a","properties":{"href":"#sisakkaisia-listoja-kayttavan-koodin-visualisointi","ariaLabel":"sisakkaisia listoja kayttavan koodin visualisointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos sisäkkäisiä listoja käsittelevät ohjelmat tuntuvat hankalalta ymmärtää, kannattaa ehdottomasti havainnollistaa niitä Python Tutorin "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":". Seuraavassa kuva edellisen esimerkin visualisoinnista:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9450893ea3ce24ad2a607cde889d3e70/769f8/5_1_0a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABFElEQVQY03WQ207DMAyG+/7PtgtuBhMSDG1rx+jWJG0OtuMDamCIm32yLCv6fzt2Z2Yigoi10rzkY38dLq4UICIAUFUiSikRESJSQ0S00ZkZiyzLkn7JeNcBQOtLYZ6Z2RrNJSLMzKu5QiHEvu8Ph8P5PPzp/qm1lCzCpaxfbI9rrGYhNDMACGEZrz6mdWBrLmZGxK/78+6tB5IY/ZKOGW4IvUjoYnDOB+cc16pqBRhJ7jPXjMQv+6/N9iOC5jJdbk9uPqX0DHDqatsPEd3K1MJN05RS+lmOKvuIV5dYxNQy8Od1C2Wnpl3MtOSaYslz8CEMwzCOY4yRiOwBfh5ifDeDjkVZVETtMdrOdi+tgPd+Q3T8Bqyl0FSTvoR1AAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9450893ea3ce24ad2a607cde889d3e70/a0b58/5_1_0a.webp 230w","/static/9450893ea3ce24ad2a607cde889d3e70/bc10c/5_1_0a.webp 460w","/static/9450893ea3ce24ad2a607cde889d3e70/966d8/5_1_0a.webp 920w","/static/9450893ea3ce24ad2a607cde889d3e70/445df/5_1_0a.webp 1380w","/static/9450893ea3ce24ad2a607cde889d3e70/78de1/5_1_0a.webp 1840w","/static/9450893ea3ce24ad2a607cde889d3e70/7e82b/5_1_0a.webp 1924w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9450893ea3ce24ad2a607cde889d3e70/81c8e/5_1_0a.png 230w","/static/9450893ea3ce24ad2a607cde889d3e70/08a84/5_1_0a.png 460w","/static/9450893ea3ce24ad2a607cde889d3e70/c0255/5_1_0a.png 920w","/static/9450893ea3ce24ad2a607cde889d3e70/b1001/5_1_0a.png 1380w","/static/9450893ea3ce24ad2a607cde889d3e70/161ec/5_1_0a.png 1840w","/static/9450893ea3ce24ad2a607cde889d3e70/769f8/5_1_0a.png 1924w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9450893ea3ce24ad2a607cde889d3e70/c0255/5_1_0a.png","alt":"5 1 0a","title":"5 1 0a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten kuva paljastaa, 3x3-matriisi koostuu teknisesti ottaen neljästä listasta. Ensimmäinen lista edustaa koko matriisia ja sen alkioina on erillisiä rivejä edustavat listat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuva havainnollistaa jo sitä seikkaa, josta puhumme tarkemmin "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/2-viittaukset"},"children":[{"type":"text","value":"seuraavassa osassa"}]},{"type":"text","value":": moniulotteisessa listassa listat eivät ole todellisuudessa sisäkkäin, vaan matriisia edustava lista \"viittaa\" jokaista riviä edustavaan listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuvassa tulostus on edennyt matriisin toiselle riville, johon muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivi"}]},{"type":"text","value":" parhaillaan viittaa. Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alkio"}]},{"type":"text","value":" kertoo sen alkion, jonka kohdalla tulostus on menossa. Muuttujan arvo on nyt keskimmäisen rivin keskimmäinen eli 5."}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-matriisin-kasittelya","style":"position:relative;"},"children":[{"type":"text","value":"Lisää matriisin käsittelyä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-matriisin-kasittelya","ariaLabel":"lisaa matriisin kasittelya permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matriisin yksittäisten rivien käsittely on helppoa, riittää että valitaan haluttu rivi. Esimerkiksi seuraava funktio laskee halutun rivin alkioiden summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rivin_alkioiden_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tarkasteluun valitaan yksi rivi"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" alkio\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa\n\nm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivin_alkioiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu 33 (saadaan laskemalla 9 + 1 + 12 + 11)"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos taas haluttaisiin laskea tietyn sarakkeen eli \"pystyrivin\" alkioiden summa, tilanne olisi jo monimutkaisempi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sarakkeen_alkioiden_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# summaan lisätään kaikkien rivien halutussa kohdassa oleva alkio"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" summa\n\nm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nsumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sarakkeen_alkioiden_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostuu 39 (saadaan laskemalla 3 + 12 + 9 + 15)"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkasteltava sarake siis koostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jokaisen rivin"}]},{"type":"text","value":" paikassa 2 olevasta alkiosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näidenkin ohjelmien toiminta kannattaa ehdottomasti käydä läpi "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matriisissa olevan yksittäisen arvon vaihtaminen on helppoa. Riittää että valitaan matriisin sisältä oikea rivi ja sen sisältä sarake:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vaihda_arvoon"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# haetaan oikea rivi"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"rivi_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja sen sisältä oikea kohta"}]},{"type":"text","value":"\n rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sarake_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvo\n\nm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvaihda_arvoon"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n[[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 1000], [2, 9, 15, 1]]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli halutaan muuttaa matriisin sisältöä silmukan sisällä, ei ole mahdollista käyttää \"normaalia\" for-silmukkaa, sillä muutettaessa sisältöä on pakko tietää muutettavien alkioiden indeksit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä taas onnistuu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":"-silmukalla tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla hyödyntämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktiota iteroinnissa. Esimerkiksi seuraava koodi kasvattaa jokaista matriisin alkiota yhdellä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"m "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" j "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"j"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[2, 3, 4], [5, 6, 7], [8, 9, 10]]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ulompi silmukka käy "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":"-funktion avulla läpi arvot nollasta matriisin pituuteen (eli matriisin rivien määrään) ja sisempi silmukka jokaisen rivin alkiot nollasta rivin pituuteen."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkioiden määrä","tmcname":"osa05-01_alkoiden_maara"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"HUOM:"}]},{"type":"text","value":" tämä ja edellinen tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laske_alkiot(matriisi: list, alkio: int)"}]},{"type":"text","value":", joka saa parametrikseen kaksiulotteisen kokonaislukutaulukon. Funktio laskee, kuinka monta annetun alkion mukaista arvoa taulukosta löytyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"m "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"kaksiulotteinen-taulukko-pelin-tietorakenteena","style":"position:relative;"},"children":[{"type":"text","value":"Kaksiulotteinen taulukko pelin tietorakenteena"},{"type":"element","tagName":"a","properties":{"href":"#kaksiulotteinen-taulukko-pelin-tietorakenteena","ariaLabel":"kaksiulotteinen taulukko pelin tietorakenteena permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matriisi sopii hyvin monien pelien tietorakenteeksi. Esim. sudokun ruudukko"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 410px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/5a4d938ae5202e8db72b179ff4d76293/d68e4/5_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 100.43478260869566%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAABYlAAAWJQFJUiTwAAADmUlEQVQ4y0WUWXOqPACG/fX9B163vTg67dQuap2OYBfbutQFRSmQoDGQQBAQqsXd5hvLmfO915l5kndJStM0XdcBAJ7nfX5+uq5bKpUIIQghTdMAAISQfr//8vJCCNE0zbZtVVWn0ylCKAV+5bou59w0zcPhUCgUVqtVFEWKomCMV6uVYRjPz8/T6dS27c1mY1kW55wQktJ13XGc4XAYBIEsy9Pp9OLiAmMMITQMAwBgWVar1SqXy8kxx3EGg4Hv+xDClOu6+/3e933OOWOMcy6KIsY4DEP7V7vdbjKZNJvN+Xzued5+v0+OMcZSyd0kSbJtu9PpUEr//PkDIVRVFQCgqup4PK7Vag8PD4wxSZJM05QkiTGmadqRfDgcHMfxPI9SyjkXBIEQ4nnecrn8+vpar9fj8ViSpIR2OBwopaZpHt98f39fLBaz2WyhUMhkMqIonpyc5HK5q6ur29vb6+vrQqFwdnaWTqcFQchms6VSKZvN3t3dvby8pCilm80GITSZTAghEMJ8Pr/ZbGazWRRFQRB8f38DAFqtVuLwer3+322EUBiGSVoAANM0c7lcGIaEEMYYpdTzPFmWX19fk8zm8zmEcLlcHnPGGEdRhBDabreGYaxWq3w+DyG0LAv+KgxDRVFEUXRdV1VVCCFCaL1eY4z/kiGEcRxrmrZYLG5ubizLIoQYv/J9X5blSqUym80Gg0GSfxzHRzJCiFJq2/bhcMAYu66bz+fjOA6CACFECFksFrquV6vVIAgSgzDGPz8/lmWl2u12t9vtdDoY40ajIUnS6enpaDRSFKVSqdTrdcMw3t7eLi8vW61Wu92GEH58fGCMFUVJ1Wq1drstiqIsy+VyuVqtptPpcrn89PTUaDRqtdrj42Mulzs/P6/X66IottttQRAkSep0On/rGQQB59x13SiKyuVyUs/lchnHMWNsOBy+v7/PZjPf9//V03XdlKqqpmkmk5AkiVKayWRs206M0XXdNM1msykIQhAEvV6PECJJ0mQyAQCkHMfZbreO43DOKaWMsWKxuFqtwjCcz+dhGMZxbBhGUhJK6W63M03TdV1K6ZGMMR4Oh57n9Xo927az2WwS8mg0AgBgjBPydDqVZZlS2u/3Hcc5khFClmWFYcg5t22bc14qlXa73WKxiOM4GcZoNOp2u/+GkczGcZzUeDxOps8YSz6GarVqWVbSdoSQaZqKonQ6HcYYAIBSqut60qL/AD7hB6pgN21XAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a4d938ae5202e8db72b179ff4d76293/a0b58/5_1_1.webp 230w","/static/5a4d938ae5202e8db72b179ff4d76293/0cb6c/5_1_1.webp 410w"],"sizes":"(max-width: 410px) 100vw, 410px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/5a4d938ae5202e8db72b179ff4d76293/81c8e/5_1_1.png 230w","/static/5a4d938ae5202e8db72b179ff4d76293/d68e4/5_1_1.png 410w"],"sizes":"(max-width: 410px) 100vw, 410px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/5a4d938ae5202e8db72b179ff4d76293/d68e4/5_1_1.png","alt":"5 1 1","title":"5 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"voitaisiin esittää seuraavana matriisina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvolla nolla siis kuvataan tilanne, jossa ruutu on vielä tyhjä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa vielä yksinkertainen versio sudokun tulostavasta metodista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ruutu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ruutu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" _\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"\n 9 _ _ _ 8 _ 3 _ _\n _ _ _ 2 5 _ 7 _ _\n _ 2 _ 3 _ _ _ _ 4\n _ 9 4 _ _ _ _ _ _\n _ _ _ 7 3 _ 5 6 _\n 7 _ 5 _ 6 _ 4 _ _\n _ _ 7 8 _ 3 9 _ _\n _ _ 1 _ _ _ _ _ 3\n 3 _ _ _ _ _ _ _ 2\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavalla tavalla on mahdollista kuvata moni tuttu peli (esim. shakki, miinaharava, laivan upotus, mastermind, ...) matriisina. Pelistä riippuu, mikä on sopiva tapa \"koodata\" pelin tilanne matriisiin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Go","tmcname":"osa05-02_go"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Go-pelissä lisätään vuorotellen mustia ja valkoisia kiviä pelilaudalle. Pelin voittaa se pelaaja, joka saa omilla kivillään rajattua enemmän aluetta pelilaudalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kumpi_voitti(pelilauta: list)"}]},{"type":"text","value":", joka saa parametrikseen kaksiulotteisen taulukon, joka kuvaa pelilautaa. Taulukko koostuu kokonaisluvuista seuraavasti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"0: tyhjä ruutu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"1: pelaajan 1 nappula"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"2: pelaajan 2 nappula"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä pelilaudan koko voi olla mikä tahansa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa arvon 1, jos pelaaja 1 on voittanut pelin, ja arvon 2, jos pelaaja 2 on voittanut pelin. Jos molemmilla pelaajilla on yhtä paljon nappuloita laudalla, funktio palauttaa arvon 0."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: rivit oikein","tmcname":"osa05-03_sudoku_osa1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivi_oikein(sudoku: list, rivi_nro: int)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja rivin numeron kertovan kokonaisluvun (rivit on numeroitu nollasta alkaen). Metodi palauttaa tiedon, onko rivi oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nFalse"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: sarakkeet oikein","tmcname":"osa05-04_sudoku_osa2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sarake_oikein(sudoku: list, sarake_nro: int)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja sarakkeen (eli pystyrivin) numeron kertovan kokonaisluvun. Metodi palauttaa tiedon, onko sarake oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarake_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarake_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: neliöt oikein","tmcname":"osa05-05_sudoku_osa3"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nelio_oikein(sudoku: list, rivi_nro: int, sarake_nro: int)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon sekä yhden ruudun paikan kertovat rivi- ja sarakenumerot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio kertoo onko parametrina saadusta rivi/sarakenumerosta alkava 3x3-kokoinen neliö oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tässä tehtävässä toteutettava funktio on hieman yleiskäyttöisempi kuin sudokussa oikeasti tarvitaan. Todellisuudessahan oikeassa sudokussa tarkastellaan ainoastaan kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavia neliöitä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nelio_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nelio_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ensimmäisen funktiokutsun tarkastelema kohdasta 0, 0 alkava neliö on"}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"9 0 0\n2 0 0\n0 2 0\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisen funktiokutsun tarkastelema kohdasta riviltä 1 ja sarakkeesta 2 alkava neliö on"}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"0 2 5\n0 3 0\n4 0 0\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä neliö on siis sellainen, jota oikeassa sudokussa ei tarkasteltaisi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: ruudukko oikein","tmcname":"osa05-06_sudoku_osa4"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sudoku_oikein(sudoku: list)"}]},{"type":"text","value":", joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon. Funktio kertoo käyttäen edellisen kolmen tehtävän funktioita (kopioi ne tämän tehtävän koodin joukkoon), onko parametrina saatu ruudukko täytetty oikein, eli sen jokainen rivi, jokainen sarake sekä kaikki erilliset 3x3-neliöt sisältävät korkeintaan kertaalleen jokaisen luvuista 1–9."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom: ylempänä olevaan sudokuruudukkoa esittävään kuvaan on merkitty ne 3x3-neliöt, joita sudokua ratkaistessa tulee tarkastella.\nNämä ovat siis kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavat yhdeksän neliöä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsudoku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku_oikein"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda listoja, joissa on erityyppistä tietoa
    • \n
    • Tiedät, miten listoja voi käyttää tiedon ryhmittelyyn
    • \n
    • Osaat tallentaa matriisin kaksiulotteisena listana
    • \n

    Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

    Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten arvosteluperusteet toteavat, kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä.

    Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää.

    Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta.

    Lisää listoista

    Viime kerralla käsiteltiin lähes yksinomaan listoja, joissa alkiot ovat kokonaislukuja. Listoihin voi kuitenkin tallentaa minkä tahansa tyyppisiä arvoja. Esimerkiksi voimme tallentaa listaan merkkijonoja:

    nimet = [\"Maija\", \"Liisa\", \"Pekka\"]\nprint(nimet)\nnimet.append(\"Kalle\")\nprint(nimet)\n\nprint(\"Listalla nimiä:\", len(nimet))\nprint(\"Nimet aakkosjärjestyksessä:\")\nnimet.sort()\nfor nimi in nimet:\n  print(nimi)

    ['Maija', 'Liisa', 'Pekka']\n['Maija', 'Liisa', 'Pekka', 'Kalle']\nListalla nimiä: 4\nNimet aakkosjärjestyksessä:\nKalle\nLiisa\nMaija\nPekka

    Samalla tavalla listalle voidaan tallentaa liukulukuja:

    mittaukset = [-2.5, 1.1, 7.5, 14.6, 21.0, 19.2]\n\nfor mittaus in mittaukset:\n    print(mittaus)\n\nkeskiarvo = sum(mittaukset) / len(mittaukset)\n\nprint(\"Keskiarvo:\", keskiarvo)

    -2.5\n1.1\n7.5\n14.6\n21.0\n19.2\nKeskiarvo: 10.15

    Muistutus: globaalin muuttujan käytön sudenkuoppa

    Kuten olemme nähneet, funktioiden sisällä on mahdollista määritellä muuttujia. Kannattaa myös huomata se, että funktio näkee sen ulkopuolella, eli pääohjelmassa määritellyt muuttujat. Tälläisia muuttujia sanotaan globaaleiksi muuttujiksi.

    Globalien muuttujien käyttämistä funktioista käsin ei useimmiten pidetä hyvänä asiana muun muassa siksi, että ne saattavat johtaa ikäviin bugeihin.

    Seuraavassa on esimerkki funktiosta, joka käyttää \"vahingossa\" globaalia muuttujaa:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i>=0:\n        print(nimilista[i])\n        i -= 1\n\n# globaali muuttuja\nnimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\ntulosta_vaarinpain(nimilista)\nprint()\ntulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Margaret\nErkki\nEmilia\nAntti

    Margaret\nErkki\nEmilia\nAntti

    Vaikka funktiota kutsutaan oikein, se tulostaa aina globaalissa muuttujassa nimilista olevat nimet.

    Kuten olemme nähneet, kaikki funktioita testaava koodi on kirjoitettava erillisen lohkon sisälle, jotta TMC-testit hyväksyisivät koodin. Edellinen esimerkki siis tulisi toteuttaa seuraavasti:

    def tulosta_vaarinpain(nimet: list):\n    # käytetään vahingossa parametrin sijaan globaalia muuttujaa nimilista\n    i = len(nimilista) - 1\n    while i>=0:\n        print(nimilista[i])\n        i -= 1\n\n# kaikki funktiota testaava koodi tämän lohkon sisälle\nif __name__ == \"__main__\":\n    # globaali muuttuja\n    nimilista = [\"Antti\", \"Emilia\", \"Erkki\", \"Margaret\"]\n    tulosta_vaarinpain(nimilista)\n    print()\n    tulosta_vaarinpain([\"Tupu\", \"Hupu\", \"Lupu\"])

    Nyt myös globaalin muuttujan määrittely on siirtynyt if-lohkoon.

    TMC-testit suoritetaan aina siten, että mitään if-lohkon sisällä olevaa koodia ei huomioida. Tämän takia funktio ei voi edes teoriassa toimia, sillä se viittaa muuttujaan nimilista mitä ei testejä suoritettaessa ole ollenkaan olemassa.

    Varoitus: parametrin ylikirjoittaminen ja liian aikainen return

    Ennen tämän osan tehtäviin menemistä on syytä kiinnittää huomiota pariin potentiaaliseen ongelmalähteeseen. Tarkastellaan funktiota, joka kertoo löytyykö parametrina oleva luku listalta:

    def luku_listalla(luvut: list, luku: int):\n    for luku in luvut:\n        if luku == luku:\n            return True\n        else:\n            return False

    Funktio palauttaa jostain syystä aina True. Syynä tälle on se, että for-silmukka ylikirjoittaa parametrin luku arvon, ja tämän takia if-lauseen ehto on aina tosi.

    Ongelmasta päästään eroon nimeämällä parametri uudelleen:

    def luku_listalla(luvut: list, etsittava_luku: int):\n    for luku in luvut:\n        if luku == etsittava_luku:\n            return True\n        else:\n            return False

    Nyt if-lauseen ehto on kunnossa. Funktiossa on kuitenkin uusi ongelma, se ei näytä edelleenkään toimivan. Esim. seuraava kokeilu tuo esiin bugin:

    on = luku_listalla([1, 2, 3, 4], 3)\nprint(on)  # tulostuu False

    Vika on nyt siinä että funktiosta poistutaan liian aikaisin. Funktio tarkistaa ainoastaan ensimmäisen luvun ja riippuen sen arvosta palauttaa heti joko arvon True tai False. Lopullista tuomiota, eli tietoa siitä että luku ei ole listalla ei voi kuitenkaan antaa ennen kuin kaikki luvut on tarkastettu. Komento return False pitääkin siirtää silmukan ulkopuolelle:

    def luku_listalla(luvut: list, etsittava_luku: int):\n    for luku in luvut:\n        if luku == etsittava_luku:\n            return True\n\n    return False

    Tarkastellaan vielä yhtä virheellistä esimerkkiä:

    def luvut_erisuuret(luvut: list):\n    # apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu\n    luvut = []\n    for luku in luvut:\n        # joko luku on nähty?\n        if luku in luvut:\n            return False\n        luvut.append(luku)\n\n    return True\n\non = luvut_erisuuret([1, 2, 2])\nprint(on)  # tulostuu True

    Funktio siis yrittää testata ovatko kaikki listan alkiot erisuuria. Se kuitenkin palauttaa aina arvon True.

    Ongelmana on jälleen se, että funktio vahingossa ylikirjottaa parametrinsa arvon. Funktio yrittää käyttää muuttujaa luvut pitämään kirjaa jo vastaan tulleista luvuista ja tämä ylikirjoittaa parametrin. Lääke ongelmaan on muuttujan uudelleennimeäminen:

    def luvut_erisuuret(luvut: list):\n    # apumuuttuja, johon kerätään ne luvut jotka on jo tarkastettu\n    havaitut_luvut = []\n    for luku in luvut:\n        # joko luku on nähty?\n        if luku in havaitut_luvut:\n            return False\n        havaitut_luvut.append(luku)\n\n    return True\n\non = luvut_erisuuret([1, 2, 2])\nprint(on)  # tulostuu False

    Nämä kuten oikeastaan kaikki koodia vaivaavat ongelmat selviävät debuggerilla tai visualisaattorilla, jonka käytön tärkeyttä ei voi olla korostamatta liikaa.

    HUOM: tämä ja seuraava tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa

    Tee funktio pisin(merkkijonot: list), joka saa parametrikseen listan merkkijonoja. Funktio etsii ja palauttaa listalta pisimmän merkkijonon. Voit olettaa, että vain yksi jonoista on pisin.

    Esimerkkikutsu:

    \nif __name__ == \"__main__\":\n    jonot = [\"moi\", \"moikka\", \"heip\", \"hellurei\", \"terve\"]\n    print(pisin(jonot))\n

    hellurei

    Sisäkkäiset listat

    Listan alkiot voivat olla myös listoja:

    lista = [[5, 2, 3], [4, 1], [2, 2, 5, 1]]\nprint(lista)\nprint(lista[1])\nprint(lista[1][0])

    [[5, 2, 3], [4, 1], [2, 2, 5, 1]]\n[4, 1]\n4

    Mihin voimme käyttää listoja jonka sisällä on listoja?

    Voisimme esimerkiksi esittää henkilön tiedot listana, jossa ensimmäisenä alkiona on henkilön nimi, toisena ikä ja kolmantena kengännumero:

    [\"Anu\", 10, 26]

    Vastaavasti joukko henkilöitä on lista, joka sisältää yksittäisiä henkilöä kuvaavia listoja:

    henkilot = [[\"Anu\", 10, 26], [\"Petteri\", 7, 22], [\"Emilia\", 32, 37], [\"Antti\", 39, 44]]\n\nfor henkilo in henkilot:\n  nimi = henkilo[0]\n  ika = henkilo[1]\n  kenka = henkilo[2]\n  print(f\"{nimi}: ikä {ika} vuotta, kengännumero {kenka}\")

    Anu: ikä 10 vuotta, kengännumero 26\nPetteri: ikä 7 vuotta, kengännumero 22\nEmilia: ikä 32 vuotta, kengännumero 37\nAntti: ikä 39 vuotta, kengännumero 44

    Huomaa, miten for-lause käy läpi henkilöt yksitellen, eli toiston lohko-osassa muuttuja henkilo saa yksi kerrallaan arvokseen kutakin henkilöä esittävän listan.

    Lista ei ole välttämättä paras Pythonin tietorakenne henkilön tietojen esittämiseen. Tutustumme pian sanakirjaan, joka on usein luontevampi tapa hoitaa vastaava tilanne.

    Matriisit

    Sisäkkäisten listojen avulla voidaan myös esittää matriisi eli kaksiulotteinen taulukko.

    Esimerkiksi matriisi

    \n \n \n \n \n \n \"5\n \n \n

    voitaisiin mallintaa kaksiulotteisena listana näin:

    matriisi = [[1, 2, 3], [3, 2, 1], [4, 5, 6]]

    Koska matriisi on lista listoja, matriisin alkioihin viitataan käyttämällä peräkkäisiä hakasulkuja. Ensimmäinen indeksi viittaa riviin ja toinen sarakkeeseen. Niinpä esimerkiksi m[0][1] tarkoittaa ensimmäisen rivin toista alkiota (kun muistetaan, että indeksointi alkaa nollasta).

    matriisi = [[1, 2, 3], [3, 2, 1], [4, 5, 6]]\n\nprint(matriisi[0][1])\nmatriisi[1][0] = 10\nprint(matriisi)

    2\n[[1, 2, 3], [10, 2, 1], [4, 5, 6]]

    Voimme käydä läpi matriisin rivit for-silmukalla. Esimerkiksi seuraava koodi tulostaa matriisin rivit allekkain:

    matriisi = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n\nfor rivi in matriisi:\n    print(rivi)

    [1, 2, 3]\n[4, 5, 6]\n[7, 8, 9]

    Seuraava koodi puolestaan tulostaa matriisin alkiot yksitellen kahden for-silmukan avulla:

    matriisi = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]\n\nfor rivi in matriisi:\n    print(\"uusi rivi\")\n    for alkio in rivi:\n        print(alkio)

    uusi rivi\n1\n2\n3\nuusi rivi\n4\n5\n6\nuusi rivi\n7\n8\n9

    Sisäkkäisiä listoja käyttävän koodin visualisointi

    Jos sisäkkäisiä listoja käsittelevät ohjelmat tuntuvat hankalalta ymmärtää, kannattaa ehdottomasti havainnollistaa niitä Python Tutorin visualisaattorilla. Seuraavassa kuva edellisen esimerkin visualisoinnista:

    \n \n \n \n \n \n \"5\n \n \n

    Kuten kuva paljastaa, 3x3-matriisi koostuu teknisesti ottaen neljästä listasta. Ensimmäinen lista edustaa koko matriisia ja sen alkioina on erillisiä rivejä edustavat listat.

    Kuva havainnollistaa jo sitä seikkaa, josta puhumme tarkemmin seuraavassa osassa: moniulotteisessa listassa listat eivät ole todellisuudessa sisäkkäin, vaan matriisia edustava lista \"viittaa\" jokaista riviä edustavaan listaan.

    Kuvassa tulostus on edennyt matriisin toiselle riville, johon muuttuja rivi parhaillaan viittaa. Muuttuja alkio kertoo sen alkion, jonka kohdalla tulostus on menossa. Muuttujan arvo on nyt keskimmäisen rivin keskimmäinen eli 5.

    Lisää matriisin käsittelyä

    Matriisin yksittäisten rivien käsittely on helppoa, riittää että valitaan haluttu rivi. Esimerkiksi seuraava funktio laskee halutun rivin alkioiden summan:

    def rivin_alkioiden_summa(matriisi, rivi_nro: int):\n    # tarkasteluun valitaan yksi rivi\n    rivi = matriisi[rivi_nro]\n    summa = 0\n    for alkio in rivi:\n        summa += alkio\n\n    return summa\n\nm = [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n\nsumma = rivin_alkioiden_summa(m, 1)\nprint(summa) # tulostuu 33 (saadaan laskemalla 9 + 1 + 12 + 11)

    Jos taas haluttaisiin laskea tietyn sarakkeen eli \"pystyrivin\" alkioiden summa, tilanne olisi jo monimutkaisempi:

    def sarakkeen_alkioiden_summa(matriisi, sarake_nro: int):\n    # summaan lisätään kaikkien rivien halutussa kohdassa oleva alkio\n    summa = 0\n    for rivi in matriisi:\n        summa += rivi[sarake_nro]\n\n    return summa\n\nm = [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n\nsumma = sarakkeen_alkioiden_summa(m, 2)\nprint(summa) # tulostuu 39 (saadaan laskemalla 3 + 12 + 9 + 15)

    Tarkasteltava sarake siis koostuu jokaisen rivin paikassa 2 olevasta alkiosta.

    Näidenkin ohjelmien toiminta kannattaa ehdottomasti käydä läpi visualisaattorilla!

    Matriisissa olevan yksittäisen arvon vaihtaminen on helppoa. Riittää että valitaan matriisin sisältä oikea rivi ja sen sisältä sarake:

    def vaihda_arvoon(matriisi, rivi_nro: int, sarake_nro: int, arvo: int):\n    # haetaan oikea rivi\n    rivi = matriisi[rivi_nro]\n    # ja sen sisältä oikea kohta\n    rivi[sarake_nro] = arvo\n\nm = [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n\nprint(m)\nvaihda_arvoon(m, 2, 3, 1000)\nprint(m)

    [[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 5], [2, 9, 15, 1]]\n[[4, 2, 3, 2], [9, 1, 12, 11], [7, 8, 9, 1000], [2, 9, 15, 1]]

    Mikäli halutaan muuttaa matriisin sisältöä silmukan sisällä, ei ole mahdollista käyttää \"normaalia\" for-silmukkaa, sillä muutettaessa sisältöä on pakko tietää muutettavien alkioiden indeksit.

    Tämä taas onnistuu while-silmukalla tai for-silmukalla hyödyntämällä range-funktiota iteroinnissa. Esimerkiksi seuraava koodi kasvattaa jokaista matriisin alkiota yhdellä:

    m = [[1,2,3], [4,5,6], [7,8,9]]\n\nfor i in range(len(m)):\n    for j in range(len(m[i])):\n        m[i][j] += 1\n\nprint(m)

    [[2, 3, 4], [5, 6, 7], [8, 9, 10]]

    Ulompi silmukka käy range-funktion avulla läpi arvot nollasta matriisin pituuteen (eli matriisin rivien määrään) ja sisempi silmukka jokaisen rivin alkiot nollasta rivin pituuteen.

    HUOM: tämä ja edellinen tehtävä ovat väärässä järjestyksessä VS Coden sivupalkissa

    Tee funktio laske_alkiot(matriisi: list, alkio: int), joka saa parametrikseen kaksiulotteisen kokonaislukutaulukon. Funktio laskee, kuinka monta annetun alkion mukaista arvoa taulukosta löytyy.

    Esimerkiksi

    m = [[1, 2, 1], [0, 3, 4], [1, 0, 0]]\nprint(laske_alkiot(m, 1))

    3

    Kaksiulotteinen taulukko pelin tietorakenteena

    Matriisi sopii hyvin monien pelien tietorakenteeksi. Esim. sudokun ruudukko

    \n \n \n \n \n \n \"5\n \n \n

    voitaisiin esittää seuraavana matriisina:

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [0, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [0, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]

    Arvolla nolla siis kuvataan tilanne, jossa ruutu on vielä tyhjä.

    Seuraavassa vielä yksinkertainen versio sudokun tulostavasta metodista:

    def tulosta(sudoku):\n    for rivi in sudoku:\n        for ruutu in rivi:\n            if ruutu > 0:\n                print(f\" {ruutu}\", end=\"\")\n            else:\n                print(\" _\", end=\"\")\n        print()\n\ntulosta(sudoku)

    Tulostus näyttää seuraavalta:

    \n 9 _ _ _ 8 _ 3 _ _\n _ _ _ 2 5 _ 7 _ _\n _ 2 _ 3 _ _ _ _ 4\n _ 9 4 _ _ _ _ _ _\n _ _ _ 7 3 _ 5 6 _\n 7 _ 5 _ 6 _ 4 _ _\n _ _ 7 8 _ 3 9 _ _\n _ _ 1 _ _ _ _ _ 3\n 3 _ _ _ _ _ _ _ 2\n

    Vastaavalla tavalla on mahdollista kuvata moni tuttu peli (esim. shakki, miinaharava, laivan upotus, mastermind, ...) matriisina. Pelistä riippuu, mikä on sopiva tapa \"koodata\" pelin tilanne matriisiin.

    Go-pelissä lisätään vuorotellen mustia ja valkoisia kiviä pelilaudalle. Pelin voittaa se pelaaja, joka saa omilla kivillään rajattua enemmän aluetta pelilaudalta.

    Kirjoita funktio kumpi_voitti(pelilauta: list), joka saa parametrikseen kaksiulotteisen taulukon, joka kuvaa pelilautaa. Taulukko koostuu kokonaisluvuista seuraavasti:

      \n
    • 0: tyhjä ruutu
    • \n
    • 1: pelaajan 1 nappula
    • \n
    • 2: pelaajan 2 nappula
    • \n

    Esimerkissä pelilaudan koko voi olla mikä tahansa.

    Funktio palauttaa arvon 1, jos pelaaja 1 on voittanut pelin, ja arvon 2, jos pelaaja 2 on voittanut pelin. Jos molemmilla pelaajilla on yhtä paljon nappuloita laudalla, funktio palauttaa arvon 0.

    Tee funktio rivi_oikein(sudoku: list, rivi_nro: int), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja rivin numeron kertovan kokonaisluvun (rivit on numeroitu nollasta alkaen). Metodi palauttaa tiedon, onko rivi oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran.

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(rivi_oikein(sudoku, 0))\nprint(rivi_oikein(sudoku, 1))

    True\nFalse

    Tee funktio sarake_oikein(sudoku: list, sarake_nro: int), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon ja sarakkeen (eli pystyrivin) numeron kertovan kokonaisluvun. Metodi palauttaa tiedon, onko sarake oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran.

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(sarake_oikein(sudoku, 0))\nprint(sarake_oikein(sudoku, 1))

    False\nTrue

    Tee funktio nelio_oikein(sudoku: list, rivi_nro: int, sarake_nro: int), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon sekä yhden ruudun paikan kertovat rivi- ja sarakenumerot.

    Funktio kertoo onko parametrina saadusta rivi/sarakenumerosta alkava 3x3-kokoinen neliö oikein täytetty eli onko siinä kukin luvuista 1–9 korkeintaan kerran.

    Huomaa, että tässä tehtävässä toteutettava funktio on hieman yleiskäyttöisempi kuin sudokussa oikeasti tarvitaan. Todellisuudessahan oikeassa sudokussa tarkastellaan ainoastaan kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavia neliöitä.

    sudoku = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(nelio_oikein(sudoku, 0, 0))\nprint(nelio_oikein(sudoku, 1, 2))

    False\nTrue

    Ensimmäisen funktiokutsun tarkastelema kohdasta 0, 0 alkava neliö on

    \n9 0 0\n2 0 0\n0 2 0\n

    Toisen funktiokutsun tarkastelema kohdasta riviltä 1 ja sarakkeesta 2 alkava neliö on

    \n0 2 5\n0 3 0\n4 0 0\n

    Tämä neliö on siis sellainen, jota oikeassa sudokussa ei tarkasteltaisi.

    Tee funktio sudoku_oikein(sudoku: list), joka saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen taulukon. Funktio kertoo käyttäen edellisen kolmen tehtävän funktioita (kopioi ne tämän tehtävän koodin joukkoon), onko parametrina saatu ruudukko täytetty oikein, eli sen jokainen rivi, jokainen sarake sekä kaikki erilliset 3x3-neliöt sisältävät korkeintaan kertaalleen jokaisen luvuista 1–9.

    Huom: ylempänä olevaan sudokuruudukkoa esittävään kuvaan on merkitty ne 3x3-neliöt, joita sudokua ratkaistessa tulee tarkastella.\nNämä ovat siis kohdista (0, 0), (0, 3), (0, 6), (3, 0), (3, 3), (3, 6), (6, 0), (6, 3) ja (6, 6) alkavat yhdeksän neliöä.

    sudoku1 = [\n  [9, 0, 0, 0, 8, 0, 3, 0, 0],\n  [2, 0, 0, 2, 5, 0, 7, 0, 0],\n  [0, 2, 0, 3, 0, 0, 0, 0, 4],\n  [2, 9, 4, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 7, 3, 0, 5, 6, 0],\n  [7, 0, 5, 0, 6, 0, 4, 0, 0],\n  [0, 0, 7, 8, 0, 3, 9, 0, 0],\n  [0, 0, 1, 0, 0, 0, 0, 0, 3],\n  [3, 0, 0, 0, 0, 0, 0, 0, 2]\n]\n\nprint(sudoku_oikein(sudoku1))\n\nsudoku2 = [\n  [2, 6, 7, 8, 3, 9, 5, 0, 4],\n  [9, 0, 3, 5, 1, 0, 6, 0, 0],\n  [0, 5, 1, 6, 0, 0, 8, 3, 9],\n  [5, 1, 9, 0, 4, 6, 3, 2, 8],\n  [8, 0, 2, 1, 0, 5, 7, 0, 6],\n  [6, 7, 4, 3, 2, 0, 0, 0, 5],\n  [0, 0, 0, 4, 5, 7, 2, 6, 3],\n  [3, 2, 0, 0, 8, 0, 0, 5, 7],\n  [7, 4, 5, 0, 0, 3, 9, 0, 1]\n]\n\nprint(sudoku_oikein(sudoku2))

    False\nTrue

    ","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/1-lisaa-listoista.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-5/2-viittaukset/page-data.json b/page-data/osa-5/2-viittaukset/page-data.json index 884510d1e..01b785a35 100644 --- a/page-data/osa-5/2-viittaukset/page-data.json +++ b/page-data/osa-5/2-viittaukset/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-5/2-viittaukset", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan viittaustyyppisellä muuttujalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, että samaan olioon voi olla useampia viittauksia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää listoja funktioiden parametreina"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan funktion sivuvaikutuksella"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän asti ajatelleet, että muuttuja on eräänlainen \"laatikko\", joka sisältää muuttujan arvon. Teknisesti ottaen tämä ei pidä paikkaansa Pythonissa: muuttujat eivät sisällä arvoa vaan ne "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaavat"}]},{"type":"text","value":" arvona olevaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioon"}]},{"type":"text","value":", kuten lukuun, merkkijonoon tai listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytännössä tämä tarkoittaa, että muuttujaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei tallenneta"}]},{"type":"text","value":" arvoa, vaan tieto siitä paikasta, mistä muuttujan arvo löytyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viittausta voidaan kuvata nuolena muuttujasta sen varsinaiseen arvoon:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 261px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8687855d3e59d8151e4fce49ec9669b0/edf96/5_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 30.869565217391305%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA1ElEQVQY041ROQ6EQAyb7/MBfsA/aCgoEHQcDQ2XOMQlxI1XzgqKbdhIljzJ2JNk1DiOKIoCdV1jnmfEcYymaZBlmSBJEjDO88R1Xa9Qx3FgWRYRMUHTaZoE5Kwx/2+om7yJ+AA7b9tWprl5VVXCu66TiaRDgoY3v8FI0xR93z8idlyWpRhxAtaZZ5imCUXXKIpkj77vCyeCIECe59A0Dbquyw7XdX0m4e750L7vgm3b4Lrut0MeeJGiXwzDIAb8LM/zEIYhbNuG4zjCLcuSPOuGYeADgRnJTrwaxUwAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8687855d3e59d8151e4fce49ec9669b0/a0b58/5_2_1.webp 230w","/static/8687855d3e59d8151e4fce49ec9669b0/ad293/5_2_1.webp 261w"],"sizes":"(max-width: 261px) 100vw, 261px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8687855d3e59d8151e4fce49ec9669b0/81c8e/5_2_1.png 230w","/static/8687855d3e59d8151e4fce49ec9669b0/edf96/5_2_1.png 261w"],"sizes":"(max-width: 261px) 100vw, 261px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8687855d3e59d8151e4fce49ec9669b0/edf96/5_2_1.png","alt":"5 2 1","title":"5 2 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viittaus siis kertoo, mistä varsinainen arvo löytyy. Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"id"}]},{"type":"text","value":" kertoo, mihin muuttuja viittaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nb "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämäkin on viittaus\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4538357072\n4537788912"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viittaus eli muuttujan id on kokonaisluku, jonka voi ajatella olevan muuttujan arvon sijainnin osoite tietokoneen muistissa. Huomaa, että jos suoritat yllä olevan koodin omalla koneellasi, tulos on luultavasti erilainen, koska muuttujilla on eri viitteet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten jo "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/1-lisaa-listoja#sisakkaisia-listoja-kayttavan-koodin-visualisointi"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" esimerkistä näimme, Python Tutorin visualisaattori näyttää viitteet \"nuolina\" varsinaiseen sisältöön. Visualisaattori kuitenkin \"huijaa\" merkkijonojen tapauksessa ja näyttää ne ikään kuin merkkijonon sisältö olisi tallennettu muuttujan sisälle:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9d19433a6bc55bf386a8fbcc572dba74/94cea/5_2_1a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 29.565217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA2klEQVQY00VQ207EIBDt//+ZzxoT48boBsEs2wKlMMBcMFLbPQ/nYeZcMjP1f0jvnYhDiBkKsxzzTkRhYNs2GCAiZhaR6RQx87yE67e18yryMCPiPM/OeQBgZiKSASI6zCKQkzFaqS+AlNJWaz02jyCAzEyttZyrSJ/2GEbEAj7Eq7J3F1trxLwbakNjw8999bHdfK7IUHLKtvcyRbcsi3POneqzkEdnyvXlYp7f9dunff24xUxQVx+eAC4TIRIRIhpjtNaDtFLKey/y9whmqZWgVCgtl7ZfsfMv95hb032qZjcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9d19433a6bc55bf386a8fbcc572dba74/a0b58/5_2_1a.webp 230w","/static/9d19433a6bc55bf386a8fbcc572dba74/bc10c/5_2_1a.webp 460w","/static/9d19433a6bc55bf386a8fbcc572dba74/966d8/5_2_1a.webp 920w","/static/9d19433a6bc55bf386a8fbcc572dba74/445df/5_2_1a.webp 1380w","/static/9d19433a6bc55bf386a8fbcc572dba74/78de1/5_2_1a.webp 1840w","/static/9d19433a6bc55bf386a8fbcc572dba74/0dc73/5_2_1a.webp 1940w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9d19433a6bc55bf386a8fbcc572dba74/81c8e/5_2_1a.png 230w","/static/9d19433a6bc55bf386a8fbcc572dba74/08a84/5_2_1a.png 460w","/static/9d19433a6bc55bf386a8fbcc572dba74/c0255/5_2_1a.png 920w","/static/9d19433a6bc55bf386a8fbcc572dba74/b1001/5_2_1a.png 1380w","/static/9d19433a6bc55bf386a8fbcc572dba74/161ec/5_2_1a.png 1840w","/static/9d19433a6bc55bf386a8fbcc572dba74/94cea/5_2_1a.png 1940w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9d19433a6bc55bf386a8fbcc572dba74/c0255/5_2_1a.png","alt":"5 2 1a","title":"5 2 1a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin ei kuitaan ole todellisuudessa, vaan merkkijonotkin käsitellään Pythonin sisäisissä rakenteissa samaan tapaan kuin listat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monet Pythonin sisäänrakennetut tyypit, kuten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":", ovat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muuttumattomia"}]},{"type":"text","value":". Tämä tarkoittaa, että olion arvo ei voi koskaan muuttua. Sen sijaan arvo voidaan korvata uudella arvolla:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 281px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/5_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 85.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAABpklEQVQ4y52UWYsCQQyE+2eL/8xnQVAQHxXvA+/7vq3lC2TpHca9AmEy6e50qiozYblcqtfrqd/vazabab/f63A4qNvtqtlsajqd6nQ6CXu9Xj96oACFFouF1uu1rterHo+HFaEY6775Nxb0B9tut1qtVnbxZrMxJ8ZBejweFW63m0E8n8/WHc4CTpcUqdVqtmc+n4v98R7iy+Wi+/2uyWSi0Ol0lMvlVCgUVCqVLAl3rVbLeKxWq8pms2IfBdzG47HlYoM2g+y84e8MDkejkcEDNg5Mj8lbh0myXYDn8/npnudCIDvsOPamgm92o8A7RTnA+ndIAqMBZ41GQ4PBwMaE9uGw3W5bHmjkd7udjRhCvZvLLyqjlsN0lV1B/N9z+A4yl/vFziGxO2vWIfOFIzvvaXwSc8ARsA8UPJ1XEwU+isWi8vm8yuWyjcZwOLQb446BHOc4zJeSFCgVMp3ydfDDiDuGU4RBIP+JuFj+DGlKuUFDvV43xZkEOiKH6sT+bfOOMwEhrViycKVSUSaTsWJuFEpSkwo5LhTHHIQKN+DyTt4bgOcPk2YlBJdlLTcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/a0b58/5_2_2.webp 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/f44a8/5_2_2.webp 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/81c8e/5_2_2.png 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/5_2_2.png 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/5_2_2.png","alt":"5 2 2","title":"5 2 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on myös tyyppejä, jotka ovat muuttuvia. Esimerkiksi listan sisältö voi muuttua ilman, että tarvitsee luoda kokonaan uusi lista:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 271px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/5_2_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 70.43478260869564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVQ4y5WT66rCQAyE9337w8eT/hEfQVCs4K2iWO+1VevdyDewBxE91EDYbHZ3Opmkbj6fWxzH1uv1bDab2Xa7tTzPLUkSW61WtlgslJ9Op4bd73d7PB5f3RVFIQB8v98rebvd7HA42G63U471eDxaGXP2g202G1WwXq/l7zHn7nK5iAFMKQd2+PV61Up+MBjY6XRS6TBFCkCIAVkul6qIveNStVq1Wq2mi/1+37rdrpy42WxapVKRzoB7KXgMkM/RC5XsNYPpu+AYTHH24/FYmtIw3APRMD5C2c4/xD517fUMVoDA6puXbsor+L9dRsPRaGTD4VDUKQtt/LiwZ6TKzKDmkId+HNI0tSzLBISmOGDn87n0aP1UMqMDOOu32NFB3+FPxgTAnBVZqAaJkIL8ZDLR3g+4o+1hGFq9XtccMn+dTkdO3Gg0LAgCgdFFAACCAHJABnZIppL5MgckiCmNy74BXIYVZ61WS38Na7vd1keiKPrLs38CMo80d8OuAIYAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/a0b58/5_2_3.webp 230w","/static/8b07a257ace229cc26a5eedf03a60986/cadab/5_2_3.webp 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/81c8e/5_2_3.png 230w","/static/8b07a257ace229cc26a5eedf03a60986/5fce1/5_2_3.png 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/5_2_3.png","alt":"5 2 3","title":"5 2 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hieman yllättäen myös lukuja ja totuusarvoja edustavat perustietotyypit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":" ovat muuttumattomia. Tarkastellaan esimerkkinä seuraavaa koodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka vaikuttaa siltä, että koodi muuttaa lukua, teknisesti ottaen ei näin ole, vaan jokainen komento luo uuden luvun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavan ohjelman tulostus on mielenkiintoinen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4535856912\n4535856944\n4535856912"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aluksi muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" viittaa paikkaan 4535856912, ja kun muuttujan arvo muuttuu, se alkaa viitata paikkaan 4535856944. Kun muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" sijoitetaan arvo 1, se alkaa viitata samaan paikkaan kuin mihin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" viittasi, kun sen arvo oli 1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikuttaakin siltä, että Python on tallentanut luvun 1 paikkaan 4535856912 ja aina kun jonkin muuttujan arvona on 1, muuttuja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaa"}]},{"type":"text","value":" tuohon paikkaan \"tietokoneen muistissa\"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka perustietotyypit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":" ovat viittauksia, ohjelmoijan ei oikeastaan tarvitse välittää asiasta."}]},{"type":"element","tagName":"h2","properties":{"id":"useampi-viittaus-samaan-listaan","style":"position:relative;"},"children":[{"type":"text","value":"Useampi viittaus samaan listaan"},{"type":"element","tagName":"a","properties":{"href":"#useampi-viittaus-samaan-listaan","ariaLabel":"useampi viittaus samaan listaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä listamuuttujan arvon kopiointia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nb "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" a\nb"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sijoitus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b = a"}]},{"type":"text","value":" kopioi muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" arvon muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":". On tärkeä kuitenkin huomata, että muuttujan arvona "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole lista"}]},{"type":"text","value":" vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus listaan"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sijoitus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b = a"}]},{"type":"text","value":" siis kopioi viittauksen, minkä seurauksena kopioinnin jälkeen samaan listaan on kaksi viittausta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 271px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/73c7fae5118d6e5b03c576f1a9d14c3f/5fce1/5_2_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 129.99999999999997%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAaCAYAAAC3g3x9AAAACXBIWXMAAAsTAAALEwEAmpwYAAACN0lEQVRIx52VV64qQQxEZ60sgC2wJvhhFXwhkMg555zx07FU3FHf0QVeS1aHoctlu9xE4/HYlsulbbdbm06nNpvNjDPm4XBoj8fDGM/n8yOLdrudX8KOx6MDbzYbOxwOvtc3fvzJiOyLsVqtbL1ee0SLxeLXmu8OeLvd7H6/OxNmGfvT6WSdTscul4ungv18PncQ1gCSHiJi74C1Ws0Gg4H1+32rVCq+xxqNhhWLRUun09Zutz0FXCRNXAZIZ5PJ5CdkMQwTzLher26wxSGXR6ORm4AoHk4IO4on+6/E801s/rIo6WI4f1phD5kw9vu9S4WchCAh8FsdojtydD6fHTQJ8CuGSSEnFYcZ6cggABGtdR594p0KogKkQyV7vZ4ba+SGTiVwZ1iv1730fCiXy67BZrNp1WrV8vm8pVIpB0N7qjSs6AydAfYKmQPoarBvtVoODjBag2G32/U8wwqDFXqksAC+Wk/NT4FgS7eo4qEOYSTNwVJrMXXAUqnkLPCEl/jQa/NVlWm9pEthF32kQ/UqplcGB9i7dkxkSEWpIFUmF0o6r/d/dUr8HdQIXx7tk9IQrr96sXlgiYACskbYrJEOxeThdUD9hyhkGbJAX9ls9vV4sGeme3hUkBpgzETigIgXj3hSPhF2oVCwXC5nmUzGv3OR/MIKzSFsgcLOcxhWkT2XKRYOVG0GOoUZ5zgFiDVOiOAVMh4Jl9ai3QCM61JF4Sz+hyb9xs9fIZMX6IddEj5j73T4DynC3t7bOJziAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73c7fae5118d6e5b03c576f1a9d14c3f/a0b58/5_2_4.webp 230w","/static/73c7fae5118d6e5b03c576f1a9d14c3f/cadab/5_2_4.webp 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73c7fae5118d6e5b03c576f1a9d14c3f/81c8e/5_2_4.png 230w","/static/73c7fae5118d6e5b03c576f1a9d14c3f/5fce1/5_2_4.png 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/73c7fae5118d6e5b03c576f1a9d14c3f/5fce1/5_2_4.png","alt":"5 2 4","title":"5 2 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listaa voidaan käsitellä kumman tahansa viittauksen avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nlista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[10, 20, 3, 4]\n[10, 20, 3, 4]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli samaan listaan on useampia viittauksia, sitä voidaan käsitellä minkä tahansa viittauksen kautta samalla tavalla. Toisaalta yhden viittauksen kautta tehtävä muutos heijastuu myös muihin viittauksiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori näyttää jälleen selkeästi mitä ohjelmassa tapahtuu:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/cf84b632e91094d24c611bd9d800a737/c6720/5_2_4a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 32.608695652173914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA30lEQVQY03WQwW7DIAyG8/7vtcsm7bLTTu0ydQmFMMC4CWCbKUyjUaV9Bw6WP/4fhnogpew95FyOQxEBgBBCjPHWSClxY+hLRDR+qtM4T8qu68rMfT5Ns1JXACh/iMij7J1DjIhIRCLSk9u5R4lwzvk3lojuMjMbs2htELGb+6XMLuDXbCDeiOjb2Vq51n3hLqecrF2M0Yjx+OZC/D4uz2/niwbcNutevX+K8UUEB9nLCDGXUpRxp/G62NDb7o1EXEwfFx3X3DJg21zOQYQHa60xxnvfhEpcWerDb9d/+AGpwZhBrvAmDQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cf84b632e91094d24c611bd9d800a737/a0b58/5_2_4a.webp 230w","/static/cf84b632e91094d24c611bd9d800a737/bc10c/5_2_4a.webp 460w","/static/cf84b632e91094d24c611bd9d800a737/966d8/5_2_4a.webp 920w","/static/cf84b632e91094d24c611bd9d800a737/445df/5_2_4a.webp 1380w","/static/cf84b632e91094d24c611bd9d800a737/78de1/5_2_4a.webp 1840w","/static/cf84b632e91094d24c611bd9d800a737/da98d/5_2_4a.webp 1922w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cf84b632e91094d24c611bd9d800a737/81c8e/5_2_4a.png 230w","/static/cf84b632e91094d24c611bd9d800a737/08a84/5_2_4a.png 460w","/static/cf84b632e91094d24c611bd9d800a737/c0255/5_2_4a.png 920w","/static/cf84b632e91094d24c611bd9d800a737/b1001/5_2_4a.png 1380w","/static/cf84b632e91094d24c611bd9d800a737/161ec/5_2_4a.png 1840w","/static/cf84b632e91094d24c611bd9d800a737/c6720/5_2_4a.png 1922w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/cf84b632e91094d24c611bd9d800a737/c0255/5_2_4a.png","alt":"5 2 4a","title":"5 2 4a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"listan-kopiointi","style":"position:relative;"},"children":[{"type":"text","value":"Listan kopiointi"},{"type":"element","tagName":"a","properties":{"href":"#listan-kopiointi","ariaLabel":"listan kopiointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluamme tehdä listasta erillisen kopion, voimme luoda uuden listan ja lisätä siihen jokaisen aluperäisen listan alkion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nkopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nkopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kopio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"lista [1, 2, 3, 3, 5]\nkopio [10, 2, 3, 3, 5, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattorilla tarkastellen kopiointi näyttää seuraavalta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/66b9f72bbac2f55cd8fac4539ba92dba/e431d/5_2_4b.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.04347826086957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABGElEQVQoz32RzW7DIBCE/f4v1kY99NBTFFWtZMcQ29iADRjvD5WhcXJpPyEOLLM7mq3SHeZkZzdOFpDSEwDg7vgMAFCmOj45H1qpWjlqs4Tgmbm8bxlALBpEJCJmBoCHeJ6ttQZgI0RAfHLEef7GzDFuMW5ETMSImMWcKK5uWW5dd+s6KW/GmEPsQ5S9/q4FIjm3OG9Sgny4OnpP09Q0zfV6XZalGCu+rYsfF/F+blwkF5S1J61frH1lXh+2lVJ13Qgh+r4fxzEb2gkRL3V//pIR2IXZhxpgINr2yQB7EiUGpb3SPqxwpFV8MTPRvoIQtDFv6/pZStU4TcMweO9TSnsD+hXyE+kPqlJTSrVtK6UstxDiWOY/4h8FSwu1d8EohwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/66b9f72bbac2f55cd8fac4539ba92dba/a0b58/5_2_4b.webp 230w","/static/66b9f72bbac2f55cd8fac4539ba92dba/bc10c/5_2_4b.webp 460w","/static/66b9f72bbac2f55cd8fac4539ba92dba/966d8/5_2_4b.webp 920w","/static/66b9f72bbac2f55cd8fac4539ba92dba/445df/5_2_4b.webp 1380w","/static/66b9f72bbac2f55cd8fac4539ba92dba/78de1/5_2_4b.webp 1840w","/static/66b9f72bbac2f55cd8fac4539ba92dba/609ff/5_2_4b.webp 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/66b9f72bbac2f55cd8fac4539ba92dba/81c8e/5_2_4b.png 230w","/static/66b9f72bbac2f55cd8fac4539ba92dba/08a84/5_2_4b.png 460w","/static/66b9f72bbac2f55cd8fac4539ba92dba/c0255/5_2_4b.png 920w","/static/66b9f72bbac2f55cd8fac4539ba92dba/b1001/5_2_4b.png 1380w","/static/66b9f72bbac2f55cd8fac4539ba92dba/161ec/5_2_4b.png 1840w","/static/66b9f72bbac2f55cd8fac4539ba92dba/e431d/5_2_4b.png 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/66b9f72bbac2f55cd8fac4539ba92dba/c0255/5_2_4b.png","alt":"5 2 4b","title":"5 2 4b","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kopio"}]},{"type":"text","value":" siis viittaa nyt eri listaan kuin muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Helpompi tapa listan kopioimiseen on hyödyntää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":"-operaattoria, johon tutustuimme aiemmin kurssilla. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[:]"}]},{"type":"text","value":" tarkoittaa, että listalta valitaan kaikki alkiot, ja tämän sivuvaikutuksena syntyy kopio listasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nkopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[10, 2, 3, 4]\n[1, 20, 3, 4]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lista-funktion-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Lista funktion parametrina"},{"type":"element","tagName":"a","properties":{"href":"#lista-funktion-parametrina","ariaLabel":"lista funktion parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun lista välitetään parametrina funktiolle, välitetään viittaus listaan. Tämä tarkoittaa, että funktio voi muuttaa parametrinaan saamaansa listaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava funktio lisää uuden alkion parametrinaan saamaansa listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi_alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n[1, 2, 3]\n[1, 2, 3, 10]\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"text","value":" ei palauta mitään, vaan muuttaa parametrinaan saamaansa listaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori havainnollistaa tilanteen seuraavasti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9be11dea0a28e2151e4f4f7101f82472/764d0/5_2_4c.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 35.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA+UlEQVQY01WO226DMBAF+f9/62P7UFVKq0BCMdgLOOs1e6sITdTO45FGZxp/oKZY6NwN5y6UUlXVzNzdzOZ5jjHmnG93aq1mJiLNYZrqVimm1Lbd5dqP47Qui6oespnpHXcXkWNh5ofMzERrXodhiDGWUojo+WxmtVZEVFUAEOFjbJ7ZiNh1bd9fc17dzf8AAG3bIqK7r+st54KIe7Y9ICKA+dJPMWVmOSKPZ2aBeaFaN1ZYPhDfVIu7NzhDShBjJCJ3Z/GNj95fzP3UTS+vX21YVK1QX8rJrO6ybBsziwgAjGOIcZqmMYSQUlJVkT3hOi7vn98hrf6fH4cdljeAKLvbAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9be11dea0a28e2151e4f4f7101f82472/a0b58/5_2_4c.webp 230w","/static/9be11dea0a28e2151e4f4f7101f82472/bc10c/5_2_4c.webp 460w","/static/9be11dea0a28e2151e4f4f7101f82472/966d8/5_2_4c.webp 920w","/static/9be11dea0a28e2151e4f4f7101f82472/445df/5_2_4c.webp 1380w","/static/9be11dea0a28e2151e4f4f7101f82472/78de1/5_2_4c.webp 1840w","/static/9be11dea0a28e2151e4f4f7101f82472/b4500/5_2_4c.webp 1898w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9be11dea0a28e2151e4f4f7101f82472/81c8e/5_2_4c.png 230w","/static/9be11dea0a28e2151e4f4f7101f82472/08a84/5_2_4c.png 460w","/static/9be11dea0a28e2151e4f4f7101f82472/c0255/5_2_4c.png 920w","/static/9be11dea0a28e2151e4f4f7101f82472/b1001/5_2_4c.png 1380w","/static/9be11dea0a28e2151e4f4f7101f82472/161ec/5_2_4c.png 1840w","/static/9be11dea0a28e2151e4f4f7101f82472/764d0/5_2_4c.png 1898w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9be11dea0a28e2151e4f4f7101f82472/c0255/5_2_4c.png","alt":"5 2 4c","title":"5 2 4c","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Global frame"}]},{"type":"text","value":" tarkoittaa pääohjelman muuttujia ja sinisellä oleva laatikko "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"text","value":" taas funktion parametreja ja muuttujia. Kuten visualisaatio havainnollistaa, funktio viittaa samaan listaan mihin pääohjelmakin viittaa, eli funktiossa listalle tehtävät muutokset näkyvät pääohjelmaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa olisi luoda uusi lista ja palauttaa se:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi_alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n kopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kopio\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nluvut2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lisaa_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Alkuperäinen lista:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Uusi lista:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alkuperäinen lista: [1, 2, 3]\nUusi lista: [1, 2, 3, 10]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et ole 100% varma mitä koodissa tapahtuu, käy sen toiminta läpi visualisaattorilla!"}]},{"type":"element","tagName":"h2","properties":{"id":"parametrina-olevan-listan-muokkaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Parametrina olevan listan muokkaaminen"},{"type":"element","tagName":"a","properties":{"href":"#parametrina-olevan-listan-muokkaaminen","ariaLabel":"parametrina olevan listan muokkaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on yritys tehdä funktio, joka kasvattaa parametrina saamansa listan jokaista alkiota kymmenellä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusilista\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alussa \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkasvata_kaikkia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"funktion jälkeen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"alussa: [1, 2, 3]\nfunktion jälkeen: [1, 2, 3]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jostain syystä funktio ei kuitenkaan näytä toimivan. Mistä on kyse?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolle on välitetty parametrina "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viite"}]},{"type":"text","value":" muutettavaan listaan. Sijoitus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista = uusilista"}]},{"type":"text","value":" saa aikaan sen, että parametriin talletettu viite muuttaa arvoaan funktion sisällä eli se alkaa viitata funktion sisällä luotuun uuteen listaan. Sijoitus ei kuitenkaan vaikuta funktion ulkopuolelle, siellä viitataan edelleen alkuperäiseen listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava kuvasarja havainnollistaa, mihin eri muuttujat viittaavat ohjelman suorituksen aikana:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 442px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/e03bf/5_2_6.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 157.82608695652175%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAAsTAAALEwEAmpwYAAACUElEQVRIx5WWx47DMAxE/f9/ldxSEeQQpPfee0+4eAS40BqSkxVAWJat8ZBDUo4kNt7vt/d+NBpJOp2WwWDgfc9G5Nv8er3UuMeYb7dbWS6Xstls5Pl8BkG9gLPZTMbjsZzPZwWaTCYK1u12dX69Xn/fj4NGSS67c2ONhcITZOh++XQ6KeP1eq1scXmxWCh7H2j0SRQ2FwoFyeVyUi6XJZ/PSzablel06gf0sYLNfD5XdsfjUfb7vVwuF12DZaLLLpApizuAmcKAIRKAfOx+v/8SCLocyisGLAFKCo2X4XA4lE6no2xarZasVitlezgc/oTFDVMiIEzYTMyoDABZi4MlAUehnENFYvVpeFX2Ke2CU2qu2ZolubsvmNj2Mm6Th1gmk5FSqSTFYlFSqZTUarX/AbpG/SIQdrvdwi7HgRhs6Pf7KhD5SLXAlLjSIHa7XbBUo1BTsBZlg26D8QFjGGwOIVFsTqXQFOLPgmljC9RppVKRXq+nid1sNjUnzcWv0iakLiAYLtrAVe5NnI+J7TYJmFarVVUXEGqZvkh5Ihhni+8o8KoMICAmAGYdiBBglCSA8VL82GC/GV6XfWpTy3QexCEHOaCoDkTD9Uajoe67exIZ4hJA7XZbgQGp1+t6T4ITY9pdENDAACLvyL/H46HC2FGA8qwluhwXBVdRFEAEoQT5gKkMsFvvXoafxLByjIMkMsQVawSWd6Em+1XpsRmXUBMj8O5vx9el53uAqvaHQMzs/4Y1jlOucdeD3QYhyD3SA3UxADDSiAOMq6/0fgAgpcds34kgXgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/a0b58/5_2_6.webp 230w","/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/3fa5c/5_2_6.webp 442w"],"sizes":"(max-width: 442px) 100vw, 442px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/81c8e/5_2_6.png 230w","/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/e03bf/5_2_6.png 442w"],"sizes":"(max-width: 442px) 100vw, 442px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/e03bf/5_2_6.png","alt":"5 2 6","title":"5 2 6","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion sisällä muutettu lista siis \"kadotetaan\" kun funktiosta palataan, ja muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":" viittaa koko ajan alkuperäiseen listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori on tässäkin tapauksessa ystävä: se näyttää selkeästi, miten funktio ei koske alkuperäiseen listaan ollenkaan vaan luo uuden listan, johon muutokset tehdään:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/19d3606e35d311c11edb9891cf40eeeb/75d3b/5_2_4d.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 41.30434782608695%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABLklEQVQY01WQ227bMBBE/f/fFgRFAhQwEECuK9GWaZCWRHGXe20UJW1znvblDGb24B+oKCKkPJ9+j+GaEFtrzczcHRFzzsuyAAARMbOZiYiZHT5l1VLK+Xy+Xq8xxnVdAUBE3H2PEBEiMrM9VFW/ZFNuqGYppRhjCGGeZyJqrbk7MwNirRURVTWlTMTywS4bE6Wcp2kqpQCA/wc2jLfbJYTW0Mzm+bGu8571WZuZh2Houm4YhtPptNfeCzfiqUBMU1m30FKOtb66q7sfmBoiAoCqNJJ7Xqfyb5W7L5V+HPvnn79CqhVpKT1iZ1Y2uU4bj8cDAJi3McxMRNshYqoF5diNzy9v4V5EdV7epumptcsm/92Wcx7Hse/7EEKMsdZqGwokOa+3yz0v337xLv8BaHfNshxTjQQAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19d3606e35d311c11edb9891cf40eeeb/a0b58/5_2_4d.webp 230w","/static/19d3606e35d311c11edb9891cf40eeeb/bc10c/5_2_4d.webp 460w","/static/19d3606e35d311c11edb9891cf40eeeb/966d8/5_2_4d.webp 920w","/static/19d3606e35d311c11edb9891cf40eeeb/445df/5_2_4d.webp 1380w","/static/19d3606e35d311c11edb9891cf40eeeb/78de1/5_2_4d.webp 1840w","/static/19d3606e35d311c11edb9891cf40eeeb/ee81e/5_2_4d.webp 1966w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19d3606e35d311c11edb9891cf40eeeb/81c8e/5_2_4d.png 230w","/static/19d3606e35d311c11edb9891cf40eeeb/08a84/5_2_4d.png 460w","/static/19d3606e35d311c11edb9891cf40eeeb/c0255/5_2_4d.png 920w","/static/19d3606e35d311c11edb9891cf40eeeb/b1001/5_2_4d.png 1380w","/static/19d3606e35d311c11edb9891cf40eeeb/161ec/5_2_4d.png 1840w","/static/19d3606e35d311c11edb9891cf40eeeb/75d3b/5_2_4d.png 1966w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/19d3606e35d311c11edb9891cf40eeeb/c0255/5_2_4d.png","alt":"5 2 4d","title":"5 2 4d","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi tapa korjata ongelma on kopioida uuden listan kaikki alkiot takaisin vanhaan listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kopioidaan vanhaan listaan uuden listan arvot"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on olemassa myös ovela tapa sijoittaa monta alkiota kerrallaan listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä siis sijoitetaan \"osalistaan\" eli listan kohtiin 1 ja 2 taulukollinen alkioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osalistaksi voidaan myös valita koko lista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"98"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"97"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"98"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"97"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli näin tulee korvatuksi koko vanhan listan sisältö. Siispä eräs toimiva versio funktiosta näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusilista"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...tai ilman listan kopiontia yksinkertaisesti sijoittamalla uudet arvot heti vanhaan listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkiot tuplana","tmcname":"osa05-06a_alkiot_tuplana"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuplaa_alkiot(luvut: list)"}]},{"type":"text","value":", joka saa parametrikseen lukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, jossa alkuperäisen listan alkiot on kerrottu kahdella. Funkto "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" saa muuttaa alkuperäistä listaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tuplaluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuplaa_alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alkuperäinen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tuplattu:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tuplaluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"alkuperäinen: [2, 4, 5, 3, 11, -4]\ntuplattu: [4, 8, 10, 6, 22, -8]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Poista pienin","tmcname":"osa05-06b_poista_pienin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_pienin(luvut: list)"}]},{"type":"text","value":", joka saa parametrikseen lukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio etsii ja poistaa listasta pienimmän alkion. Voit olettaa, että pienin alkio esiintyy listassa vain kerran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio ei siis palauta mitään, vaan muokkaa parametrinaan saamaansa listaa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n poista_pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 4, 6, 3, 5]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: ruudukon tulostus ja luvun lisäys","tmcname":"osa05-07_sudoku_osa5"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan vielä kaksi funktiota sudokua varten: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisays"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan ja tulostaa sen alla olevan esimerkkitulostuksen mukaisessa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisays(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int)"}]},{"type":"text","value":" saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan, rivi- ja sarakenumerot sekä luvun väliltä 1–9. Funktio lisää luvun parametrien ilmoittamaan kohtaan sudokuruudukkoa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kolme numeroa lisätty:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\nKolme numeroa lisätty:\n\n2 _ _ _ _ _ _ _ _\n_ _ 7 _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ 3 _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saatat tässä tehtävässä hyötyä siitä, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoa on mahdollista käyttää myös siten, että se ei aiheuta rivinvaihtoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkkejä \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ilman välejä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"merkkejä ilman välejä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus taas tarvitaan pelkkää rivinvaihtoa, ja se onnistuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: luvun lisäys ruudukon kopioon","tmcname":"osa05-08_sudoku_osa6"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viimeisessä sudokua käsittelevässä tehtävässä toteutetaan hieman erilainen versio funktiosta, jonka avulla sudokuruudukkoon lisätään uusia lukuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kopioi_ja_lisaa(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int)"}]},{"type":"text","value":" saa parametreikseen sudokuruudukkoa esittävän kaksiulotteisen listan, rivinumeron, sarakenumeron sekä luvun väliltä 1–9. Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" parametrina saadusta sudokuruudukosta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kopion"}]},{"type":"text","value":", johon on lisätty parametrina saatu luku parametrina saatuun sijaintiin sijoitettuna. Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei saa muuttaa"}]},{"type":"text","value":" parametrina annettua sudokuruudukkoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" hyödyntävä käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nkopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kopioi_ja_lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Alkuperäinen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kopio:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Alkuperäinen:\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\nKopio:\n2 _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" tässä tehtävässä pitää olla tarkkana mitä kaikkea tulee kopioida, ja mihin lisäys lopulta kohdistuu. Kuten yleensäkin, "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattori"}]},{"type":"text","value":" auttaa myös nyt. Sudokuruudukon koon takia näkymä tosin on hieman normaalia sekavampi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Ristinolla","tmcname":"osa05-09_ristinolla"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ristinollaa pelataan 3 x 3 -kokoisella ruudukolla, johon pelaajat merkitsevät vuorotellen ristin tai nollan. Pelin voittaa se pelaaja, joka saa ensimmäisenä kolme merkkiä pystyyn, vaakaan tai kulmittain. Peli päättyy tasapeliin, jos kumpikaan pelaaja ei saa kolmen sarjaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pelaa_siirto(lauta: list, x: int, y: int, nappula: str)"}]},{"type":"text","value":", jossa sijoitetaan annettu pelinappula annettuihin koordinaatteihin pelilaudalla. Koordinaattien arvot ovat väliltä 0..2."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":" että tässä tehtävässä parametrit ovat eri päin kuin sudokussa, ensin annetaan saraketta kuvaava "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" ja sen jälkeen riviä kuvaava "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelilauta koostuu merkkijonoista seuraavasti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":": tyhjä ruutu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"X\""}]},{"type":"text","value":": pelaajan 1 merkki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"O\""}]},{"type":"text","value":": pelaajan 2 merkki"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos nappula saatiin sijoitettua laudalle (eli jos paikka oli tyhjä), ja arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":", jos paikka oli varattu TAI jos koordinaatin arvo oli liian pieni tai suuri (eli ei väliltä 0..2)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lauta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaa_siirto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lauta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"X\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lauta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\n[['', '', 'X'], ['', '', ''], ['', '', '']]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Matriisin kääntö","tmcname":"osa05-10_matriisin_kaanto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"transponoi(matriisi: list)"}]},{"type":"text","value":", joka saa parametrikseen kaksiulotteisen kokonaislukuja sisältävän taulukon eli matriisin. Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"transponoi"}]},{"type":"text","value":" matriisin eli muuntaa rivit sarakkeiksi ja päinvastoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että matriisissa on yhtä monta riviä kuin sarakettakin (eli matriisi on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"neliömatriisi"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi matriisista"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulisi transponoinnin jälkeen tällainen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia."}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktioiden-sivuvaikutukset","style":"position:relative;"},"children":[{"type":"text","value":"Funktioiden sivuvaikutukset"},{"type":"element","tagName":"a","properties":{"href":"#funktioiden-sivuvaikutukset","ariaLabel":"funktioiden sivuvaikutukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktio saa parametrinaan viittauksen listaan, se voi muuttaa tätä listaa. Jos funktion varsinaisena tarkoituksena ei ole muuttaa listaa, muutokset voivat aiheuttaa ongelmia toisaalla ohjelmassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä funktiota, jonka tarkoituksena on etsiä listan toiseksi pienin alkio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"toiseksi_pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# järjestetyn listan toiseksi pienin alkio on kohdassa 1"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toiseksi_pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n2\n[1, 2, 3, 4, 4, 5, 6, 7]\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio kyllä etsii ja löytää toiseksi pienimmän alkion, mutta sen lisäksi se muuttaa listan alkioiden järjestyksen. Jos järjestyksellä on merkitystä muualla ohjelmassa, funktion kutsuminen voi aiheuttaa virheitä. Esimerkin kaltaista muutosta viittauksena saatuun olioon kutsutaan funktion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sivuvaikutukseksi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme toteuttaa funktion ilman sivuvaikutuksia näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"toiseksi_pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toiseksi_pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n[1, 4, 2, 5, 3, 6, 4, 7]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" palauttaa uuden järjestetyn listan, toiseksi pienimmän alkion etsiminen ei enää sotke listan alkuperäistä järjestystä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein pidetään hyvänä asiana, että funktiot eivät aiheuta sivuvaikutuksia, sillä sivuvaikutukset voivat hankaloittaa ohjelmien toimivuuden varmistamista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sivuvaikutuksettomia funktioita kutsutaan myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puhtaiksi funktioiksi"}]},{"type":"text","value":" ja erityisesti funktionaalista ohjelmointityyliä käytettäessä funktiot pyritään rakentamaan näin. Palaamme aiheeseen tarkemmin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin jatkokurssilla"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"7384687a-fe87-53d4-be99-05a98f5e467e"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan viittaustyyppisellä muuttujalla
    • \n
    • Tiedät, että samaan olioon voi olla useampia viittauksia
    • \n
    • Osaat käyttää listoja funktioiden parametreina
    • \n
    • Tiedät, mitä tarkoitetaan funktion sivuvaikutuksella
    • \n

    Olemme tähän asti ajatelleet, että muuttuja on eräänlainen \"laatikko\", joka sisältää muuttujan arvon. Teknisesti ottaen tämä ei pidä paikkaansa Pythonissa: muuttujat eivät sisällä arvoa vaan ne viittaavat arvona olevaan olioon, kuten lukuun, merkkijonoon tai listaan.

    Käytännössä tämä tarkoittaa, että muuttujaan ei tallenneta arvoa, vaan tieto siitä paikasta, mistä muuttujan arvo löytyy.

    Viittausta voidaan kuvata nuolena muuttujasta sen varsinaiseen arvoon:

    \n \n \n \n \n \n \"5\n \n \n

    Listaa voidaan käsitellä kumman tahansa viittauksen avulla:

    lista = [1, 2, 3, 4]\nlista2 = lista\n\nlista[0] = 10\nlista2[1] = 20\n\nprint(lista)\nprint(lista2)

    [10, 20, 3, 4]\n[10, 20, 3, 4]

    Mikäli samaan listaan on useampia viittauksia, sitä voidaan käsitellä minkä tahansa viittauksen kautta samalla tavalla. Toisaalta yhden viittauksen kautta tehtävä muutos heijastuu myös muihin viittauksiin.

    Visualisaattori näyttää jälleen selkeästi mitä ohjelmassa tapahtuu:

    \n \n \n \n \n \n \"5\n \n \n

    Listan kopiointi

    Jos haluamme tehdä listasta erillisen kopion, voimme luoda uuden listan ja lisätä siihen jokaisen aluperäisen listan alkion:

    lista = [1, 2, 3, 3, 5]\n\nkopio = []\nfor alkio in lista:\n    kopio.append(alkio)\n\nkopio[0] = 10\nkopio.append(6)\nprint(\"lista\", lista)\nprint(\"kopio\", kopio)

    lista [1, 2, 3, 3, 5]\nkopio [10, 2, 3, 3, 5, 6]

    Visualisaattorilla tarkastellen kopiointi näyttää seuraavalta:

    \n \n \n \n \n \n \"5\n \n \n

    Muuttuja kopio siis viittaa nyt eri listaan kuin muuttuja lista.

    Helpompi tapa listan kopioimiseen on hyödyntää []-operaattoria, johon tutustuimme aiemmin kurssilla. Merkintä [:] tarkoittaa, että listalta valitaan kaikki alkiot, ja tämän sivuvaikutuksena syntyy kopio listasta:

    lista = [1,2,3,4]\nkopio = lista[:]\n\nlista[0] = 10\nkopio[1] = 20\n\nprint(lista)\nprint(kopio)

    [10, 2, 3, 4]\n[1, 20, 3, 4]

    Lista funktion parametrina

    Kun lista välitetään parametrina funktiolle, välitetään viittaus listaan. Tämä tarkoittaa, että funktio voi muuttaa parametrinaan saamaansa listaa.

    Esimerkiksi seuraava funktio lisää uuden alkion parametrinaan saamaansa listaan:

    def lisaa_alkio(lista: list):\n    uusi_alkio = 10\n    lista.append(uusi_alkio)\n\nlista = [1,2,3]\nprint(lista)\nlisaa_alkio(lista)\nprint(lista)
    \n[1, 2, 3]\n[1, 2, 3, 10]\n

    Huomaa, että funktio lisaa_alkio ei palauta mitään, vaan muuttaa parametrinaan saamaansa listaa.

    Visualisaattori havainnollistaa tilanteen seuraavasti:

    \n \n \n \n \n \n \"5\n \n \n

    Global frame tarkoittaa pääohjelman muuttujia ja sinisellä oleva laatikko lisaa_alkio taas funktion parametreja ja muuttujia. Kuten visualisaatio havainnollistaa, funktio viittaa samaan listaan mihin pääohjelmakin viittaa, eli funktiossa listalle tehtävät muutokset näkyvät pääohjelmaan.

    Toinen tapa olisi luoda uusi lista ja palauttaa se:

    def lisaa_alkio(lista: list) -> list:\n    uusi_alkio = 10\n    kopio = lista[:]\n    kopio.append(uusi_alkio)\n    return kopio\n\nluvut = [1, 2, 3]\nluvut2 = lisaa_alkio(luvut)\n\nprint(\"Alkuperäinen lista:\", luvut)\nprint(\"Uusi lista:\", luvut2)

    Alkuperäinen lista: [1, 2, 3]\nUusi lista: [1, 2, 3, 10]

    Jos et ole 100% varma mitä koodissa tapahtuu, käy sen toiminta läpi visualisaattorilla!

    Parametrina olevan listan muokkaaminen

    Seuraavassa on yritys tehdä funktio, joka kasvattaa parametrina saamansa listan jokaista alkiota kymmenellä:

    def kasvata_kaikkia(lista: list):\n    uusilista = []\n    for alkio in lista:\n        uusilista.append(alkio + 10)\n    lista = uusilista\n\nluvut = [1, 2, 3]\nprint(\"alussa \",luvut)\nkasvata_kaikkia(luvut)\nprint(\"funktion jälkeen\", luvut)

    alussa: [1, 2, 3]\nfunktion jälkeen: [1, 2, 3]

    Jostain syystä funktio ei kuitenkaan näytä toimivan. Mistä on kyse?

    Funktiolle on välitetty parametrina viite muutettavaan listaan. Sijoitus lista = uusilista saa aikaan sen, että parametriin talletettu viite muuttaa arvoaan funktion sisällä eli se alkaa viitata funktion sisällä luotuun uuteen listaan. Sijoitus ei kuitenkaan vaikuta funktion ulkopuolelle, siellä viitataan edelleen alkuperäiseen listaan.

    Seuraava kuvasarja havainnollistaa, mihin eri muuttujat viittaavat ohjelman suorituksen aikana:

    \n \n \n \n \n \n \"5\n \n \n

    Funktion sisällä muutettu lista siis \"kadotetaan\" kun funktiosta palataan, ja muuttuja luvut viittaa koko ajan alkuperäiseen listaan.

    Visualisaattori on tässäkin tapauksessa ystävä: se näyttää selkeästi, miten funktio ei koske alkuperäiseen listaan ollenkaan vaan luo uuden listan, johon muutokset tehdään:

    \n \n

    Tee funktio tuplaa_alkiot(luvut: list), joka saa parametrikseen lukuja sisältävän listan.

    Funktio palauttaa uuden listan, jossa alkuperäisen listan alkiot on kerrottu kahdella. Funkto ei saa muuttaa alkuperäistä listaa.

    Esimerkki funktion kutsumisesta:

    if __name__ == \"__main__\":\n    luvut = [2, 4, 5, 3, 11, -4]\n    tuplaluvut = tuplaa_alkiot(luvut)\n    print(\"alkuperäinen:\", luvut)\n    print(\"tuplattu:\", tuplaluvut)

    alkuperäinen: [2, 4, 5, 3, 11, -4]\ntuplattu: [4, 8, 10, 6, 22, -8]

    Tee funktio poista_pienin(luvut: list), joka saa parametrikseen lukuja sisältävän listan.

    Funktio etsii ja poistaa listasta pienimmän alkion. Voit olettaa, että pienin alkio esiintyy listassa vain kerran.

    Funktio ei siis palauta mitään, vaan muokkaa parametrinaan saamaansa listaa!

    Esimerkki funktion kutsumisesta:

    if __name__ == \"__main__\":\n    luvut = [2, 4, 6, 1, 3, 5]\n    poista_pienin(luvut)\n    print(luvut)

    [2, 4, 6, 3, 5]

    Tässä tehtävässä toteutetaan vielä kaksi funktiota sudokua varten: tulosta ja lisays.

    Funktio tulosta saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan ja tulostaa sen alla olevan esimerkkitulostuksen mukaisessa muodossa.

    Funktio lisays(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int) saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan, rivi- ja sarakenumerot sekä luvun väliltä 1–9. Funktio lisää luvun parametrien ilmoittamaan kohtaan sudokuruudukkoa.

    sudoku  = [\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0]\n]\n\ntulosta(sudoku)\nlisays(sudoku, 0, 0, 2)\nlisays(sudoku, 1, 2, 7)\nlisays(sudoku, 5, 7, 3)\nprint()\nprint(\"Kolme numeroa lisätty:\")\nprint()\ntulosta(sudoku)
    \n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\nKolme numeroa lisätty:\n\n2 _ _  _ _ _  _ _ _\n_ _ 7  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ 3 _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n

    Vihje

    Saatat tässä tehtävässä hyötyä siitä, että print-komentoa on mahdollista käyttää myös siten, että se ei aiheuta rivinvaihtoa:

    print(\"merkkejä \", end=\"\")\nprint(\"ilman välejä\", end=\"\")

    merkkejä ilman välejä

    Joskus taas tarvitaan pelkkää rivinvaihtoa, ja se onnistuu seuraavasti:

    print()

    Viimeisessä sudokua käsittelevässä tehtävässä toteutetaan hieman erilainen versio funktiosta, jonka avulla sudokuruudukkoon lisätään uusia lukuja.

    Funktio kopioi_ja_lisaa(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int) saa parametreikseen sudokuruudukkoa esittävän kaksiulotteisen listan, rivinumeron, sarakenumeron sekä luvun väliltä 1–9. Funktio palauttaa parametrina saadusta sudokuruudukosta kopion, johon on lisätty parametrina saatu luku parametrina saatuun sijaintiin sijoitettuna. Funktio ei saa muuttaa parametrina annettua sudokuruudukkoa.

    Seuraavassa on edellisen tehtävän funktiota tulosta hyödyntävä käyttöesimerkki:

    sudoku  = [\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0]\n]\n\nkopio = kopioi_ja_lisaa(sudoku, 0, 0, 2)\nprint(\"Alkuperäinen:\")\ntulosta(sudoku)\nprint()\nprint(\"Kopio:\")\ntulosta(kopio)
    \nAlkuperäinen:\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\nKopio:\n2 _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n

    Vihje tässä tehtävässä pitää olla tarkkana mitä kaikkea tulee kopioida, ja mihin lisäys lopulta kohdistuu. Kuten yleensäkin, visualisaattori auttaa myös nyt. Sudokuruudukon koon takia näkymä tosin on hieman normaalia sekavampi.

    Ristinollaa pelataan 3 x 3 -kokoisella ruudukolla, johon pelaajat merkitsevät vuorotellen ristin tai nollan. Pelin voittaa se pelaaja, joka saa ensimmäisenä kolme merkkiä pystyyn, vaakaan tai kulmittain. Peli päättyy tasapeliin, jos kumpikaan pelaaja ei saa kolmen sarjaa.

    Kirjoita funktio pelaa_siirto(lauta: list, x: int, y: int, nappula: str), jossa sijoitetaan annettu pelinappula annettuihin koordinaatteihin pelilaudalla. Koordinaattien arvot ovat väliltä 0..2.

    Huomaa että tässä tehtävässä parametrit ovat eri päin kuin sudokussa, ensin annetaan saraketta kuvaava x ja sen jälkeen riviä kuvaava y.

    Pelilauta koostuu merkkijonoista seuraavasti:

      \n
    • \"\": tyhjä ruutu
    • \n
    • \"X\": pelaajan 1 merkki
    • \n
    • \"O\": pelaajan 2 merkki
    • \n

    Funktio palauttaa arvon True, jos nappula saatiin sijoitettua laudalle (eli jos paikka oli tyhjä), ja arvon False, jos paikka oli varattu TAI jos koordinaatin arvo oli liian pieni tai suuri (eli ei väliltä 0..2).

    Esimerkiksi:

    lauta = [[\"\", \"\", \"\"], [\"\", \"\", \"\"], [\"\", \"\", \"\"]]\nprint(pelaa_siirto(lauta, 2, 0, \"X\"))\nprint(lauta)

    True\n[['', '', 'X'], ['', '', ''], ['', '', '']]

    Kirjoita funktio transponoi(matriisi: list), joka saa parametrikseen kaksiulotteisen kokonaislukuja sisältävän taulukon eli matriisin. Funktio transponoi matriisin eli muuntaa rivit sarakkeiksi ja päinvastoin.

    Voit olettaa, että matriisissa on yhtä monta riviä kuin sarakettakin (eli matriisi on neliömatriisi).

    Esimerkiksi matriisista

    1 2 3\n4 5 6\n7 8 9

    tulisi transponoinnin jälkeen tällainen:

    1 4 7\n2 5 8\n3 6 9

    Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia.

    Funktioiden sivuvaikutukset

    Koska funktio saa parametrinaan viittauksen listaan, se voi muuttaa tätä listaa. Jos funktion varsinaisena tarkoituksena ei ole muuttaa listaa, muutokset voivat aiheuttaa ongelmia toisaalla ohjelmassa.

    Tarkastellaan esimerkkinä funktiota, jonka tarkoituksena on etsiä listan toiseksi pienin alkio:

    def toiseksi_pienin(lista: list) -> int:\n    # järjestetyn listan toiseksi pienin alkio on kohdassa 1\n    lista.sort()\n    return lista[1]\n\nluvut = [1, 4, 2, 5, 3, 6, 4, 7]\nprint(toiseksi_pienin(luvut))\nprint(luvut)
    \n2\n[1, 2, 3, 4, 4, 5, 6, 7]\n

    Funktio kyllä etsii ja löytää toiseksi pienimmän alkion, mutta sen lisäksi se muuttaa listan alkioiden järjestyksen. Jos järjestyksellä on merkitystä muualla ohjelmassa, funktion kutsuminen voi aiheuttaa virheitä. Esimerkin kaltaista muutosta viittauksena saatuun olioon kutsutaan funktion sivuvaikutukseksi.

    Voimme toteuttaa funktion ilman sivuvaikutuksia näin:

    def toiseksi_pienin(lista: list) -> int:\n    kopio = sorted(lista)\n    return kopio[1]\n\nluvut = [1, 4, 2, 5, 3, 6, 4, 7]\nprint(toiseksi_pienin(luvut))\nprint(luvut)

    2\n[1, 4, 2, 5, 3, 6, 4, 7]

    Koska funktio sorted palauttaa uuden järjestetyn listan, toiseksi pienimmän alkion etsiminen ei enää sotke listan alkuperäistä järjestystä.

    Usein pidetään hyvänä asiana, että funktiot eivät aiheuta sivuvaikutuksia, sillä sivuvaikutukset voivat hankaloittaa ohjelmien toimivuuden varmistamista.

    Sivuvaikutuksettomia funktioita kutsutaan myös puhtaiksi funktioiksi ja erityisesti funktionaalista ohjelmointityyliä käytettäessä funktiot pyritään rakentamaan näin. Palaamme aiheeseen tarkemmin Ohjelmoinnin jatkokurssilla.

    ","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/2-viittaukset.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan viittaustyyppisellä muuttujalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, että samaan olioon voi olla useampia viittauksia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää listoja funktioiden parametreina"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan funktion sivuvaikutuksella"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän asti ajatelleet, että muuttuja on eräänlainen \"laatikko\", joka sisältää muuttujan arvon. Teknisesti ottaen tämä ei pidä paikkaansa Pythonissa: muuttujat eivät sisällä arvoa vaan ne "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaavat"}]},{"type":"text","value":" arvona olevaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioon"}]},{"type":"text","value":", kuten lukuun, merkkijonoon tai listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytännössä tämä tarkoittaa, että muuttujaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei tallenneta"}]},{"type":"text","value":" arvoa, vaan tieto siitä paikasta, mistä muuttujan arvo löytyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viittausta voidaan kuvata nuolena muuttujasta sen varsinaiseen arvoon:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 261px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8687855d3e59d8151e4fce49ec9669b0/edf96/5_2_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 30.869565217391305%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA1ElEQVQY041ROQ6EQAyb7/MBfsA/aCgoEHQcDQ2XOMQlxI1XzgqKbdhIljzJ2JNk1DiOKIoCdV1jnmfEcYymaZBlmSBJEjDO88R1Xa9Qx3FgWRYRMUHTaZoE5Kwx/2+om7yJ+AA7b9tWprl5VVXCu66TiaRDgoY3v8FI0xR93z8idlyWpRhxAtaZZ5imCUXXKIpkj77vCyeCIECe59A0Dbquyw7XdX0m4e750L7vgm3b4Lrut0MeeJGiXwzDIAb8LM/zEIYhbNuG4zjCLcuSPOuGYeADgRnJTrwaxUwAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8687855d3e59d8151e4fce49ec9669b0/a0b58/5_2_1.webp 230w","/static/8687855d3e59d8151e4fce49ec9669b0/ad293/5_2_1.webp 261w"],"sizes":"(max-width: 261px) 100vw, 261px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8687855d3e59d8151e4fce49ec9669b0/81c8e/5_2_1.png 230w","/static/8687855d3e59d8151e4fce49ec9669b0/edf96/5_2_1.png 261w"],"sizes":"(max-width: 261px) 100vw, 261px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8687855d3e59d8151e4fce49ec9669b0/edf96/5_2_1.png","alt":"5 2 1","title":"5 2 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viittaus siis kertoo, mistä varsinainen arvo löytyy. Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"id"}]},{"type":"text","value":" kertoo, mihin muuttuja viittaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nb "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämäkin on viittaus\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4538357072\n4537788912"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viittaus eli muuttujan id on kokonaisluku, jonka voi ajatella olevan muuttujan arvon sijainnin osoite tietokoneen muistissa. Huomaa, että jos suoritat yllä olevan koodin omalla koneellasi, tulos on luultavasti erilainen, koska muuttujilla on eri viitteet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten jo "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/1-lisaa-listoja#sisakkaisia-listoja-kayttavan-koodin-visualisointi"},"children":[{"type":"text","value":"edellisen osan"}]},{"type":"text","value":" esimerkistä näimme, Python Tutorin visualisaattori näyttää viitteet \"nuolina\" varsinaiseen sisältöön. Visualisaattori kuitenkin \"huijaa\" merkkijonojen tapauksessa ja näyttää ne ikään kuin merkkijonon sisältö olisi tallennettu muuttujan sisälle:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9d19433a6bc55bf386a8fbcc572dba74/94cea/5_2_1a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 29.565217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA2klEQVQY00VQ207EIBDt//+ZzxoT48boBsEs2wKlMMBcMFLbPQ/nYeZcMjP1f0jvnYhDiBkKsxzzTkRhYNs2GCAiZhaR6RQx87yE67e18yryMCPiPM/OeQBgZiKSASI6zCKQkzFaqS+AlNJWaz02jyCAzEyttZyrSJ/2GEbEAj7Eq7J3F1trxLwbakNjw8999bHdfK7IUHLKtvcyRbcsi3POneqzkEdnyvXlYp7f9dunff24xUxQVx+eAC4TIRIRIhpjtNaDtFLKey/y9whmqZWgVCgtl7ZfsfMv95hb032qZjcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9d19433a6bc55bf386a8fbcc572dba74/a0b58/5_2_1a.webp 230w","/static/9d19433a6bc55bf386a8fbcc572dba74/bc10c/5_2_1a.webp 460w","/static/9d19433a6bc55bf386a8fbcc572dba74/966d8/5_2_1a.webp 920w","/static/9d19433a6bc55bf386a8fbcc572dba74/445df/5_2_1a.webp 1380w","/static/9d19433a6bc55bf386a8fbcc572dba74/78de1/5_2_1a.webp 1840w","/static/9d19433a6bc55bf386a8fbcc572dba74/0dc73/5_2_1a.webp 1940w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9d19433a6bc55bf386a8fbcc572dba74/81c8e/5_2_1a.png 230w","/static/9d19433a6bc55bf386a8fbcc572dba74/08a84/5_2_1a.png 460w","/static/9d19433a6bc55bf386a8fbcc572dba74/c0255/5_2_1a.png 920w","/static/9d19433a6bc55bf386a8fbcc572dba74/b1001/5_2_1a.png 1380w","/static/9d19433a6bc55bf386a8fbcc572dba74/161ec/5_2_1a.png 1840w","/static/9d19433a6bc55bf386a8fbcc572dba74/94cea/5_2_1a.png 1940w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9d19433a6bc55bf386a8fbcc572dba74/c0255/5_2_1a.png","alt":"5 2 1a","title":"5 2 1a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Näin ei kuitaan ole todellisuudessa, vaan merkkijonotkin käsitellään Pythonin sisäisissä rakenteissa samaan tapaan kuin listat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Monet Pythonin sisäänrakennetut tyypit, kuten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":", ovat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muuttumattomia"}]},{"type":"text","value":". Tämä tarkoittaa, että olion arvo ei voi koskaan muuttua. Sen sijaan arvo voidaan korvata uudella arvolla:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 281px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/5_2_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 85.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAABpklEQVQ4y52UWYsCQQyE+2eL/8xnQVAQHxXvA+/7vq3lC2TpHca9AmEy6e50qiozYblcqtfrqd/vazabab/f63A4qNvtqtlsajqd6nQ6CXu9Xj96oACFFouF1uu1rterHo+HFaEY6775Nxb0B9tut1qtVnbxZrMxJ8ZBejweFW63m0E8n8/WHc4CTpcUqdVqtmc+n4v98R7iy+Wi+/2uyWSi0Ol0lMvlVCgUVCqVLAl3rVbLeKxWq8pms2IfBdzG47HlYoM2g+y84e8MDkejkcEDNg5Mj8lbh0myXYDn8/npnudCIDvsOPamgm92o8A7RTnA+ndIAqMBZ41GQ4PBwMaE9uGw3W5bHmjkd7udjRhCvZvLLyqjlsN0lV1B/N9z+A4yl/vFziGxO2vWIfOFIzvvaXwSc8ARsA8UPJ1XEwU+isWi8vm8yuWyjcZwOLQb446BHOc4zJeSFCgVMp3ydfDDiDuGU4RBIP+JuFj+DGlKuUFDvV43xZkEOiKH6sT+bfOOMwEhrViycKVSUSaTsWJuFEpSkwo5LhTHHIQKN+DyTt4bgOcPk2YlBJdlLTcAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/a0b58/5_2_2.webp 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/f44a8/5_2_2.webp 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/e24d125e0a5ab22b6d68096ab4edaa6d/81c8e/5_2_2.png 230w","/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/5_2_2.png 281w"],"sizes":"(max-width: 281px) 100vw, 281px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/e24d125e0a5ab22b6d68096ab4edaa6d/6b1e2/5_2_2.png","alt":"5 2 2","title":"5 2 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on myös tyyppejä, jotka ovat muuttuvia. Esimerkiksi listan sisältö voi muuttua ilman, että tarvitsee luoda kokonaan uusi lista:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 271px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/5_2_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 70.43478260869564%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVQ4y5WT66rCQAyE9337w8eT/hEfQVCs4K2iWO+1VevdyDewBxE91EDYbHZ3Opmkbj6fWxzH1uv1bDab2Xa7tTzPLUkSW61WtlgslJ9Op4bd73d7PB5f3RVFIQB8v98rebvd7HA42G63U471eDxaGXP2g202G1WwXq/l7zHn7nK5iAFMKQd2+PV61Up+MBjY6XRS6TBFCkCIAVkul6qIveNStVq1Wq2mi/1+37rdrpy42WxapVKRzoB7KXgMkM/RC5XsNYPpu+AYTHH24/FYmtIw3APRMD5C2c4/xD517fUMVoDA6puXbsor+L9dRsPRaGTD4VDUKQtt/LiwZ6TKzKDmkId+HNI0tSzLBISmOGDn87n0aP1UMqMDOOu32NFB3+FPxgTAnBVZqAaJkIL8ZDLR3g+4o+1hGFq9XtccMn+dTkdO3Gg0LAgCgdFFAACCAHJABnZIppL5MgckiCmNy74BXIYVZ61WS38Na7vd1keiKPrLs38CMo80d8OuAIYAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/a0b58/5_2_3.webp 230w","/static/8b07a257ace229cc26a5eedf03a60986/cadab/5_2_3.webp 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/8b07a257ace229cc26a5eedf03a60986/81c8e/5_2_3.png 230w","/static/8b07a257ace229cc26a5eedf03a60986/5fce1/5_2_3.png 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/8b07a257ace229cc26a5eedf03a60986/5fce1/5_2_3.png","alt":"5 2 3","title":"5 2 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hieman yllättäen myös lukuja ja totuusarvoja edustavat perustietotyypit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":" ovat muuttumattomia. Tarkastellaan esimerkkinä seuraavaa koodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka vaikuttaa siltä, että koodi muuttaa lukua, teknisesti ottaen ei näin ole, vaan jokainen komento luo uuden luvun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavan ohjelman tulostus on mielenkiintoinen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\na "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"id"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4535856912\n4535856944\n4535856912"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aluksi muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" viittaa paikkaan 4535856912, ja kun muuttujan arvo muuttuu, se alkaa viitata paikkaan 4535856944. Kun muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" sijoitetaan arvo 1, se alkaa viitata samaan paikkaan kuin mihin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku"}]},{"type":"text","value":" viittasi, kun sen arvo oli 1."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikuttaakin siltä, että Python on tallentanut luvun 1 paikkaan 4535856912 ja aina kun jonkin muuttujan arvona on 1, muuttuja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaa"}]},{"type":"text","value":" tuohon paikkaan \"tietokoneen muistissa\"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka perustietotyypit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"bool"}]},{"type":"text","value":" ovat viittauksia, ohjelmoijan ei oikeastaan tarvitse välittää asiasta."}]},{"type":"element","tagName":"h2","properties":{"id":"useampi-viittaus-samaan-listaan","style":"position:relative;"},"children":[{"type":"text","value":"Useampi viittaus samaan listaan"},{"type":"element","tagName":"a","properties":{"href":"#useampi-viittaus-samaan-listaan","ariaLabel":"useampi viittaus samaan listaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä listamuuttujan arvon kopiointia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nb "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" a\nb"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sijoitus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b = a"}]},{"type":"text","value":" kopioi muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" arvon muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":". On tärkeä kuitenkin huomata, että muuttujan arvona "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole lista"}]},{"type":"text","value":" vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus listaan"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sijoitus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b = a"}]},{"type":"text","value":" siis kopioi viittauksen, minkä seurauksena kopioinnin jälkeen samaan listaan on kaksi viittausta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 271px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/73c7fae5118d6e5b03c576f1a9d14c3f/5fce1/5_2_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 129.99999999999997%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAaCAYAAAC3g3x9AAAACXBIWXMAAAsTAAALEwEAmpwYAAACN0lEQVRIx52VV64qQQxEZ60sgC2wJvhhFXwhkMg555zx07FU3FHf0QVeS1aHoctlu9xE4/HYlsulbbdbm06nNpvNjDPm4XBoj8fDGM/n8yOLdrudX8KOx6MDbzYbOxwOvtc3fvzJiOyLsVqtbL1ee0SLxeLXmu8OeLvd7H6/OxNmGfvT6WSdTscul4ungv18PncQ1gCSHiJi74C1Ws0Gg4H1+32rVCq+xxqNhhWLRUun09Zutz0FXCRNXAZIZ5PJ5CdkMQwTzLher26wxSGXR6ORm4AoHk4IO4on+6/E801s/rIo6WI4f1phD5kw9vu9S4WchCAh8FsdojtydD6fHTQJ8CuGSSEnFYcZ6cggABGtdR594p0KogKkQyV7vZ4ba+SGTiVwZ1iv1730fCiXy67BZrNp1WrV8vm8pVIpB0N7qjSs6AydAfYKmQPoarBvtVoODjBag2G32/U8wwqDFXqksAC+Wk/NT4FgS7eo4qEOYSTNwVJrMXXAUqnkLPCEl/jQa/NVlWm9pEthF32kQ/UqplcGB9i7dkxkSEWpIFUmF0o6r/d/dUr8HdQIXx7tk9IQrr96sXlgiYACskbYrJEOxeThdUD9hyhkGbJAX9ls9vV4sGeme3hUkBpgzETigIgXj3hSPhF2oVCwXC5nmUzGv3OR/MIKzSFsgcLOcxhWkT2XKRYOVG0GOoUZ5zgFiDVOiOAVMh4Jl9ai3QCM61JF4Sz+hyb9xs9fIZMX6IddEj5j73T4DynC3t7bOJziAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73c7fae5118d6e5b03c576f1a9d14c3f/a0b58/5_2_4.webp 230w","/static/73c7fae5118d6e5b03c576f1a9d14c3f/cadab/5_2_4.webp 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/73c7fae5118d6e5b03c576f1a9d14c3f/81c8e/5_2_4.png 230w","/static/73c7fae5118d6e5b03c576f1a9d14c3f/5fce1/5_2_4.png 271w"],"sizes":"(max-width: 271px) 100vw, 271px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/73c7fae5118d6e5b03c576f1a9d14c3f/5fce1/5_2_4.png","alt":"5 2 4","title":"5 2 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listaa voidaan käsitellä kumman tahansa viittauksen avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nlista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[10, 20, 3, 4]\n[10, 20, 3, 4]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mikäli samaan listaan on useampia viittauksia, sitä voidaan käsitellä minkä tahansa viittauksen kautta samalla tavalla. Toisaalta yhden viittauksen kautta tehtävä muutos heijastuu myös muihin viittauksiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori näyttää jälleen selkeästi mitä ohjelmassa tapahtuu:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/cf84b632e91094d24c611bd9d800a737/c6720/5_2_4a.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 32.608695652173914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA30lEQVQY03WQwW7DIAyG8/7vtcsm7bLTTu0ydQmFMMC4CWCbKUyjUaV9Bw6WP/4fhnogpew95FyOQxEBgBBCjPHWSClxY+hLRDR+qtM4T8qu68rMfT5Ns1JXACh/iMij7J1DjIhIRCLSk9u5R4lwzvk3lojuMjMbs2htELGb+6XMLuDXbCDeiOjb2Vq51n3hLqecrF2M0Yjx+OZC/D4uz2/niwbcNutevX+K8UUEB9nLCDGXUpRxp/G62NDb7o1EXEwfFx3X3DJg21zOQYQHa60xxnvfhEpcWerDb9d/+AGpwZhBrvAmDQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cf84b632e91094d24c611bd9d800a737/a0b58/5_2_4a.webp 230w","/static/cf84b632e91094d24c611bd9d800a737/bc10c/5_2_4a.webp 460w","/static/cf84b632e91094d24c611bd9d800a737/966d8/5_2_4a.webp 920w","/static/cf84b632e91094d24c611bd9d800a737/445df/5_2_4a.webp 1380w","/static/cf84b632e91094d24c611bd9d800a737/78de1/5_2_4a.webp 1840w","/static/cf84b632e91094d24c611bd9d800a737/da98d/5_2_4a.webp 1922w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/cf84b632e91094d24c611bd9d800a737/81c8e/5_2_4a.png 230w","/static/cf84b632e91094d24c611bd9d800a737/08a84/5_2_4a.png 460w","/static/cf84b632e91094d24c611bd9d800a737/c0255/5_2_4a.png 920w","/static/cf84b632e91094d24c611bd9d800a737/b1001/5_2_4a.png 1380w","/static/cf84b632e91094d24c611bd9d800a737/161ec/5_2_4a.png 1840w","/static/cf84b632e91094d24c611bd9d800a737/c6720/5_2_4a.png 1922w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/cf84b632e91094d24c611bd9d800a737/c0255/5_2_4a.png","alt":"5 2 4a","title":"5 2 4a","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"listan-kopiointi","style":"position:relative;"},"children":[{"type":"text","value":"Listan kopiointi"},{"type":"element","tagName":"a","properties":{"href":"#listan-kopiointi","ariaLabel":"listan kopiointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluamme tehdä listasta erillisen kopion, voimme luoda uuden listan ja lisätä siihen jokaisen aluperäisen listan alkion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nkopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nkopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kopio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"lista [1, 2, 3, 3, 5]\nkopio [10, 2, 3, 3, 5, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattorilla tarkastellen kopiointi näyttää seuraavalta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/66b9f72bbac2f55cd8fac4539ba92dba/e431d/5_2_4b.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.04347826086957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABGElEQVQoz32RzW7DIBCE/f4v1kY99NBTFFWtZMcQ29iADRjvD5WhcXJpPyEOLLM7mq3SHeZkZzdOFpDSEwDg7vgMAFCmOj45H1qpWjlqs4Tgmbm8bxlALBpEJCJmBoCHeJ6ttQZgI0RAfHLEef7GzDFuMW5ETMSImMWcKK5uWW5dd+s6KW/GmEPsQ5S9/q4FIjm3OG9Sgny4OnpP09Q0zfV6XZalGCu+rYsfF/F+blwkF5S1J61frH1lXh+2lVJ13Qgh+r4fxzEb2gkRL3V//pIR2IXZhxpgINr2yQB7EiUGpb3SPqxwpFV8MTPRvoIQtDFv6/pZStU4TcMweO9TSnsD+hXyE+kPqlJTSrVtK6UstxDiWOY/4h8FSwu1d8EohwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/66b9f72bbac2f55cd8fac4539ba92dba/a0b58/5_2_4b.webp 230w","/static/66b9f72bbac2f55cd8fac4539ba92dba/bc10c/5_2_4b.webp 460w","/static/66b9f72bbac2f55cd8fac4539ba92dba/966d8/5_2_4b.webp 920w","/static/66b9f72bbac2f55cd8fac4539ba92dba/445df/5_2_4b.webp 1380w","/static/66b9f72bbac2f55cd8fac4539ba92dba/78de1/5_2_4b.webp 1840w","/static/66b9f72bbac2f55cd8fac4539ba92dba/609ff/5_2_4b.webp 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/66b9f72bbac2f55cd8fac4539ba92dba/81c8e/5_2_4b.png 230w","/static/66b9f72bbac2f55cd8fac4539ba92dba/08a84/5_2_4b.png 460w","/static/66b9f72bbac2f55cd8fac4539ba92dba/c0255/5_2_4b.png 920w","/static/66b9f72bbac2f55cd8fac4539ba92dba/b1001/5_2_4b.png 1380w","/static/66b9f72bbac2f55cd8fac4539ba92dba/161ec/5_2_4b.png 1840w","/static/66b9f72bbac2f55cd8fac4539ba92dba/e431d/5_2_4b.png 1882w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/66b9f72bbac2f55cd8fac4539ba92dba/c0255/5_2_4b.png","alt":"5 2 4b","title":"5 2 4b","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kopio"}]},{"type":"text","value":" siis viittaa nyt eri listaan kuin muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Helpompi tapa listan kopioimiseen on hyödyntää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[]"}]},{"type":"text","value":"-operaattoria, johon tutustuimme aiemmin kurssilla. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[:]"}]},{"type":"text","value":" tarkoittaa, että listalta valitaan kaikki alkiot, ja tämän sivuvaikutuksena syntyy kopio listasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nkopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[10, 2, 3, 4]\n[1, 20, 3, 4]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lista-funktion-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Lista funktion parametrina"},{"type":"element","tagName":"a","properties":{"href":"#lista-funktion-parametrina","ariaLabel":"lista funktion parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun lista välitetään parametrina funktiolle, välitetään viittaus listaan. Tämä tarkoittaa, että funktio voi muuttaa parametrinaan saamaansa listaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava funktio lisää uuden alkion parametrinaan saamaansa listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi_alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n[1, 2, 3]\n[1, 2, 3, 10]\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"text","value":" ei palauta mitään, vaan muuttaa parametrinaan saamaansa listaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori havainnollistaa tilanteen seuraavasti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/9be11dea0a28e2151e4f4f7101f82472/764d0/5_2_4c.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 35.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA+UlEQVQY01WO226DMBAF+f9/62P7UFVKq0BCMdgLOOs1e6sITdTO45FGZxp/oKZY6NwN5y6UUlXVzNzdzOZ5jjHmnG93aq1mJiLNYZrqVimm1Lbd5dqP47Qui6oespnpHXcXkWNh5ofMzERrXodhiDGWUojo+WxmtVZEVFUAEOFjbJ7ZiNh1bd9fc17dzf8AAG3bIqK7r+st54KIe7Y9ICKA+dJPMWVmOSKPZ2aBeaFaN1ZYPhDfVIu7NzhDShBjJCJ3Z/GNj95fzP3UTS+vX21YVK1QX8rJrO6ybBsziwgAjGOIcZqmMYSQUlJVkT3hOi7vn98hrf6fH4cdljeAKLvbAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9be11dea0a28e2151e4f4f7101f82472/a0b58/5_2_4c.webp 230w","/static/9be11dea0a28e2151e4f4f7101f82472/bc10c/5_2_4c.webp 460w","/static/9be11dea0a28e2151e4f4f7101f82472/966d8/5_2_4c.webp 920w","/static/9be11dea0a28e2151e4f4f7101f82472/445df/5_2_4c.webp 1380w","/static/9be11dea0a28e2151e4f4f7101f82472/78de1/5_2_4c.webp 1840w","/static/9be11dea0a28e2151e4f4f7101f82472/b4500/5_2_4c.webp 1898w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/9be11dea0a28e2151e4f4f7101f82472/81c8e/5_2_4c.png 230w","/static/9be11dea0a28e2151e4f4f7101f82472/08a84/5_2_4c.png 460w","/static/9be11dea0a28e2151e4f4f7101f82472/c0255/5_2_4c.png 920w","/static/9be11dea0a28e2151e4f4f7101f82472/b1001/5_2_4c.png 1380w","/static/9be11dea0a28e2151e4f4f7101f82472/161ec/5_2_4c.png 1840w","/static/9be11dea0a28e2151e4f4f7101f82472/764d0/5_2_4c.png 1898w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/9be11dea0a28e2151e4f4f7101f82472/c0255/5_2_4c.png","alt":"5 2 4c","title":"5 2 4c","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Global frame"}]},{"type":"text","value":" tarkoittaa pääohjelman muuttujia ja sinisellä oleva laatikko "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"text","value":" taas funktion parametreja ja muuttujia. Kuten visualisaatio havainnollistaa, funktio viittaa samaan listaan mihin pääohjelmakin viittaa, eli funktiossa listalle tehtävät muutokset näkyvät pääohjelmaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa olisi luoda uusi lista ja palauttaa se:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_alkio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi_alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n kopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kopio\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nluvut2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lisaa_alkio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Alkuperäinen lista:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Uusi lista:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Alkuperäinen lista: [1, 2, 3]\nUusi lista: [1, 2, 3, 10]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et ole 100% varma mitä koodissa tapahtuu, käy sen toiminta läpi visualisaattorilla!"}]},{"type":"element","tagName":"h2","properties":{"id":"parametrina-olevan-listan-muokkaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Parametrina olevan listan muokkaaminen"},{"type":"element","tagName":"a","properties":{"href":"#parametrina-olevan-listan-muokkaaminen","ariaLabel":"parametrina olevan listan muokkaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on yritys tehdä funktio, joka kasvattaa parametrina saamansa listan jokaista alkiota kymmenellä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusilista\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alussa \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkasvata_kaikkia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"funktion jälkeen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"alussa: [1, 2, 3]\nfunktion jälkeen: [1, 2, 3]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jostain syystä funktio ei kuitenkaan näytä toimivan. Mistä on kyse?"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolle on välitetty parametrina "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viite"}]},{"type":"text","value":" muutettavaan listaan. Sijoitus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lista = uusilista"}]},{"type":"text","value":" saa aikaan sen, että parametriin talletettu viite muuttaa arvoaan funktion sisällä eli se alkaa viitata funktion sisällä luotuun uuteen listaan. Sijoitus ei kuitenkaan vaikuta funktion ulkopuolelle, siellä viitataan edelleen alkuperäiseen listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava kuvasarja havainnollistaa, mihin eri muuttujat viittaavat ohjelman suorituksen aikana:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 442px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/e03bf/5_2_6.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 157.82608695652175%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAAsTAAALEwEAmpwYAAACUElEQVRIx5WWx47DMAxE/f9/ldxSEeQQpPfee0+4eAS40BqSkxVAWJat8ZBDUo4kNt7vt/d+NBpJOp2WwWDgfc9G5Nv8er3UuMeYb7dbWS6Xstls5Pl8BkG9gLPZTMbjsZzPZwWaTCYK1u12dX69Xn/fj4NGSS67c2ONhcITZOh++XQ6KeP1eq1scXmxWCh7H2j0SRQ2FwoFyeVyUi6XJZ/PSzablel06gf0sYLNfD5XdsfjUfb7vVwuF12DZaLLLpApizuAmcKAIRKAfOx+v/8SCLocyisGLAFKCo2X4XA4lE6no2xarZasVitlezgc/oTFDVMiIEzYTMyoDABZi4MlAUehnENFYvVpeFX2Ke2CU2qu2ZolubsvmNj2Mm6Th1gmk5FSqSTFYlFSqZTUarX/AbpG/SIQdrvdwi7HgRhs6Pf7KhD5SLXAlLjSIHa7XbBUo1BTsBZlg26D8QFjGGwOIVFsTqXQFOLPgmljC9RppVKRXq+nid1sNjUnzcWv0iakLiAYLtrAVe5NnI+J7TYJmFarVVUXEGqZvkh5Ihhni+8o8KoMICAmAGYdiBBglCSA8VL82GC/GV6XfWpTy3QexCEHOaCoDkTD9Uajoe67exIZ4hJA7XZbgQGp1+t6T4ITY9pdENDAACLvyL/H46HC2FGA8qwluhwXBVdRFEAEoQT5gKkMsFvvXoafxLByjIMkMsQVawSWd6Em+1XpsRmXUBMj8O5vx9el53uAqvaHQMzs/4Y1jlOucdeD3QYhyD3SA3UxADDSiAOMq6/0fgAgpcds34kgXgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/a0b58/5_2_6.webp 230w","/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/3fa5c/5_2_6.webp 442w"],"sizes":"(max-width: 442px) 100vw, 442px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/81c8e/5_2_6.png 230w","/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/e03bf/5_2_6.png 442w"],"sizes":"(max-width: 442px) 100vw, 442px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/1dd6dd7dab6b2cff3cdbe11741d2b26a/e03bf/5_2_6.png","alt":"5 2 6","title":"5 2 6","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion sisällä muutettu lista siis \"kadotetaan\" kun funktiosta palataan, ja muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut"}]},{"type":"text","value":" viittaa koko ajan alkuperäiseen listaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Visualisaattori on tässäkin tapauksessa ystävä: se näyttää selkeästi, miten funktio ei koske alkuperäiseen listaan ollenkaan vaan luo uuden listan, johon muutokset tehdään:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/19d3606e35d311c11edb9891cf40eeeb/75d3b/5_2_4d.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 41.30434782608695%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABLklEQVQY01WQ227bMBBE/f/fFgRFAhQwEECuK9GWaZCWRHGXe20UJW1znvblDGb24B+oKCKkPJ9+j+GaEFtrzczcHRFzzsuyAAARMbOZiYiZHT5l1VLK+Xy+Xq8xxnVdAUBE3H2PEBEiMrM9VFW/ZFNuqGYppRhjCGGeZyJqrbk7MwNirRURVTWlTMTywS4bE6Wcp2kqpQCA/wc2jLfbJYTW0Mzm+bGu8571WZuZh2Houm4YhtPptNfeCzfiqUBMU1m30FKOtb66q7sfmBoiAoCqNJJ7Xqfyb5W7L5V+HPvnn79CqhVpKT1iZ1Y2uU4bj8cDAJi3McxMRNshYqoF5diNzy9v4V5EdV7epumptcsm/92Wcx7Hse/7EEKMsdZqGwokOa+3yz0v337xLv8BaHfNshxTjQQAAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19d3606e35d311c11edb9891cf40eeeb/a0b58/5_2_4d.webp 230w","/static/19d3606e35d311c11edb9891cf40eeeb/bc10c/5_2_4d.webp 460w","/static/19d3606e35d311c11edb9891cf40eeeb/966d8/5_2_4d.webp 920w","/static/19d3606e35d311c11edb9891cf40eeeb/445df/5_2_4d.webp 1380w","/static/19d3606e35d311c11edb9891cf40eeeb/78de1/5_2_4d.webp 1840w","/static/19d3606e35d311c11edb9891cf40eeeb/ee81e/5_2_4d.webp 1966w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19d3606e35d311c11edb9891cf40eeeb/81c8e/5_2_4d.png 230w","/static/19d3606e35d311c11edb9891cf40eeeb/08a84/5_2_4d.png 460w","/static/19d3606e35d311c11edb9891cf40eeeb/c0255/5_2_4d.png 920w","/static/19d3606e35d311c11edb9891cf40eeeb/b1001/5_2_4d.png 1380w","/static/19d3606e35d311c11edb9891cf40eeeb/161ec/5_2_4d.png 1840w","/static/19d3606e35d311c11edb9891cf40eeeb/75d3b/5_2_4d.png 1966w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/19d3606e35d311c11edb9891cf40eeeb/c0255/5_2_4d.png","alt":"5 2 4d","title":"5 2 4d","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi tapa korjata ongelma on kopioida uuden listan kaikki alkiot takaisin vanhaan listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kopioidaan vanhaan listaan uuden listan arvot"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa on olemassa myös ovela tapa sijoittaa monta alkiota kerrallaan listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä siis sijoitetaan \"osalistaan\" eli listan kohtiin 1 ja 2 taulukollinen alkioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osalistaksi voidaan myös valita koko lista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"98"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"97"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" lista\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"98"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"97"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli näin tulee korvatuksi koko vanhan listan sisältö. Siispä eräs toimiva versio funktiosta näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" alkio "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusilista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"alkio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusilista"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"...tai ilman listan kopiontia yksinkertaisesti sijoittamalla uudet arvot heti vanhaan listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kasvata_kaikkia"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Alkiot tuplana","tmcname":"osa05-06a_alkiot_tuplana"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuplaa_alkiot(luvut: list)"}]},{"type":"text","value":", joka saa parametrikseen lukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa uuden listan, jossa alkuperäisen listan alkiot on kerrottu kahdella. Funkto "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" saa muuttaa alkuperäistä listaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tuplaluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tuplaa_alkiot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alkuperäinen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tuplattu:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tuplaluvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"alkuperäinen: [2, 4, 5, 3, 11, -4]\ntuplattu: [4, 8, 10, 6, 22, -8]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Poista pienin","tmcname":"osa05-06b_poista_pienin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_pienin(luvut: list)"}]},{"type":"text","value":", joka saa parametrikseen lukuja sisältävän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio etsii ja poistaa listasta pienimmän alkion. Voit olettaa, että pienin alkio esiintyy listassa vain kerran."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio ei siis palauta mitään, vaan muokkaa parametrinaan saamaansa listaa!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n poista_pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 4, 6, 3, 5]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: ruudukon tulostus ja luvun lisäys","tmcname":"osa05-07_sudoku_osa5"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan vielä kaksi funktiota sudokua varten: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisays"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan ja tulostaa sen alla olevan esimerkkitulostuksen mukaisessa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisays(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int)"}]},{"type":"text","value":" saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan, rivi- ja sarakenumerot sekä luvun väliltä 1–9. Funktio lisää luvun parametrien ilmoittamaan kohtaan sudokuruudukkoa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kolme numeroa lisätty:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\nKolme numeroa lisätty:\n\n2 _ _ _ _ _ _ _ _\n_ _ 7 _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ 3 _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saatat tässä tehtävässä hyötyä siitä, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komentoa on mahdollista käyttää myös siten, että se ei aiheuta rivinvaihtoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkkejä \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ilman välejä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"merkkejä ilman välejä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joskus taas tarvitaan pelkkää rivinvaihtoa, ja se onnistuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sudoku: luvun lisäys ruudukon kopioon","tmcname":"osa05-08_sudoku_osa6"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viimeisessä sudokua käsittelevässä tehtävässä toteutetaan hieman erilainen versio funktiosta, jonka avulla sudokuruudukkoon lisätään uusia lukuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kopioi_ja_lisaa(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int)"}]},{"type":"text","value":" saa parametreikseen sudokuruudukkoa esittävän kaksiulotteisen listan, rivinumeron, sarakenumeron sekä luvun väliltä 1–9. Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" parametrina saadusta sudokuruudukosta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kopion"}]},{"type":"text","value":", johon on lisätty parametrina saatu luku parametrina saatuun sijaintiin sijoitettuna. Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei saa muuttaa"}]},{"type":"text","value":" parametrina annettua sudokuruudukkoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on edellisen tehtävän funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" hyödyntävä käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sudoku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nkopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kopioi_ja_lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Alkuperäinen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sudoku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kopio:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Alkuperäinen:\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\nKopio:\n2 _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n_ _ _ _ _ _ _ _ _\n\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" tässä tehtävässä pitää olla tarkkana mitä kaikkea tulee kopioida, ja mihin lisäys lopulta kohdistuu. Kuten yleensäkin, "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattori"}]},{"type":"text","value":" auttaa myös nyt. Sudokuruudukon koon takia näkymä tosin on hieman normaalia sekavampi."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Ristinolla","tmcname":"osa05-09_ristinolla"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ristinollaa pelataan 3 x 3 -kokoisella ruudukolla, johon pelaajat merkitsevät vuorotellen ristin tai nollan. Pelin voittaa se pelaaja, joka saa ensimmäisenä kolme merkkiä pystyyn, vaakaan tai kulmittain. Peli päättyy tasapeliin, jos kumpikaan pelaaja ei saa kolmen sarjaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pelaa_siirto(lauta: list, x: int, y: int, nappula: str)"}]},{"type":"text","value":", jossa sijoitetaan annettu pelinappula annettuihin koordinaatteihin pelilaudalla. Koordinaattien arvot ovat väliltä 0..2."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":" että tässä tehtävässä parametrit ovat eri päin kuin sudokussa, ensin annetaan saraketta kuvaava "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" ja sen jälkeen riviä kuvaava "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelilauta koostuu merkkijonoista seuraavasti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":": tyhjä ruutu"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"X\""}]},{"type":"text","value":": pelaajan 1 merkki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"O\""}]},{"type":"text","value":": pelaajan 2 merkki"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos nappula saatiin sijoitettua laudalle (eli jos paikka oli tyhjä), ja arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":", jos paikka oli varattu TAI jos koordinaatin arvo oli liian pieni tai suuri (eli ei väliltä 0..2)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lauta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaa_siirto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lauta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"X\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lauta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\n[['', '', 'X'], ['', '', ''], ['', '', '']]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Matriisin kääntö","tmcname":"osa05-10_matriisin_kaanto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"transponoi(matriisi: list)"}]},{"type":"text","value":", joka saa parametrikseen kaksiulotteisen kokonaislukuja sisältävän taulukon eli matriisin. Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"transponoi"}]},{"type":"text","value":" matriisin eli muuntaa rivit sarakkeiksi ja päinvastoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että matriisissa on yhtä monta riviä kuin sarakettakin (eli matriisi on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"neliömatriisi"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi matriisista"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulisi transponoinnin jälkeen tällainen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia."}]}]},{"type":"element","tagName":"h2","properties":{"id":"funktioiden-sivuvaikutukset","style":"position:relative;"},"children":[{"type":"text","value":"Funktioiden sivuvaikutukset"},{"type":"element","tagName":"a","properties":{"href":"#funktioiden-sivuvaikutukset","ariaLabel":"funktioiden sivuvaikutukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktio saa parametrinaan viittauksen listaan, se voi muuttaa tätä listaa. Jos funktion varsinaisena tarkoituksena ei ole muuttaa listaa, muutokset voivat aiheuttaa ongelmia toisaalla ohjelmassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä funktiota, jonka tarkoituksena on etsiä listan toiseksi pienin alkio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"toiseksi_pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# järjestetyn listan toiseksi pienin alkio on kohdassa 1"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toiseksi_pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n2\n[1, 2, 3, 4, 4, 5, 6, 7]\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio kyllä etsii ja löytää toiseksi pienimmän alkion, mutta sen lisäksi se muuttaa listan alkioiden järjestyksen. Jos järjestyksellä on merkitystä muualla ohjelmassa, funktion kutsuminen voi aiheuttaa virheitä. Esimerkin kaltaista muutosta viittauksena saatuun olioon kutsutaan funktion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sivuvaikutukseksi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme toteuttaa funktion ilman sivuvaikutuksia näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"toiseksi_pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kopio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kopio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nluvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"toiseksi_pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n[1, 4, 2, 5, 3, 6, 4, 7]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sorted"}]},{"type":"text","value":" palauttaa uuden järjestetyn listan, toiseksi pienimmän alkion etsiminen ei enää sotke listan alkuperäistä järjestystä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein pidetään hyvänä asiana, että funktiot eivät aiheuta sivuvaikutuksia, sillä sivuvaikutukset voivat hankaloittaa ohjelmien toimivuuden varmistamista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sivuvaikutuksettomia funktioita kutsutaan myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"puhtaiksi funktioiksi"}]},{"type":"text","value":" ja erityisesti funktionaalista ohjelmointityyliä käytettäessä funktiot pyritään rakentamaan näin. Palaamme aiheeseen tarkemmin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin jatkokurssilla"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"7384687a-fe87-53d4-be99-05a98f5e467e"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan viittaustyyppisellä muuttujalla
    • \n
    • Tiedät, että samaan olioon voi olla useampia viittauksia
    • \n
    • Osaat käyttää listoja funktioiden parametreina
    • \n
    • Tiedät, mitä tarkoitetaan funktion sivuvaikutuksella
    • \n

    Olemme tähän asti ajatelleet, että muuttuja on eräänlainen \"laatikko\", joka sisältää muuttujan arvon. Teknisesti ottaen tämä ei pidä paikkaansa Pythonissa: muuttujat eivät sisällä arvoa vaan ne viittaavat arvona olevaan olioon, kuten lukuun, merkkijonoon tai listaan.

    Käytännössä tämä tarkoittaa, että muuttujaan ei tallenneta arvoa, vaan tieto siitä paikasta, mistä muuttujan arvo löytyy.

    Viittausta voidaan kuvata nuolena muuttujasta sen varsinaiseen arvoon:

    \n \n \n \n \n \n \"5\n \n \n

    Listaa voidaan käsitellä kumman tahansa viittauksen avulla:

    lista = [1, 2, 3, 4]\nlista2 = lista\n\nlista[0] = 10\nlista2[1] = 20\n\nprint(lista)\nprint(lista2)

    [10, 20, 3, 4]\n[10, 20, 3, 4]

    Mikäli samaan listaan on useampia viittauksia, sitä voidaan käsitellä minkä tahansa viittauksen kautta samalla tavalla. Toisaalta yhden viittauksen kautta tehtävä muutos heijastuu myös muihin viittauksiin.

    Visualisaattori näyttää jälleen selkeästi mitä ohjelmassa tapahtuu:

    \n \n \n \n \n \n \"5\n \n \n

    Listan kopiointi

    Jos haluamme tehdä listasta erillisen kopion, voimme luoda uuden listan ja lisätä siihen jokaisen aluperäisen listan alkion:

    lista = [1, 2, 3, 3, 5]\n\nkopio = []\nfor alkio in lista:\n    kopio.append(alkio)\n\nkopio[0] = 10\nkopio.append(6)\nprint(\"lista\", lista)\nprint(\"kopio\", kopio)

    lista [1, 2, 3, 3, 5]\nkopio [10, 2, 3, 3, 5, 6]

    Visualisaattorilla tarkastellen kopiointi näyttää seuraavalta:

    \n \n \n \n \n \n \"5\n \n \n

    Muuttuja kopio siis viittaa nyt eri listaan kuin muuttuja lista.

    Helpompi tapa listan kopioimiseen on hyödyntää []-operaattoria, johon tutustuimme aiemmin kurssilla. Merkintä [:] tarkoittaa, että listalta valitaan kaikki alkiot, ja tämän sivuvaikutuksena syntyy kopio listasta:

    lista = [1,2,3,4]\nkopio = lista[:]\n\nlista[0] = 10\nkopio[1] = 20\n\nprint(lista)\nprint(kopio)

    [10, 2, 3, 4]\n[1, 20, 3, 4]

    Lista funktion parametrina

    Kun lista välitetään parametrina funktiolle, välitetään viittaus listaan. Tämä tarkoittaa, että funktio voi muuttaa parametrinaan saamaansa listaa.

    Esimerkiksi seuraava funktio lisää uuden alkion parametrinaan saamaansa listaan:

    def lisaa_alkio(lista: list):\n    uusi_alkio = 10\n    lista.append(uusi_alkio)\n\nlista = [1,2,3]\nprint(lista)\nlisaa_alkio(lista)\nprint(lista)
    \n[1, 2, 3]\n[1, 2, 3, 10]\n

    Huomaa, että funktio lisaa_alkio ei palauta mitään, vaan muuttaa parametrinaan saamaansa listaa.

    Visualisaattori havainnollistaa tilanteen seuraavasti:

    \n \n \n \n \n \n \"5\n \n \n

    Global frame tarkoittaa pääohjelman muuttujia ja sinisellä oleva laatikko lisaa_alkio taas funktion parametreja ja muuttujia. Kuten visualisaatio havainnollistaa, funktio viittaa samaan listaan mihin pääohjelmakin viittaa, eli funktiossa listalle tehtävät muutokset näkyvät pääohjelmaan.

    Toinen tapa olisi luoda uusi lista ja palauttaa se:

    def lisaa_alkio(lista: list) -> list:\n    uusi_alkio = 10\n    kopio = lista[:]\n    kopio.append(uusi_alkio)\n    return kopio\n\nluvut = [1, 2, 3]\nluvut2 = lisaa_alkio(luvut)\n\nprint(\"Alkuperäinen lista:\", luvut)\nprint(\"Uusi lista:\", luvut2)

    Alkuperäinen lista: [1, 2, 3]\nUusi lista: [1, 2, 3, 10]

    Jos et ole 100% varma mitä koodissa tapahtuu, käy sen toiminta läpi visualisaattorilla!

    Parametrina olevan listan muokkaaminen

    Seuraavassa on yritys tehdä funktio, joka kasvattaa parametrina saamansa listan jokaista alkiota kymmenellä:

    def kasvata_kaikkia(lista: list):\n    uusilista = []\n    for alkio in lista:\n        uusilista.append(alkio + 10)\n    lista = uusilista\n\nluvut = [1, 2, 3]\nprint(\"alussa \",luvut)\nkasvata_kaikkia(luvut)\nprint(\"funktion jälkeen\", luvut)

    alussa: [1, 2, 3]\nfunktion jälkeen: [1, 2, 3]

    Jostain syystä funktio ei kuitenkaan näytä toimivan. Mistä on kyse?

    Funktiolle on välitetty parametrina viite muutettavaan listaan. Sijoitus lista = uusilista saa aikaan sen, että parametriin talletettu viite muuttaa arvoaan funktion sisällä eli se alkaa viitata funktion sisällä luotuun uuteen listaan. Sijoitus ei kuitenkaan vaikuta funktion ulkopuolelle, siellä viitataan edelleen alkuperäiseen listaan.

    Seuraava kuvasarja havainnollistaa, mihin eri muuttujat viittaavat ohjelman suorituksen aikana:

    \n \n \n \n \n \n \"5\n \n \n

    Funktion sisällä muutettu lista siis \"kadotetaan\" kun funktiosta palataan, ja muuttuja luvut viittaa koko ajan alkuperäiseen listaan.

    Visualisaattori on tässäkin tapauksessa ystävä: se näyttää selkeästi, miten funktio ei koske alkuperäiseen listaan ollenkaan vaan luo uuden listan, johon muutokset tehdään:

    \n \n

    Tee funktio tuplaa_alkiot(luvut: list), joka saa parametrikseen lukuja sisältävän listan.

    Funktio palauttaa uuden listan, jossa alkuperäisen listan alkiot on kerrottu kahdella. Funkto ei saa muuttaa alkuperäistä listaa.

    Esimerkki funktion kutsumisesta:

    if __name__ == \"__main__\":\n    luvut = [2, 4, 5, 3, 11, -4]\n    tuplaluvut = tuplaa_alkiot(luvut)\n    print(\"alkuperäinen:\", luvut)\n    print(\"tuplattu:\", tuplaluvut)

    alkuperäinen: [2, 4, 5, 3, 11, -4]\ntuplattu: [4, 8, 10, 6, 22, -8]

    Tee funktio poista_pienin(luvut: list), joka saa parametrikseen lukuja sisältävän listan.

    Funktio etsii ja poistaa listasta pienimmän alkion. Voit olettaa, että pienin alkio esiintyy listassa vain kerran.

    Funktio ei siis palauta mitään, vaan muokkaa parametrinaan saamaansa listaa!

    Esimerkki funktion kutsumisesta:

    if __name__ == \"__main__\":\n    luvut = [2, 4, 6, 1, 3, 5]\n    poista_pienin(luvut)\n    print(luvut)

    [2, 4, 6, 3, 5]

    Tässä tehtävässä toteutetaan vielä kaksi funktiota sudokua varten: tulosta ja lisays.

    Funktio tulosta saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan ja tulostaa sen alla olevan esimerkkitulostuksen mukaisessa muodossa.

    Funktio lisays(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int) saa parametriksi sudokuruudukkoa esittävän kaksiulotteisen listan, rivi- ja sarakenumerot sekä luvun väliltä 1–9. Funktio lisää luvun parametrien ilmoittamaan kohtaan sudokuruudukkoa.

    sudoku  = [\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0]\n]\n\ntulosta(sudoku)\nlisays(sudoku, 0, 0, 2)\nlisays(sudoku, 1, 2, 7)\nlisays(sudoku, 5, 7, 3)\nprint()\nprint(\"Kolme numeroa lisätty:\")\nprint()\ntulosta(sudoku)
    \n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\nKolme numeroa lisätty:\n\n2 _ _  _ _ _  _ _ _\n_ _ 7  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ 3 _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n

    Vihje

    Saatat tässä tehtävässä hyötyä siitä, että print-komentoa on mahdollista käyttää myös siten, että se ei aiheuta rivinvaihtoa:

    print(\"merkkejä \", end=\"\")\nprint(\"ilman välejä\", end=\"\")

    merkkejä ilman välejä

    Joskus taas tarvitaan pelkkää rivinvaihtoa, ja se onnistuu seuraavasti:

    print()

    Viimeisessä sudokua käsittelevässä tehtävässä toteutetaan hieman erilainen versio funktiosta, jonka avulla sudokuruudukkoon lisätään uusia lukuja.

    Funktio kopioi_ja_lisaa(sudoku: list, rivi_nro: int, sarake_nro: int, luku:int) saa parametreikseen sudokuruudukkoa esittävän kaksiulotteisen listan, rivinumeron, sarakenumeron sekä luvun väliltä 1–9. Funktio palauttaa parametrina saadusta sudokuruudukosta kopion, johon on lisätty parametrina saatu luku parametrina saatuun sijaintiin sijoitettuna. Funktio ei saa muuttaa parametrina annettua sudokuruudukkoa.

    Seuraavassa on edellisen tehtävän funktiota tulosta hyödyntävä käyttöesimerkki:

    sudoku  = [\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0],\n    [0, 0, 0, 0, 0, 0, 0, 0, 0]\n]\n\nkopio = kopioi_ja_lisaa(sudoku, 0, 0, 2)\nprint(\"Alkuperäinen:\")\ntulosta(sudoku)\nprint()\nprint(\"Kopio:\")\ntulosta(kopio)
    \nAlkuperäinen:\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\nKopio:\n2 _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n_ _ _  _ _ _  _ _ _\n\n

    Vihje tässä tehtävässä pitää olla tarkkana mitä kaikkea tulee kopioida, ja mihin lisäys lopulta kohdistuu. Kuten yleensäkin, visualisaattori auttaa myös nyt. Sudokuruudukon koon takia näkymä tosin on hieman normaalia sekavampi.

    Ristinollaa pelataan 3 x 3 -kokoisella ruudukolla, johon pelaajat merkitsevät vuorotellen ristin tai nollan. Pelin voittaa se pelaaja, joka saa ensimmäisenä kolme merkkiä pystyyn, vaakaan tai kulmittain. Peli päättyy tasapeliin, jos kumpikaan pelaaja ei saa kolmen sarjaa.

    Kirjoita funktio pelaa_siirto(lauta: list, x: int, y: int, nappula: str), jossa sijoitetaan annettu pelinappula annettuihin koordinaatteihin pelilaudalla. Koordinaattien arvot ovat väliltä 0..2.

    Huomaa että tässä tehtävässä parametrit ovat eri päin kuin sudokussa, ensin annetaan saraketta kuvaava x ja sen jälkeen riviä kuvaava y.

    Pelilauta koostuu merkkijonoista seuraavasti:

      \n
    • \"\": tyhjä ruutu
    • \n
    • \"X\": pelaajan 1 merkki
    • \n
    • \"O\": pelaajan 2 merkki
    • \n

    Funktio palauttaa arvon True, jos nappula saatiin sijoitettua laudalle (eli jos paikka oli tyhjä), ja arvon False, jos paikka oli varattu TAI jos koordinaatin arvo oli liian pieni tai suuri (eli ei väliltä 0..2).

    Esimerkiksi:

    lauta = [[\"\", \"\", \"\"], [\"\", \"\", \"\"], [\"\", \"\", \"\"]]\nprint(pelaa_siirto(lauta, 2, 0, \"X\"))\nprint(lauta)

    True\n[['', '', 'X'], ['', '', ''], ['', '', '']]

    Kirjoita funktio transponoi(matriisi: list), joka saa parametrikseen kaksiulotteisen kokonaislukuja sisältävän taulukon eli matriisin. Funktio transponoi matriisin eli muuntaa rivit sarakkeiksi ja päinvastoin.

    Voit olettaa, että matriisissa on yhtä monta riviä kuin sarakettakin (eli matriisi on neliömatriisi).

    Esimerkiksi matriisista

    1 2 3\n4 5 6\n7 8 9

    tulisi transponoinnin jälkeen tällainen:

    1 4 7\n2 5 8\n3 6 9

    Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia.

    Funktioiden sivuvaikutukset

    Koska funktio saa parametrinaan viittauksen listaan, se voi muuttaa tätä listaa. Jos funktion varsinaisena tarkoituksena ei ole muuttaa listaa, muutokset voivat aiheuttaa ongelmia toisaalla ohjelmassa.

    Tarkastellaan esimerkkinä funktiota, jonka tarkoituksena on etsiä listan toiseksi pienin alkio:

    def toiseksi_pienin(lista: list) -> int:\n    # järjestetyn listan toiseksi pienin alkio on kohdassa 1\n    lista.sort()\n    return lista[1]\n\nluvut = [1, 4, 2, 5, 3, 6, 4, 7]\nprint(toiseksi_pienin(luvut))\nprint(luvut)
    \n2\n[1, 2, 3, 4, 4, 5, 6, 7]\n

    Funktio kyllä etsii ja löytää toiseksi pienimmän alkion, mutta sen lisäksi se muuttaa listan alkioiden järjestyksen. Jos järjestyksellä on merkitystä muualla ohjelmassa, funktion kutsuminen voi aiheuttaa virheitä. Esimerkin kaltaista muutosta viittauksena saatuun olioon kutsutaan funktion sivuvaikutukseksi.

    Voimme toteuttaa funktion ilman sivuvaikutuksia näin:

    def toiseksi_pienin(lista: list) -> int:\n    kopio = sorted(lista)\n    return kopio[1]\n\nluvut = [1, 4, 2, 5, 3, 6, 4, 7]\nprint(toiseksi_pienin(luvut))\nprint(luvut)

    2\n[1, 4, 2, 5, 3, 6, 4, 7]

    Koska funktio sorted palauttaa uuden järjestetyn listan, toiseksi pienimmän alkion etsiminen ei enää sotke listan alkuperäistä järjestystä.

    Usein pidetään hyvänä asiana, että funktiot eivät aiheuta sivuvaikutuksia, sillä sivuvaikutukset voivat hankaloittaa ohjelmien toimivuuden varmistamista.

    Sivuvaikutuksettomia funktioita kutsutaan myös puhtaiksi funktioiksi ja erityisesti funktionaalista ohjelmointityyliä käytettäessä funktiot pyritään rakentamaan näin. Palaamme aiheeseen tarkemmin Ohjelmoinnin jatkokurssilla.

    ","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/2-viittaukset.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-5/3-dictionary/page-data.json b/page-data/osa-5/3-dictionary/page-data.json index 5197decad..8a45112e4 100644 --- a/page-data/osa-5/3-dictionary/page-data.json +++ b/page-data/osa-5/3-dictionary/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-5/3-dictionary", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, millainen tietorakenne on sanakirja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää sanakirjaa erityyppisten avainten ja arvojen kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käydä läpi sanakirjan sisällön"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet joitakin sanakirjan käyttötarkoituksia ohjelmoinnissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lista on kätevä tietorakenne, mutta sen rajoituksena on, että alkiot ovat indekseissä 0, 1, 2, jne. Tämä hankaloittaa alkioiden etsimistä listalta: jotta löydämme tietyn alkion, on pahimmassa tapauksessa käytävä läpi koko lista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustumme seuraavaksi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sanakirjaan"}]},{"type":"text","value":", (englanniksi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"dictionary"}]},{"type":"text","value":") joka on listan lisäksi toinen Pythonin perustietorakenne. Sanakirjassa jokainen alkio koostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"avaimesta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"arvosta"}]},{"type":"text","value":", ja voimme etsiä ja muuttaa tietoa avaimen perusteella."}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirjan-kayttaminen","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirjan käyttäminen"},{"type":"element","tagName":"a","properties":{"href":"#sanakirjan-kayttaminen","ariaLabel":"sanakirjan kayttaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma näyttää esimerkin sanakirjan käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n{'apina': 'monkey', 'banaani': 'banana', 'cembalo': 'harpsichord'}\nmonkey"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"{}"}]},{"type":"text","value":" luo tyhjän sanakirjan, minkä jälkeen voimme lisätä sanakirjaan sisältöä. Tässä tapauksessa lisäämme kolme avainta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"text","value":", joita vastaavat arvot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":". Lopuksi tulostamme koko sanakirjan sisällön ja sitten avaimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":" arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voisimme käyttää tätä sanakirjaa vaikka seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Käännös:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sanaa ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä käytössä on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":"-operaattori, joka sanakirjan tapauksessa tarkastaa, onko siinä tiettyä avainta. Mahdollisia ohjelman tulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apina"}]},{"type":"text","value":"\nKäännös: monkey"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pöllö"}]},{"type":"text","value":"\nSanaa ei löytynyt"}]}]},{"type":"element","tagName":"h2","properties":{"id":"mita-sanakirjassa-voi-olla","style":"position:relative;"},"children":[{"type":"text","value":"Mitä sanakirjassa voi olla?"},{"type":"element","tagName":"a","properties":{"href":"#mita-sanakirjassa-voi-olla","ariaLabel":"mita sanakirjassa voi olla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka tietorakenteen nimi on sanakirja, siinä ei ole usein sanakirjaa vaan jotain muuta tietoa. Esimerkiksi seuraavassa sanakirjassa avaimet ovat merkkijonoja ja arvot ovat kokonaislukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulokset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\ntulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\ntulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kalle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa sanakirjassa puolestaan avaimet ovat kokonaislukuja ja arvot ovat listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"listat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlistat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlistat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlistat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"avaimista-ja-arvoista","style":"position:relative;"},"children":[{"type":"text","value":"Avaimista ja arvoista"},{"type":"element","tagName":"a","properties":{"href":"#avaimista-ja-arvoista","ariaLabel":"avaimista ja arvoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietty avain voi esiintyä sanakirjassa enintään kerran. Jos asetamme samalle avaimelle uuden arvon, korvaa uusi arvo vanhan arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suuri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"big\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suuri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"large\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suuri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"large"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjan avaimen vaatimuksena on, että sen tulee olla muuttumaton. Tämän vuoksi emme voi käyttää listaa avaimena, koska lista voi muuttua. Esimerkiksi seuraava koodi ei toimi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: unhashable type: 'list'"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Hajautustaulu"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tallentaa sanakirjan sisällön sisäisesti tietorakenteena nimeltä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hajautustaulu"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hash table"}]},{"type":"text","value":"). Ideana on laskea avaimelle "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hajautusarvo"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hash value"}]},{"type":"text","value":"), jonka avulla määräytyy avaimen paikka muistissa. Yllä oleva virheilmoitus ilmaisee, että listalle ei voida laskea hajautusarvoa, joten se ei kelpaa sanakirjan avaimeksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssilla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tietorakenteet ja algoritmit"}]},{"type":"text","value":" tutustutaan tarkemmin hajautustauluihin, eli sanakirjojen pellin alla olevaan mekanismiin."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että sanakirjassa olevaa avainta vastaavan arvon ei tarvitse olla muuttumaton, vaan voimme tallentaa mitä tahansa tietoa arvoiksi. Sama arvo voi myös esiintyä samassa hakemistossa enemmän kuin yhden kerran."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kertaa kymmenen","tmcname":"osa05-10b_kertaa_kymmenen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kertaa_kymmenen(alku: int, loppu: int)"}]},{"type":"text","value":", joka muodostaa ja palauttaa uuden sanakirjan. Sanakirjassa on avaimina luvut väliltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alku"}]},{"type":"text","value":".."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisen avaimen arvona on avain kerrottuna kymmenellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"d "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kertaa_kymmenen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"d"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{3: 30, 4: 40, 5: 50, 6: 60}"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kertomat","tmcname":"osa05-11_kertomat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kertomat(n: int)"}]},{"type":"text","value":", joka palauttaa lukujen 1.."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kertomat sanakirjassa siten, että luku on avain ja luvun kertoma arvo, johon avain viittaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muistutuksena: luvun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kertoma "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"! lasketaan kertomalla luku kaikilla itseään pienemmillä positiivisilla kokonaisluvuilla. Luvun 4 kertoma on siis 4 * 3 * 2 * 1 = 24."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n6\n120"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirjan-lapikaynti","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirjan läpikäynti"},{"type":"element","tagName":"a","properties":{"href":"#sanakirjan-lapikaynti","ariaLabel":"sanakirjan lapikaynti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjan läpikäyntiin voidaan käyttää tuttuun tapaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa. Rakenne "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for avain in sanakirja"}]},{"type":"text","value":" käy läpi kaikki sanakirjan avaimet yksi kerrallaan. Esimerkiksi seuraava koodi tulostaa kaikki sanakirjan avaimet ja niiden arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"avain:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"avain: apina\narvo: monkey\navain: banaani\narvo: banana\navain: cembalo\narvo: harpsichord"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tarjoaa myös mahdollisuuden käydä läpi samaan aikaan sekä avaimet että vastaavat arvot. Tämä onnistuu käyttämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"items"}]},{"type":"text","value":"-metodia, joka palauttaa kaikki avaimet ja arvot yksi kerrallaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"avain:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että läpikäynnissä avaimet tulevat samassa järjestyksessä kuin ne on lisätty sanakirjaan. Sanakirjan avainten järjestyksellä ei kuitenkaan yleensä ole merkitystä sovelluksissa."}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirjan-edistyneempi-kaytto","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirjan edistyneempi käyttö"},{"type":"element","tagName":"a","properties":{"href":"#sanakirjan-edistyneempi-kaytto","ariaLabel":"sanakirjan edistyneempi kaytto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan tilannetta, jossa listassa on joukko sanoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"maito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juusto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"piimä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mehu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"makkara\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tomaatti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kurkku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"voi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"margariini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juusto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"makkara\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"piimä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"piimä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"voi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suklaa\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Haluamme analysoida sanalistaa eri tavoin, kuten selvittää, montako kertaa kukin sana listalla esiintyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirja sopii tähän tilanteeseen hyvin. Ideana on käydä listan sanat läpi yksi kerrallaan ja ylläpitää sanakirjassa tietoa sanojen esiintymiskerroista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lukumaarat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# jos sana ei ole vielä tullut vastaan, alusta avaimen arvo"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kasvata sanan esiintymislukumäärää"}]},{"type":"text","value":"\n sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" sanat\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kutsutaan funktiota"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukumaarat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraavassa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'banaani': 1, 'maito': 1, 'olut': 3, 'juusto': 2, 'piimä': 3, 'mehu': 1, 'makkara': 2, 'tomaatti': 1, 'kurkku': 1, 'voi': 2, 'margariini': 1, 'suklaa': 1}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä toinen sanalistaa käsittelevä metodi, joka jaottelee listalla olevat sanat niiden alkukirjaimen mukaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjaimen_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ryhmat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alkukirjain "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# alusta alkukirjaimeen liittyvä lista kun kirjain tulee vastaan 1. kerran"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkukirjain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkukirjain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisää sana alkukirjainta vastaavalle listalle"}]},{"type":"text","value":"\n ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkukirjain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" ryhmat\n\nryhmat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkukirjaimen_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"kirjaimella "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" alkavat sanat: \""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii pitkälti saman periaatteen mukaan kuin edellisen esimerkin funktio. Tällä kertaa kuitenkin sanakirjassa avaimiin (eli alkukirjaimiin) liittyvät arvot ovat listoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraavassa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"kirjaimella b alkavat sanat:\nbanaani\nkirjaimella m alkavat sanat:\nmaito\nmehu\nmakkara\nmargariini\nmakkara\nkirjaimella o alkavat sanat:\nolut\nolut\nolut\nkirjaimella j alkavat sanat:\njuusto\njuusto\nkirjaimella p alkavat sanat:\npiimä\npiimä\npiimä\nkirjaimella t alkavat sanat:\ntomaatti\nkirjaimella k alkavat sanat:\nkurkku\nkirjaimella v alkavat sanat:\nvoi\nvoi\nkirjaimella s alkavat sanat:\nsuklaa"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Histogrammi","tmcname":"osa05-12_histogrammi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"histogrammi"}]},{"type":"text","value":", joka saa parametrina merkkijonon ja tulostaa merkkijonon eri kirjainten lukumäärää kuvaavan histogrammin, jossa kirjaimen jokaista esiintymää kohti tulostuu yksi tähti kirjaimen riville."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"histogrammi(\"abba\")"}]},{"type":"text","value":" tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"a **\nb **\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"histogrammi(\"saippuakauppias\")"}]},{"type":"text","value":" tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"s **\na ****\ni **\np ****\nu **\nk *\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelo, versio 1","tmcname":"osa05-13_puhelinluettelo_versio1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee puhelinluettelo, joka toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"040-5466745"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"emilia"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-1212344"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"maija"}]},{"type":"text","value":"\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"09-22223333"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nlopetetaan..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jokaiseen nimeen voi liittyä vain yksi puhelinnumero. Jos samalle henkilölle lisätään uusi numero, se korvaa aiemmin lisätyn numeron."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelo, versio 2","tmcname":"osa05-14_puhelinluettelo_versio2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee puhelinluettelosta paranneltu versio, missä jokaisella henkilöllä voi olla useampia puhelinnumeroita. Ohjelma toimii kuten edellisessä tehtävässä, mutta nyt se listaa jokaisen numeron:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"040-5466745"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"emilia"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-1212344"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"maija"}]},{"type":"text","value":"\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"09-22223333"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n040-5466745\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nlopetetaan..."}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"avaimien-poistaminen-sanakirjasta","style":"position:relative;"},"children":[{"type":"text","value":"Avaimien poistaminen sanakirjasta"},{"type":"element","tagName":"a","properties":{"href":"#avaimien-poistaminen-sanakirjasta","ariaLabel":"avaimien poistaminen sanakirjasta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjasta on mahdollista myös poistaa avain-arvo-pareja. Menetelmiä tähän on kaksi. Ensimmäinen näistä on komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Antti': 'lehtori', 'Emilia': 'professori'}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" kutsutaan avaimille, joita sanakirjassa ei ole, seurauksena on virhe:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":">>> del henkilokunta[\"Jukka\"]\nTraceback (most recent call last):\n File \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nKeyError: 'Jukka'\n"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ennen poistoa on siis syytä tarkistaa, että poistettava avain löytyy sanakirjasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen vaihtoehto alkion poistamiseen on metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npoistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" poistettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Antti': 'lehtori', 'Emilia': 'professori'}\nPoistettiin lehtori"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" siis myös palauttaa poistettua avainta vastaavan arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvoisesti myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" aiheuttaa virheen, jos sanakirjasta yritetään poistaa avain, jota siellä ei ole. Metodille on kuitenkin mahdollista antaa toisena parametrina "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"oletusarvoinen paluuarvo"}]},{"type":"text","value":", joka palautetaan siinä tilanteessa, kun poistettavaa ei löydy. Esimerkiksi arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":", joka tarkoittaa \"ei mitään\", sopii hyvin tälläisiin tilanteisiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npoistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" poistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" poistettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Poistettavaa henkilöä ei löytynyt henkilökunnasta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että jos on tarvetta poistaa koko sanakirjan sisältö:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"seurauksena on virheilmoitus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"RuntimeError: dictionary changed size during iteration"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syynä on se, että käytäessä läpi rakennetta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lauseella, ei sen sisältöä saa muuttaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koko sanakirjan tyhjennys onnistuu komennolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"clear"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sanakirjan kääntö","tmcname":"osa05-15_sanakirjan_kaanto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaanna(sanakirja: dict)"}]},{"type":"text","value":", joka saa parametrikseen sanakirjan ja kääntää sen niin, että arvoista tulee avaimia ja päinvastoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nkaanna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"s"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"s"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{\"eka\": 1, \"toka\": 2, \"kolmas\": 3, \"neljas\": 4}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":", että "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/2-viittaukset#parametrina-olevan-listan-muokkaaminen"},"children":[{"type":"text","value":"tämä"}]},{"type":"text","value":" pitää paikkansa myös parametrina oleville sanakirjoille!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kohtaat tehtävässä ongelmia, katso "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":" mitä koodisi tekee."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Luvut sanoina","tmcname":"osa05-16_luvut_sanoina"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lukukirja()"}]},{"type":"text","value":", joka palauttaa uuden sanakirjan. Palautettu rakenne sisältää avaimina luvut nollasta 99:ään. Sanakirjan arvoina ovat luvut kirjaimin kirjoitettuna. Katso esimerkkiä alla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lukukirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"kaksi\nyksitoista\nneljäkymmentäviisi\nyhdensänkymmentäyhdeksän\nnolla"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM! Älä muodosta jokaista lukusanaa yksitellen, vaan mieti, miten voisit hyödyntää silmukoita ja sanakirjaa jotenkin ratkaisussasi!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirja-tiedon-ryhmittelyssa","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirja tiedon ryhmittelyssä"},{"type":"element","tagName":"a","properties":{"href":"#sanakirja-tiedon-ryhmittelyssa","ariaLabel":"sanakirja tiedon ryhmittelyssa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää sanakirjaa myös tiedon ryhmittelyssä. Esimerkiksi seuraava koodi luo sanakirjan, jossa on tietoa henkilöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"154"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä:\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tarkoittaa, että henkilön nimi on Pirjo Python, pituus on 154, paino on 61 ja ikä on 44.\nHuomaa, että olisimme voineet tallentaa tiedot myös näin muuttujiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"154"}]},{"type":"text","value":"\npaino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjan etuna on kuitenkin, että se kokoaa kaikki samaan asiaan liittyvät tiedot yhteisen nimen alle, jonka kautta voimme viitata tietoihin. Periaatteessa lista tarjoaa saman edun:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"153"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan huono puoli on kuitenkin, että ohjelmoijan on muistettava, mihin kohtaan listaa mikäkin arvo tallennetaan. Pitää siis muistaa esimerkiksi, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo[2]"}]},{"type":"text","value":" tarkoittaa painoa ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo[3]"}]},{"type":"text","value":" ikää. Sanakirjassa tätä ongelmaa ei ole, sillä kaikki sanakirjassa olevat erilliset tiedot on tallennettu selkeästi nimetyn avaimen taakse."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi voimme käsitellä henkilöitä näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"154"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"174"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"103"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"31"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pedro Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"191"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"71"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nhenkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nyhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keskipituus on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pirjo Python\nPekka Pythonen\nPedro Python\nKeskipituus on 173.0"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Elokuvarekisteri","tmcname":"osa05-17_elokuvarekisteri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_elokuva(rekisteri: list, nimi: str, ohjaaja: str, vuosi: int, pituus: int)"}]},{"type":"text","value":", joka lisää yhden elokuvaolion elokuvarekisteriin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekisteri on toteutettu listana, ja jokainen listan alkio on yksi sanakirja. Sanakirjassa on seuraavat avaimet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ohjaaja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vuosi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvot tulevat metodin parametreina."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rekisteri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlisaa_elokuva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonin viemää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2017"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"116"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_elokuva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python lentokoneessa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Renny Pytholin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2001"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"94"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pytholin\", \"vuosi\": 2001, \"pituus\": 94}]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Etsi elokuvat","tmcname":"osa05-17b_etsi_elokuvat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_elokuvat(rekisteri: list, hakusana: str)"}]},{"type":"text","value":", joka käsittelee edellisessä tehtävässä luotua elokuvarekisteriä. Funktio muodostaa uuden listan, jolle kopioidaan rekisteristä ne elokuvat, joiden nimestä löytyy hakusana. Pienet ja isot kirjaimet eivät merkitse haussa, joten hakusanalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paj"}]},{"type":"text","value":" pitää löytyä sekä elokuva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tappajahai"}]},{"type":"text","value":" että elokuva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pajatoiminnan historia"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rekisteri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonin viemää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjaaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2017"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"116"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python lentokoneessa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjaaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Renny Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2001"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"94"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Koodaajien yö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjaaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"M. Night Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2011"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"101"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etsi_elokuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pythonen\", \"vuosi\": 2001, \"pituus\": 94}]"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, millainen tietorakenne on sanakirja
    • \n
    • Osaat käyttää sanakirjaa erityyppisten avainten ja arvojen kanssa
    • \n
    • Osaat käydä läpi sanakirjan sisällön
    • \n
    • Tunnet joitakin sanakirjan käyttötarkoituksia ohjelmoinnissa
    • \n

    Lista on kätevä tietorakenne, mutta sen rajoituksena on, että alkiot ovat indekseissä 0, 1, 2, jne. Tämä hankaloittaa alkioiden etsimistä listalta: jotta löydämme tietyn alkion, on pahimmassa tapauksessa käytävä läpi koko lista.

    Tutustumme seuraavaksi sanakirjaan, (englanniksi dictionary) joka on listan lisäksi toinen Pythonin perustietorakenne. Sanakirjassa jokainen alkio koostuu avaimesta ja arvosta, ja voimme etsiä ja muuttaa tietoa avaimen perusteella.

    Sanakirjan käyttäminen

    Seuraava ohjelma näyttää esimerkin sanakirjan käyttämisestä:

    sanakirja = {}\n\nsanakirja[\"apina\"] = \"monkey\"\nsanakirja[\"banaani\"] = \"banana\"\nsanakirja[\"cembalo\"] = \"harpsichord\"\n\nprint(len(sanakirja))\nprint(sanakirja)\nprint(sanakirja[\"apina\"])

    3\n{'apina': 'monkey', 'banaani': 'banana', 'cembalo': 'harpsichord'}\nmonkey

    Merkintä {} luo tyhjän sanakirjan, minkä jälkeen voimme lisätä sanakirjaan sisältöä. Tässä tapauksessa lisäämme kolme avainta \"apina\", \"banaani\" ja \"cembalo\", joita vastaavat arvot \"monkey\", \"banana\" ja \"harpsichord\". Lopuksi tulostamme koko sanakirjan sisällön ja sitten avaimen \"apina\" arvon.

    Voisimme käyttää tätä sanakirjaa vaikka seuraavasti:

    sana = input(\"Anna sana: \")\nif sana in sanakirja:\n    print(\"Käännös:\", sanakirja[sana])\nelse:\n    print(\"Sanaa ei löytynyt\")

    Tässä käytössä on in-operaattori, joka sanakirjan tapauksessa tarkastaa, onko siinä tiettyä avainta. Mahdollisia ohjelman tulostuksia:

    Anna sana: apina\nKäännös: monkey

    Anna sana: pöllö\nSanaa ei löytynyt

    Mitä sanakirjassa voi olla?

    Vaikka tietorakenteen nimi on sanakirja, siinä ei ole usein sanakirjaa vaan jotain muuta tietoa. Esimerkiksi seuraavassa sanakirjassa avaimet ovat merkkijonoja ja arvot ovat kokonaislukuja:

    tulokset = {}\ntulokset[\"Maija\"] = 4\ntulokset[\"Liisa\"] = 5\ntulokset[\"Kalle\"] = 2

    Seuraavassa sanakirjassa puolestaan avaimet ovat kokonaislukuja ja arvot ovat listoja:

    listat = {}\nlistat[5] = [1, 2, 3]\nlistat[42] = [5, 4, 5, 4, 5]\nlistat[100] = [5, 2, 3]

    Avaimista ja arvoista

    Tietty avain voi esiintyä sanakirjassa enintään kerran. Jos asetamme samalle avaimelle uuden arvon, korvaa uusi arvo vanhan arvon:

    sanakirja[\"suuri\"] = \"big\"\nsanakirja[\"suuri\"] = \"large\"\nprint(sanakirja[\"suuri\"])

    large

    Sanakirjan avaimen vaatimuksena on, että sen tulee olla muuttumaton. Tämän vuoksi emme voi käyttää listaa avaimena, koska lista voi muuttua. Esimerkiksi seuraava koodi ei toimi:

    sanakirja[[1, 2, 3]] = 5

    TypeError: unhashable type: 'list'

    Python tallentaa sanakirjan sisällön sisäisesti tietorakenteena nimeltä hajautustaulu (hash table). Ideana on laskea avaimelle hajautusarvo (hash value), jonka avulla määräytyy avaimen paikka muistissa. Yllä oleva virheilmoitus ilmaisee, että listalle ei voida laskea hajautusarvoa, joten se ei kelpaa sanakirjan avaimeksi.

    Kurssilla Tietorakenteet ja algoritmit tutustutaan tarkemmin hajautustauluihin, eli sanakirjojen pellin alla olevaan mekanismiin.

    Huomaa, että sanakirjassa olevaa avainta vastaavan arvon ei tarvitse olla muuttumaton, vaan voimme tallentaa mitä tahansa tietoa arvoiksi. Sama arvo voi myös esiintyä samassa hakemistossa enemmän kuin yhden kerran.

    Tee funktio kertaa_kymmenen(alku: int, loppu: int), joka muodostaa ja palauttaa uuden sanakirjan. Sanakirjassa on avaimina luvut väliltä alku..loppu.

    Jokaisen avaimen arvona on avain kerrottuna kymmenellä.

    Esimerkiksi:

    d = kertaa_kymmenen(3, 6)\nprint(d)

    {3: 30, 4: 40, 5: 50, 6: 60}

    Tee funktio kertomat(n: int), joka palauttaa lukujen 1..n kertomat sanakirjassa siten, että luku on avain ja luvun kertoma arvo, johon avain viittaa.

    Muistutuksena: luvun n kertoma n! lasketaan kertomalla luku kaikilla itseään pienemmillä positiivisilla kokonaisluvuilla. Luvun 4 kertoma on siis 4 * 3 * 2 * 1 = 24.

    Esimerkki käytöstä:

    k = kertomat(5)\nprint(k[1])\nprint(k[3])\nprint(k[5])

    1\n6\n120

    Sanakirjan läpikäynti

    Sanakirjan läpikäyntiin voidaan käyttää tuttuun tapaan for-silmukkaa. Rakenne for avain in sanakirja käy läpi kaikki sanakirjan avaimet yksi kerrallaan. Esimerkiksi seuraava koodi tulostaa kaikki sanakirjan avaimet ja niiden arvot:

    sanakirja = {}\n\nsanakirja[\"apina\"] = \"monkey\"\nsanakirja[\"banaani\"] = \"banana\"\nsanakirja[\"cembalo\"] = \"harpsichord\"\n\nfor avain in sanakirja:\n    print(\"avain:\", avain)\n    print(\"arvo:\", sanakirja[avain])

    avain: apina\narvo: monkey\navain: banaani\narvo: banana\navain: cembalo\narvo: harpsichord

    Python tarjoaa myös mahdollisuuden käydä läpi samaan aikaan sekä avaimet että vastaavat arvot. Tämä onnistuu käyttämällä items-metodia, joka palauttaa kaikki avaimet ja arvot yksi kerrallaan:

    \nfor avain, arvo in sanakirja.items():\n    print(\"avain:\", avain)\n    print(\"arvo:\", arvo)

    Huomaa, että läpikäynnissä avaimet tulevat samassa järjestyksessä kuin ne on lisätty sanakirjaan. Sanakirjan avainten järjestyksellä ei kuitenkaan yleensä ole merkitystä sovelluksissa.

    Sanakirjan edistyneempi käyttö

    Tarkastellaan tilannetta, jossa listassa on joukko sanoja:

    sanalista = [\n  \"banaani\", \"maito\", \"olut\", \"juusto\", \"piimä\", \"mehu\", \"makkara\",\n  \"tomaatti\", \"kurkku\", \"voi\", \"margariini\", \"juusto\", \"makkara\",\n  \"olut\", \"piimä\", \"piimä\", \"voi\", \"olut\", \"suklaa\"\n]

    Haluamme analysoida sanalistaa eri tavoin, kuten selvittää, montako kertaa kukin sana listalla esiintyy.

    Sanakirja sopii tähän tilanteeseen hyvin. Ideana on käydä listan sanat läpi yksi kerrallaan ja ylläpitää sanakirjassa tietoa sanojen esiintymiskerroista:

    def lukumaarat(lista):\n    sanat = {}\n    for sana in lista:\n        # jos sana ei ole vielä tullut vastaan, alusta avaimen arvo\n        if sana not in sanat:\n            sanat[sana] = 0\n        # kasvata sanan esiintymislukumäärää\n        sanat[sana] += 1\n    return sanat\n\n# kutsutaan funktiota\nprint(lukumaarat(sanalista))

    Ohjelman tulostus on seuraavassa:

    {'banaani': 1, 'maito': 1, 'olut': 3, 'juusto': 2, 'piimä': 3, 'mehu': 1, 'makkara': 2, 'tomaatti': 1, 'kurkku': 1, 'voi': 2, 'margariini': 1, 'suklaa': 1}

    Tehdään vielä toinen sanalistaa käsittelevä metodi, joka jaottelee listalla olevat sanat niiden alkukirjaimen mukaan:

    def alkukirjaimen_mukaan(lista):\n    ryhmat = {}\n    for sana in lista:\n        alkukirjain = sana[0]\n        # alusta alkukirjaimeen liittyvä lista kun kirjain tulee vastaan 1. kerran\n        if alkukirjain not in ryhmat:\n            ryhmat[alkukirjain] = []\n        # lisää sana alkukirjainta vastaavalle listalle\n        ryhmat[alkukirjain].append(sana)\n    return ryhmat\n\nryhmat = alkukirjaimen_mukaan(sanalista)\n\nfor avain, arvo in ryhmat.items():\n    print(f\"kirjaimella {avain} alkavat sanat: \")\n    for sana in arvo:\n        print(sana)

    Funktio toimii pitkälti saman periaatteen mukaan kuin edellisen esimerkin funktio. Tällä kertaa kuitenkin sanakirjassa avaimiin (eli alkukirjaimiin) liittyvät arvot ovat listoja.

    Ohjelman tulostus on seuraavassa:

    kirjaimella b alkavat sanat:\nbanaani\nkirjaimella m alkavat sanat:\nmaito\nmehu\nmakkara\nmargariini\nmakkara\nkirjaimella o alkavat sanat:\nolut\nolut\nolut\nkirjaimella j alkavat sanat:\njuusto\njuusto\nkirjaimella p alkavat sanat:\npiimä\npiimä\npiimä\nkirjaimella t alkavat sanat:\ntomaatti\nkirjaimella k alkavat sanat:\nkurkku\nkirjaimella v alkavat sanat:\nvoi\nvoi\nkirjaimella s alkavat sanat:\nsuklaa

    Tee funktio histogrammi, joka saa parametrina merkkijonon ja tulostaa merkkijonon eri kirjainten lukumäärää kuvaavan histogrammin, jossa kirjaimen jokaista esiintymää kohti tulostuu yksi tähti kirjaimen riville.

    Esimerkiksi kutsuttaessa histogrammi(\"abba\") tulostus on:

    \na **\nb **\n

    Vastaavasti kutsuttaessa histogrammi(\"saippuakauppias\") tulostus on:

    \ns **\na ****\ni **\np ****\nu **\nk *\n

    Tee puhelinluettelo, joka toimii seuraavasti:

    komento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 040-5466745\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: emilia\nnumero: 045-1212344\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: maija\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 09-22223333\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): 3\nlopetetaan...

    Huomaa, että jokaiseen nimeen voi liittyä vain yksi puhelinnumero. Jos samalle henkilölle lisätään uusi numero, se korvaa aiemmin lisätyn numeron.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tee puhelinluettelosta paranneltu versio, missä jokaisella henkilöllä voi olla useampia puhelinnumeroita. Ohjelma toimii kuten edellisessä tehtävässä, mutta nyt se listaa jokaisen numeron:

    komento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 040-5466745\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: emilia\nnumero: 045-1212344\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: maija\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 09-22223333\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n040-5466745\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): 3\nlopetetaan...

    Avaimien poistaminen sanakirjasta

    Sanakirjasta on mahdollista myös poistaa avain-arvo-pareja. Menetelmiä tähän on kaksi. Ensimmäinen näistä on komento del:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"Lehtori\"}\ndel henkilokunta[\"Arto\"]\nprint(henkilokunta)

    {'Antti': 'lehtori', 'Emilia': 'professori'}

    Jos komentoa del kutsutaan avaimille, joita sanakirjassa ei ole, seurauksena on virhe:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\ndel henkilokunta[\"Jukka\"]
    \n>>> del henkilokunta[\"Jukka\"]\nTraceback (most recent call last):\n  File \"\", line 1, in \nKeyError: 'Jukka'\n

    Ennen poistoa on siis syytä tarkistaa, että poistettava avain löytyy sanakirjasta:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\nif \"Jukka\" in henkilokunta:\n  del henkilokunta[\"Jukka\"]\n  print(\"Poistettiin\")\nelse:\n  print(\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\")

    Toinen vaihtoehto alkion poistamiseen on metodi pop:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\npoistettu = henkilokunta.pop(\"Arto\")\nprint(henkilokunta)\nprint(\"Poistettiin\", poistettu)

    {'Antti': 'lehtori', 'Emilia': 'professori'}\nPoistettiin lehtori

    Metodi pop siis myös palauttaa poistettua avainta vastaavan arvon.

    Oletusarvoisesti myös pop aiheuttaa virheen, jos sanakirjasta yritetään poistaa avain, jota siellä ei ole. Metodille on kuitenkin mahdollista antaa toisena parametrina oletusarvoinen paluuarvo, joka palautetaan siinä tilanteessa, kun poistettavaa ei löydy. Esimerkiksi arvo None, joka tarkoittaa \"ei mitään\", sopii hyvin tälläisiin tilanteisiin:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\npoistettu = henkilokunta.pop(\"Jukka\", None)\nif poistettu == None:\n  print(\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\")\nelse:\n  print(\"Poistettiin\", poistettu)

    Poistettavaa henkilöä ei löytynyt henkilökunnasta

    Kannattaa huomata, että jos on tarvetta poistaa koko sanakirjan sisältö:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\nfor avain in henkilokunta:\n  del henkilokunta[avain]

    seurauksena on virheilmoitus

    RuntimeError: dictionary changed size during iteration

    Syynä on se, että käytäessä läpi rakennetta for-lauseella, ei sen sisältöä saa muuttaa.

    Koko sanakirjan tyhjennys onnistuu komennolla:

    henkilokunta.clear()

    Kirjoita funktio kaanna(sanakirja: dict), joka saa parametrikseen sanakirjan ja kääntää sen niin, että arvoista tulee avaimia ja päinvastoin.

    Esimerkki funktion käytöstä:

    s = {1: \"eka\", 2: \"toka\", 3: \"kolmas\", 4: \"neljas\"}\nkaanna(s)\nprint(s)

    {\"eka\": 1, \"toka\": 2, \"kolmas\": 3, \"neljas\": 4}

    Huomaa, että tämä pitää paikkansa myös parametrina oleville sanakirjoille!

    Jos kohtaat tehtävässä ongelmia, katso visualisaattorilla mitä koodisi tekee.

    Kirjoita funktio lukukirja(), joka palauttaa uuden sanakirjan. Palautettu rakenne sisältää avaimina luvut nollasta 99:ään. Sanakirjan arvoina ovat luvut kirjaimin kirjoitettuna. Katso esimerkkiä alla:

    luvut = lukukirja()\nprint(luvut[2])\nprint(luvut[11])\nprint(luvut[45])\nprint(luvut[99])\nprint(luvut[0])

    kaksi\nyksitoista\nneljäkymmentäviisi\nyhdensänkymmentäyhdeksän\nnolla

    HUOM! Älä muodosta jokaista lukusanaa yksitellen, vaan mieti, miten voisit hyödyntää silmukoita ja sanakirjaa jotenkin ratkaisussasi!

    Sanakirja tiedon ryhmittelyssä

    Voimme käyttää sanakirjaa myös tiedon ryhmittelyssä. Esimerkiksi seuraava koodi luo sanakirjan, jossa on tietoa henkilöstä:

    henkilo = {\"nimi\": \"Pirjo Python\", \"pituus\": 154, \"paino\": 61, \"ikä:\" 44}

    Tämä tarkoittaa, että henkilön nimi on Pirjo Python, pituus on 154, paino on 61 ja ikä on 44.\nHuomaa, että olisimme voineet tallentaa tiedot myös näin muuttujiin:

    nimi = \"Pirjo Python\"\npituus = 154\npaino = 61\nika = 44

    Sanakirjan etuna on kuitenkin, että se kokoaa kaikki samaan asiaan liittyvät tiedot yhteisen nimen alle, jonka kautta voimme viitata tietoihin. Periaatteessa lista tarjoaa saman edun:

    henkilo = [\"Pirjo Python\", 153, 61, 44]

    Listan huono puoli on kuitenkin, että ohjelmoijan on muistettava, mihin kohtaan listaa mikäkin arvo tallennetaan. Pitää siis muistaa esimerkiksi, että henkilo[2] tarkoittaa painoa ja henkilo[3] ikää. Sanakirjassa tätä ongelmaa ei ole, sillä kaikki sanakirjassa olevat erilliset tiedot on tallennettu selkeästi nimetyn avaimen taakse.

    Esimerkiksi voimme käsitellä henkilöitä näin:

    henkilo1 = {\"nimi\": \"Pirjo Python\", \"pituus\": 154, \"paino\": 61, \"ikä\": 44}\nhenkilo2 = {\"nimi\": \"Pekka Pythonen\", \"pituus\": 174, \"paino\": 103, \"ikä\": 31}\nhenkilo3 = {\"nimi\": \"Pedro Python\", \"pituus\": 191, \"paino\": 71, \"ikä\": 14}\n\nhenkilot = [henkilo1, henkilo2, henkilo3]\n\nfor henkilo in henkilot:\n    print(henkilo[\"nimi\"])\n\nyhteispituus = 0\nfor henkilo in henkilot:\n    yhteispituus += henkilo[\"pituus\"]\n\nprint(\"Keskipituus on\", yhteispituus / len(henkilot))

    Pirjo Python\nPekka Pythonen\nPedro Python\nKeskipituus on 173.0

    Kirjoita funktio lisaa_elokuva(rekisteri: list, nimi: str, ohjaaja: str, vuosi: int, pituus: int), joka lisää yhden elokuvaolion elokuvarekisteriin.

    Rekisteri on toteutettu listana, ja jokainen listan alkio on yksi sanakirja. Sanakirjassa on seuraavat avaimet:

      \n
    • nimi
    • \n
    • ohjaaja
    • \n
    • vuosi
    • \n
    • pituus
    • \n

    Arvot tulevat metodin parametreina.

    Esimerkki:

    rekisteri = []\nlisaa_elokuva(rekisteri, \"Pythonin viemää\", \"Pekka Python\", 2017, 116)\nlisaa_elokuva(rekisteri, \"Python lentokoneessa\", \"Renny Pytholin\", 2001, 94)\nprint(rekisteri)

    [{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pytholin\", \"vuosi\": 2001, \"pituus\": 94}]

    Kirjoita funktio etsi_elokuvat(rekisteri: list, hakusana: str), joka käsittelee edellisessä tehtävässä luotua elokuvarekisteriä. Funktio muodostaa uuden listan, jolle kopioidaan rekisteristä ne elokuvat, joiden nimestä löytyy hakusana. Pienet ja isot kirjaimet eivät merkitse haussa, joten hakusanalla paj pitää löytyä sekä elokuva Tappajahai että elokuva Pajatoiminnan historia.

    Esimerkki:

    rekisteri = [{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116},\n{\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pythonen\", \"vuosi\": 2001, \"pituus\": 94},\n{\"nimi\": \"Koodaajien yö\", \"ohjaaja\": \"M. Night Python\", \"vuosi\": 2011, \"pituus\": 101}]\n\nlista = etsi_elokuvat(rekisteri, \"python\")\nprint(lista)

    [{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pythonen\", \"vuosi\": 2001, \"pituus\": 94}]

    ","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/3-dictionary.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, millainen tietorakenne on sanakirja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää sanakirjaa erityyppisten avainten ja arvojen kanssa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käydä läpi sanakirjan sisällön"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet joitakin sanakirjan käyttötarkoituksia ohjelmoinnissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lista on kätevä tietorakenne, mutta sen rajoituksena on, että alkiot ovat indekseissä 0, 1, 2, jne. Tämä hankaloittaa alkioiden etsimistä listalta: jotta löydämme tietyn alkion, on pahimmassa tapauksessa käytävä läpi koko lista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustumme seuraavaksi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sanakirjaan"}]},{"type":"text","value":", (englanniksi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"dictionary"}]},{"type":"text","value":") joka on listan lisäksi toinen Pythonin perustietorakenne. Sanakirjassa jokainen alkio koostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"avaimesta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"arvosta"}]},{"type":"text","value":", ja voimme etsiä ja muuttaa tietoa avaimen perusteella."}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirjan-kayttaminen","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirjan käyttäminen"},{"type":"element","tagName":"a","properties":{"href":"#sanakirjan-kayttaminen","ariaLabel":"sanakirjan kayttaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma näyttää esimerkin sanakirjan käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n{'apina': 'monkey', 'banaani': 'banana', 'cembalo': 'harpsichord'}\nmonkey"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"{}"}]},{"type":"text","value":" luo tyhjän sanakirjan, minkä jälkeen voimme lisätä sanakirjaan sisältöä. Tässä tapauksessa lisäämme kolme avainta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"text","value":", joita vastaavat arvot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":". Lopuksi tulostamme koko sanakirjan sisällön ja sitten avaimen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":" arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voisimme käyttää tätä sanakirjaa vaikka seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna sana: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Käännös:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sanaa ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä käytössä on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":"-operaattori, joka sanakirjan tapauksessa tarkastaa, onko siinä tiettyä avainta. Mahdollisia ohjelman tulostuksia:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"apina"}]},{"type":"text","value":"\nKäännös: monkey"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pöllö"}]},{"type":"text","value":"\nSanaa ei löytynyt"}]}]},{"type":"element","tagName":"h2","properties":{"id":"mita-sanakirjassa-voi-olla","style":"position:relative;"},"children":[{"type":"text","value":"Mitä sanakirjassa voi olla?"},{"type":"element","tagName":"a","properties":{"href":"#mita-sanakirjassa-voi-olla","ariaLabel":"mita sanakirjassa voi olla permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka tietorakenteen nimi on sanakirja, siinä ei ole usein sanakirjaa vaan jotain muuta tietoa. Esimerkiksi seuraavassa sanakirjassa avaimet ovat merkkijonoja ja arvot ovat kokonaislukuja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulokset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\ntulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\ntulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\ntulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kalle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa sanakirjassa puolestaan avaimet ovat kokonaislukuja ja arvot ovat listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"listat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlistat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlistat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlistat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"avaimista-ja-arvoista","style":"position:relative;"},"children":[{"type":"text","value":"Avaimista ja arvoista"},{"type":"element","tagName":"a","properties":{"href":"#avaimista-ja-arvoista","ariaLabel":"avaimista ja arvoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietty avain voi esiintyä sanakirjassa enintään kerran. Jos asetamme samalle avaimelle uuden arvon, korvaa uusi arvo vanhan arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suuri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"big\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suuri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"large\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suuri\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"large"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjan avaimen vaatimuksena on, että sen tulee olla muuttumaton. Tämän vuoksi emme voi käyttää listaa avaimena, koska lista voi muuttua. Esimerkiksi seuraava koodi ei toimi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: unhashable type: 'list'"}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Hajautustaulu"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tallentaa sanakirjan sisällön sisäisesti tietorakenteena nimeltä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hajautustaulu"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hash table"}]},{"type":"text","value":"). Ideana on laskea avaimelle "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hajautusarvo"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"hash value"}]},{"type":"text","value":"), jonka avulla määräytyy avaimen paikka muistissa. Yllä oleva virheilmoitus ilmaisee, että listalle ei voida laskea hajautusarvoa, joten se ei kelpaa sanakirjan avaimeksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssilla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tietorakenteet ja algoritmit"}]},{"type":"text","value":" tutustutaan tarkemmin hajautustauluihin, eli sanakirjojen pellin alla olevaan mekanismiin."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että sanakirjassa olevaa avainta vastaavan arvon ei tarvitse olla muuttumaton, vaan voimme tallentaa mitä tahansa tietoa arvoiksi. Sama arvo voi myös esiintyä samassa hakemistossa enemmän kuin yhden kerran."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kertaa kymmenen","tmcname":"osa05-10b_kertaa_kymmenen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kertaa_kymmenen(alku: int, loppu: int)"}]},{"type":"text","value":", joka muodostaa ja palauttaa uuden sanakirjan. Sanakirjassa on avaimina luvut väliltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alku"}]},{"type":"text","value":".."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loppu"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisen avaimen arvona on avain kerrottuna kymmenellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"d "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kertaa_kymmenen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"d"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{3: 30, 4: 40, 5: 50, 6: 60}"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kertomat","tmcname":"osa05-11_kertomat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kertomat(n: int)"}]},{"type":"text","value":", joka palauttaa lukujen 1.."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kertomat sanakirjassa siten, että luku on avain ja luvun kertoma arvo, johon avain viittaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muistutuksena: luvun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kertoma "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":"! lasketaan kertomalla luku kaikilla itseään pienemmillä positiivisilla kokonaisluvuilla. Luvun 4 kertoma on siis 4 * 3 * 2 * 1 = 24."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kertomat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"k"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n6\n120"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirjan-lapikaynti","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirjan läpikäynti"},{"type":"element","tagName":"a","properties":{"href":"#sanakirjan-lapikaynti","ariaLabel":"sanakirjan lapikaynti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjan läpikäyntiin voidaan käyttää tuttuun tapaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa. Rakenne "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for avain in sanakirja"}]},{"type":"text","value":" käy läpi kaikki sanakirjan avaimet yksi kerrallaan. Esimerkiksi seuraava koodi tulostaa kaikki sanakirjan avaimet ja niiden arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"avain:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"avain: apina\narvo: monkey\navain: banaani\narvo: banana\navain: cembalo\narvo: harpsichord"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tarjoaa myös mahdollisuuden käydä läpi samaan aikaan sekä avaimet että vastaavat arvot. Tämä onnistuu käyttämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"items"}]},{"type":"text","value":"-metodia, joka palauttaa kaikki avaimet ja arvot yksi kerrallaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"avain:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että läpikäynnissä avaimet tulevat samassa järjestyksessä kuin ne on lisätty sanakirjaan. Sanakirjan avainten järjestyksellä ei kuitenkaan yleensä ole merkitystä sovelluksissa."}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirjan-edistyneempi-kaytto","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirjan edistyneempi käyttö"},{"type":"element","tagName":"a","properties":{"href":"#sanakirjan-edistyneempi-kaytto","ariaLabel":"sanakirjan edistyneempi kaytto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan tilannetta, jossa listassa on joukko sanoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"maito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juusto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"piimä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"mehu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"makkara\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tomaatti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kurkku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"voi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"margariini\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"juusto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"makkara\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"piimä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"piimä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"voi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"suklaa\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Haluamme analysoida sanalistaa eri tavoin, kuten selvittää, montako kertaa kukin sana listalla esiintyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirja sopii tähän tilanteeseen hyvin. Ideana on käydä listan sanat läpi yksi kerrallaan ja ylläpitää sanakirjassa tietoa sanojen esiintymiskerroista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lukumaarat"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# jos sana ei ole vielä tullut vastaan, alusta avaimen arvo"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kasvata sanan esiintymislukumäärää"}]},{"type":"text","value":"\n sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" sanat\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kutsutaan funktiota"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lukumaarat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraavassa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'banaani': 1, 'maito': 1, 'olut': 3, 'juusto': 2, 'piimä': 3, 'mehu': 1, 'makkara': 2, 'tomaatti': 1, 'kurkku': 1, 'voi': 2, 'margariini': 1, 'suklaa': 1}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä toinen sanalistaa käsittelevä metodi, joka jaottelee listalla olevat sanat niiden alkukirjaimen mukaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"alkukirjaimen_mukaan"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ryhmat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n alkukirjain "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# alusta alkukirjaimeen liittyvä lista kun kirjain tulee vastaan 1. kerran"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" alkukirjain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkukirjain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisää sana alkukirjainta vastaavalle listalle"}]},{"type":"text","value":"\n ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"alkukirjain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" ryhmat\n\nryhmat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkukirjaimen_mukaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" ryhmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"kirjaimella "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" alkavat sanat: \""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii pitkälti saman periaatteen mukaan kuin edellisen esimerkin funktio. Tällä kertaa kuitenkin sanakirjassa avaimiin (eli alkukirjaimiin) liittyvät arvot ovat listoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on seuraavassa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"kirjaimella b alkavat sanat:\nbanaani\nkirjaimella m alkavat sanat:\nmaito\nmehu\nmakkara\nmargariini\nmakkara\nkirjaimella o alkavat sanat:\nolut\nolut\nolut\nkirjaimella j alkavat sanat:\njuusto\njuusto\nkirjaimella p alkavat sanat:\npiimä\npiimä\npiimä\nkirjaimella t alkavat sanat:\ntomaatti\nkirjaimella k alkavat sanat:\nkurkku\nkirjaimella v alkavat sanat:\nvoi\nvoi\nkirjaimella s alkavat sanat:\nsuklaa"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Histogrammi","tmcname":"osa05-12_histogrammi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"histogrammi"}]},{"type":"text","value":", joka saa parametrina merkkijonon ja tulostaa merkkijonon eri kirjainten lukumäärää kuvaavan histogrammin, jossa kirjaimen jokaista esiintymää kohti tulostuu yksi tähti kirjaimen riville."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"histogrammi(\"abba\")"}]},{"type":"text","value":" tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"a **\nb **\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaavasti kutsuttaessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"histogrammi(\"saippuakauppias\")"}]},{"type":"text","value":" tulostus on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"s **\na ****\ni **\np ****\nu **\nk *\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelo, versio 1","tmcname":"osa05-13_puhelinluettelo_versio1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee puhelinluettelo, joka toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"040-5466745"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"emilia"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-1212344"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"maija"}]},{"type":"text","value":"\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"09-22223333"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nlopetetaan..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jokaiseen nimeen voi liittyä vain yksi puhelinnumero. Jos samalle henkilölle lisätään uusi numero, se korvaa aiemmin lisätyn numeron."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Puhelinluettelo, versio 2","tmcname":"osa05-14_puhelinluettelo_versio2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee puhelinluettelosta paranneltu versio, missä jokaisella henkilöllä voi olla useampia puhelinnumeroita. Ohjelma toimii kuten edellisessä tehtävässä, mutta nyt se listaa jokaisen numeron:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"komento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"040-5466745"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"emilia"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"045-1212344"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"maija"}]},{"type":"text","value":"\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\nnumero: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"09-22223333"}]},{"type":"text","value":"\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nnimi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pekka"}]},{"type":"text","value":"\n040-5466745\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nlopetetaan..."}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"avaimien-poistaminen-sanakirjasta","style":"position:relative;"},"children":[{"type":"text","value":"Avaimien poistaminen sanakirjasta"},{"type":"element","tagName":"a","properties":{"href":"#avaimien-poistaminen-sanakirjasta","ariaLabel":"avaimien poistaminen sanakirjasta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjasta on mahdollista myös poistaa avain-arvo-pareja. Menetelmiä tähän on kaksi. Ensimmäinen näistä on komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Antti': 'lehtori', 'Emilia': 'professori'}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos komentoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" kutsutaan avaimille, joita sanakirjassa ei ole, seurauksena on virhe:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":">>> del henkilokunta[\"Jukka\"]\nTraceback (most recent call last):\n File \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nKeyError: 'Jukka'\n"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ennen poistoa on siis syytä tarkistaa, että poistettava avain löytyy sanakirjasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen vaihtoehto alkion poistamiseen on metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npoistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" poistettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Antti': 'lehtori', 'Emilia': 'professori'}\nPoistettiin lehtori"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" siis myös palauttaa poistettua avainta vastaavan arvon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvoisesti myös "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":" aiheuttaa virheen, jos sanakirjasta yritetään poistaa avain, jota siellä ei ole. Metodille on kuitenkin mahdollista antaa toisena parametrina "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"oletusarvoinen paluuarvo"}]},{"type":"text","value":", joka palautetaan siinä tilanteessa, kun poistettavaa ei löydy. Esimerkiksi arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":", joka tarkoittaa \"ei mitään\", sopii hyvin tälläisiin tilanteisiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npoistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" poistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Poistettiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" poistettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Poistettavaa henkilöä ei löytynyt henkilökunnasta"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että jos on tarvetta poistaa koko sanakirjan sisältö:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"professori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lehtori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"del"}]},{"type":"text","value":" henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"seurauksena on virheilmoitus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"RuntimeError: dictionary changed size during iteration"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syynä on se, että käytäessä läpi rakennetta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-lauseella, ei sen sisältöä saa muuttaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koko sanakirjan tyhjennys onnistuu komennolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilokunta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"clear"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sanakirjan kääntö","tmcname":"osa05-15_sanakirjan_kaanto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kaanna(sanakirja: dict)"}]},{"type":"text","value":", joka saa parametrikseen sanakirjan ja kääntää sen niin, että arvoista tulee avaimia ja päinvastoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"eka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"toka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kolmas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"neljas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nkaanna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"s"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"s"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{\"eka\": 1, \"toka\": 2, \"kolmas\": 3, \"neljas\": 4}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":", että "},{"type":"element","tagName":"a","properties":{"href":"/osa-5/2-viittaukset#parametrina-olevan-listan-muokkaaminen"},"children":[{"type":"text","value":"tämä"}]},{"type":"text","value":" pitää paikkansa myös parametrina oleville sanakirjoille!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kohtaat tehtävässä ongelmia, katso "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"visualisaattorilla"}]},{"type":"text","value":" mitä koodisi tekee."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Luvut sanoina","tmcname":"osa05-16_luvut_sanoina"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lukukirja()"}]},{"type":"text","value":", joka palauttaa uuden sanakirjan. Palautettu rakenne sisältää avaimina luvut nollasta 99:ään. Sanakirjan arvoina ovat luvut kirjaimin kirjoitettuna. Katso esimerkkiä alla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lukukirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"kaksi\nyksitoista\nneljäkymmentäviisi\nyhdensänkymmentäyhdeksän\nnolla"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM! Älä muodosta jokaista lukusanaa yksitellen, vaan mieti, miten voisit hyödyntää silmukoita ja sanakirjaa jotenkin ratkaisussasi!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"sanakirja-tiedon-ryhmittelyssa","style":"position:relative;"},"children":[{"type":"text","value":"Sanakirja tiedon ryhmittelyssä"},{"type":"element","tagName":"a","properties":{"href":"#sanakirja-tiedon-ryhmittelyssa","ariaLabel":"sanakirja tiedon ryhmittelyssa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää sanakirjaa myös tiedon ryhmittelyssä. Esimerkiksi seuraava koodi luo sanakirjan, jossa on tietoa henkilöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"154"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä:\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tarkoittaa, että henkilön nimi on Pirjo Python, pituus on 154, paino on 61 ja ikä on 44.\nHuomaa, että olisimme voineet tallentaa tiedot myös näin muuttujiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"text","value":"\npituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"154"}]},{"type":"text","value":"\npaino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"text","value":"\nika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjan etuna on kuitenkin, että se kokoaa kaikki samaan asiaan liittyvät tiedot yhteisen nimen alle, jonka kautta voimme viitata tietoihin. Periaatteessa lista tarjoaa saman edun:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"153"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan huono puoli on kuitenkin, että ohjelmoijan on muistettava, mihin kohtaan listaa mikäkin arvo tallennetaan. Pitää siis muistaa esimerkiksi, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo[2]"}]},{"type":"text","value":" tarkoittaa painoa ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo[3]"}]},{"type":"text","value":" ikää. Sanakirjassa tätä ongelmaa ei ole, sillä kaikki sanakirjassa olevat erilliset tiedot on tallennettu selkeästi nimetyn avaimen taakse."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi voimme käsitellä henkilöitä näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"154"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"61"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"174"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"103"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"31"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pedro Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"191"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"paino\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"71"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nhenkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nyhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keskipituus on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pirjo Python\nPekka Pythonen\nPedro Python\nKeskipituus on 173.0"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Elokuvarekisteri","tmcname":"osa05-17_elokuvarekisteri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_elokuva(rekisteri: list, nimi: str, ohjaaja: str, vuosi: int, pituus: int)"}]},{"type":"text","value":", joka lisää yhden elokuvaolion elokuvarekisteriin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekisteri on toteutettu listana, ja jokainen listan alkio on yksi sanakirja. Sanakirjassa on seuraavat avaimet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ohjaaja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vuosi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvot tulevat metodin parametreina."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rekisteri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlisaa_elokuva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonin viemää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2017"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"116"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_elokuva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python lentokoneessa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Renny Pytholin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2001"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"94"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pytholin\", \"vuosi\": 2001, \"pituus\": 94}]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Etsi elokuvat","tmcname":"osa05-17b_etsi_elokuvat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etsi_elokuvat(rekisteri: list, hakusana: str)"}]},{"type":"text","value":", joka käsittelee edellisessä tehtävässä luotua elokuvarekisteriä. Funktio muodostaa uuden listan, jolle kopioidaan rekisteristä ne elokuvat, joiden nimestä löytyy hakusana. Pienet ja isot kirjaimet eivät merkitse haussa, joten hakusanalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paj"}]},{"type":"text","value":" pitää löytyä sekä elokuva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tappajahai"}]},{"type":"text","value":" että elokuva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pajatoiminnan historia"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"rekisteri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonin viemää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjaaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2017"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"116"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Python lentokoneessa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjaaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Renny Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2001"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"94"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Koodaajien yö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjaaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"M. Night Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2011"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pituus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"101"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etsi_elokuvat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rekisteri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pythonen\", \"vuosi\": 2001, \"pituus\": 94}]"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, millainen tietorakenne on sanakirja
    • \n
    • Osaat käyttää sanakirjaa erityyppisten avainten ja arvojen kanssa
    • \n
    • Osaat käydä läpi sanakirjan sisällön
    • \n
    • Tunnet joitakin sanakirjan käyttötarkoituksia ohjelmoinnissa
    • \n

    Lista on kätevä tietorakenne, mutta sen rajoituksena on, että alkiot ovat indekseissä 0, 1, 2, jne. Tämä hankaloittaa alkioiden etsimistä listalta: jotta löydämme tietyn alkion, on pahimmassa tapauksessa käytävä läpi koko lista.

    Tutustumme seuraavaksi sanakirjaan, (englanniksi dictionary) joka on listan lisäksi toinen Pythonin perustietorakenne. Sanakirjassa jokainen alkio koostuu avaimesta ja arvosta, ja voimme etsiä ja muuttaa tietoa avaimen perusteella.

    Sanakirjan käyttäminen

    Seuraava ohjelma näyttää esimerkin sanakirjan käyttämisestä:

    sanakirja = {}\n\nsanakirja[\"apina\"] = \"monkey\"\nsanakirja[\"banaani\"] = \"banana\"\nsanakirja[\"cembalo\"] = \"harpsichord\"\n\nprint(len(sanakirja))\nprint(sanakirja)\nprint(sanakirja[\"apina\"])

    3\n{'apina': 'monkey', 'banaani': 'banana', 'cembalo': 'harpsichord'}\nmonkey

    Merkintä {} luo tyhjän sanakirjan, minkä jälkeen voimme lisätä sanakirjaan sisältöä. Tässä tapauksessa lisäämme kolme avainta \"apina\", \"banaani\" ja \"cembalo\", joita vastaavat arvot \"monkey\", \"banana\" ja \"harpsichord\". Lopuksi tulostamme koko sanakirjan sisällön ja sitten avaimen \"apina\" arvon.

    Voisimme käyttää tätä sanakirjaa vaikka seuraavasti:

    sana = input(\"Anna sana: \")\nif sana in sanakirja:\n    print(\"Käännös:\", sanakirja[sana])\nelse:\n    print(\"Sanaa ei löytynyt\")

    Tässä käytössä on in-operaattori, joka sanakirjan tapauksessa tarkastaa, onko siinä tiettyä avainta. Mahdollisia ohjelman tulostuksia:

    Anna sana: apina\nKäännös: monkey

    Anna sana: pöllö\nSanaa ei löytynyt

    Mitä sanakirjassa voi olla?

    Vaikka tietorakenteen nimi on sanakirja, siinä ei ole usein sanakirjaa vaan jotain muuta tietoa. Esimerkiksi seuraavassa sanakirjassa avaimet ovat merkkijonoja ja arvot ovat kokonaislukuja:

    tulokset = {}\ntulokset[\"Maija\"] = 4\ntulokset[\"Liisa\"] = 5\ntulokset[\"Kalle\"] = 2

    Seuraavassa sanakirjassa puolestaan avaimet ovat kokonaislukuja ja arvot ovat listoja:

    listat = {}\nlistat[5] = [1, 2, 3]\nlistat[42] = [5, 4, 5, 4, 5]\nlistat[100] = [5, 2, 3]

    Avaimista ja arvoista

    Tietty avain voi esiintyä sanakirjassa enintään kerran. Jos asetamme samalle avaimelle uuden arvon, korvaa uusi arvo vanhan arvon:

    sanakirja[\"suuri\"] = \"big\"\nsanakirja[\"suuri\"] = \"large\"\nprint(sanakirja[\"suuri\"])

    large

    Sanakirjan avaimen vaatimuksena on, että sen tulee olla muuttumaton. Tämän vuoksi emme voi käyttää listaa avaimena, koska lista voi muuttua. Esimerkiksi seuraava koodi ei toimi:

    sanakirja[[1, 2, 3]] = 5

    TypeError: unhashable type: 'list'

    Python tallentaa sanakirjan sisällön sisäisesti tietorakenteena nimeltä hajautustaulu (hash table). Ideana on laskea avaimelle hajautusarvo (hash value), jonka avulla määräytyy avaimen paikka muistissa. Yllä oleva virheilmoitus ilmaisee, että listalle ei voida laskea hajautusarvoa, joten se ei kelpaa sanakirjan avaimeksi.

    Kurssilla Tietorakenteet ja algoritmit tutustutaan tarkemmin hajautustauluihin, eli sanakirjojen pellin alla olevaan mekanismiin.

    Huomaa, että sanakirjassa olevaa avainta vastaavan arvon ei tarvitse olla muuttumaton, vaan voimme tallentaa mitä tahansa tietoa arvoiksi. Sama arvo voi myös esiintyä samassa hakemistossa enemmän kuin yhden kerran.

    Tee funktio kertaa_kymmenen(alku: int, loppu: int), joka muodostaa ja palauttaa uuden sanakirjan. Sanakirjassa on avaimina luvut väliltä alku..loppu.

    Jokaisen avaimen arvona on avain kerrottuna kymmenellä.

    Esimerkiksi:

    d = kertaa_kymmenen(3, 6)\nprint(d)

    {3: 30, 4: 40, 5: 50, 6: 60}

    Tee funktio kertomat(n: int), joka palauttaa lukujen 1..n kertomat sanakirjassa siten, että luku on avain ja luvun kertoma arvo, johon avain viittaa.

    Muistutuksena: luvun n kertoma n! lasketaan kertomalla luku kaikilla itseään pienemmillä positiivisilla kokonaisluvuilla. Luvun 4 kertoma on siis 4 * 3 * 2 * 1 = 24.

    Esimerkki käytöstä:

    k = kertomat(5)\nprint(k[1])\nprint(k[3])\nprint(k[5])

    1\n6\n120

    Sanakirjan läpikäynti

    Sanakirjan läpikäyntiin voidaan käyttää tuttuun tapaan for-silmukkaa. Rakenne for avain in sanakirja käy läpi kaikki sanakirjan avaimet yksi kerrallaan. Esimerkiksi seuraava koodi tulostaa kaikki sanakirjan avaimet ja niiden arvot:

    sanakirja = {}\n\nsanakirja[\"apina\"] = \"monkey\"\nsanakirja[\"banaani\"] = \"banana\"\nsanakirja[\"cembalo\"] = \"harpsichord\"\n\nfor avain in sanakirja:\n    print(\"avain:\", avain)\n    print(\"arvo:\", sanakirja[avain])

    avain: apina\narvo: monkey\navain: banaani\narvo: banana\navain: cembalo\narvo: harpsichord

    Python tarjoaa myös mahdollisuuden käydä läpi samaan aikaan sekä avaimet että vastaavat arvot. Tämä onnistuu käyttämällä items-metodia, joka palauttaa kaikki avaimet ja arvot yksi kerrallaan:

    \nfor avain, arvo in sanakirja.items():\n    print(\"avain:\", avain)\n    print(\"arvo:\", arvo)

    Huomaa, että läpikäynnissä avaimet tulevat samassa järjestyksessä kuin ne on lisätty sanakirjaan. Sanakirjan avainten järjestyksellä ei kuitenkaan yleensä ole merkitystä sovelluksissa.

    Sanakirjan edistyneempi käyttö

    Tarkastellaan tilannetta, jossa listassa on joukko sanoja:

    sanalista = [\n  \"banaani\", \"maito\", \"olut\", \"juusto\", \"piimä\", \"mehu\", \"makkara\",\n  \"tomaatti\", \"kurkku\", \"voi\", \"margariini\", \"juusto\", \"makkara\",\n  \"olut\", \"piimä\", \"piimä\", \"voi\", \"olut\", \"suklaa\"\n]

    Haluamme analysoida sanalistaa eri tavoin, kuten selvittää, montako kertaa kukin sana listalla esiintyy.

    Sanakirja sopii tähän tilanteeseen hyvin. Ideana on käydä listan sanat läpi yksi kerrallaan ja ylläpitää sanakirjassa tietoa sanojen esiintymiskerroista:

    def lukumaarat(lista):\n    sanat = {}\n    for sana in lista:\n        # jos sana ei ole vielä tullut vastaan, alusta avaimen arvo\n        if sana not in sanat:\n            sanat[sana] = 0\n        # kasvata sanan esiintymislukumäärää\n        sanat[sana] += 1\n    return sanat\n\n# kutsutaan funktiota\nprint(lukumaarat(sanalista))

    Ohjelman tulostus on seuraavassa:

    {'banaani': 1, 'maito': 1, 'olut': 3, 'juusto': 2, 'piimä': 3, 'mehu': 1, 'makkara': 2, 'tomaatti': 1, 'kurkku': 1, 'voi': 2, 'margariini': 1, 'suklaa': 1}

    Tehdään vielä toinen sanalistaa käsittelevä metodi, joka jaottelee listalla olevat sanat niiden alkukirjaimen mukaan:

    def alkukirjaimen_mukaan(lista):\n    ryhmat = {}\n    for sana in lista:\n        alkukirjain = sana[0]\n        # alusta alkukirjaimeen liittyvä lista kun kirjain tulee vastaan 1. kerran\n        if alkukirjain not in ryhmat:\n            ryhmat[alkukirjain] = []\n        # lisää sana alkukirjainta vastaavalle listalle\n        ryhmat[alkukirjain].append(sana)\n    return ryhmat\n\nryhmat = alkukirjaimen_mukaan(sanalista)\n\nfor avain, arvo in ryhmat.items():\n    print(f\"kirjaimella {avain} alkavat sanat: \")\n    for sana in arvo:\n        print(sana)

    Funktio toimii pitkälti saman periaatteen mukaan kuin edellisen esimerkin funktio. Tällä kertaa kuitenkin sanakirjassa avaimiin (eli alkukirjaimiin) liittyvät arvot ovat listoja.

    Ohjelman tulostus on seuraavassa:

    kirjaimella b alkavat sanat:\nbanaani\nkirjaimella m alkavat sanat:\nmaito\nmehu\nmakkara\nmargariini\nmakkara\nkirjaimella o alkavat sanat:\nolut\nolut\nolut\nkirjaimella j alkavat sanat:\njuusto\njuusto\nkirjaimella p alkavat sanat:\npiimä\npiimä\npiimä\nkirjaimella t alkavat sanat:\ntomaatti\nkirjaimella k alkavat sanat:\nkurkku\nkirjaimella v alkavat sanat:\nvoi\nvoi\nkirjaimella s alkavat sanat:\nsuklaa

    Tee funktio histogrammi, joka saa parametrina merkkijonon ja tulostaa merkkijonon eri kirjainten lukumäärää kuvaavan histogrammin, jossa kirjaimen jokaista esiintymää kohti tulostuu yksi tähti kirjaimen riville.

    Esimerkiksi kutsuttaessa histogrammi(\"abba\") tulostus on:

    \na **\nb **\n

    Vastaavasti kutsuttaessa histogrammi(\"saippuakauppias\") tulostus on:

    \ns **\na ****\ni **\np ****\nu **\nk *\n

    Tee puhelinluettelo, joka toimii seuraavasti:

    komento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 040-5466745\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: emilia\nnumero: 045-1212344\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: maija\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 09-22223333\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): 3\nlopetetaan...

    Huomaa, että jokaiseen nimeen voi liittyä vain yksi puhelinnumero. Jos samalle henkilölle lisätään uusi numero, se korvaa aiemmin lisätyn numeron.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tee puhelinluettelosta paranneltu versio, missä jokaisella henkilöllä voi olla useampia puhelinnumeroita. Ohjelma toimii kuten edellisessä tehtävässä, mutta nyt se listaa jokaisen numeron:

    komento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 040-5466745\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: emilia\nnumero: 045-1212344\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n040-5466745\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: maija\nei numeroa\nkomento (1 hae, 2 lisää, 3 lopeta): 2\nnimi: pekka\nnumero: 09-22223333\nok!\nkomento (1 hae, 2 lisää, 3 lopeta): 1\nnimi: pekka\n040-5466745\n09-22223333\nkomento (1 hae, 2 lisää, 3 lopeta): 3\nlopetetaan...

    Avaimien poistaminen sanakirjasta

    Sanakirjasta on mahdollista myös poistaa avain-arvo-pareja. Menetelmiä tähän on kaksi. Ensimmäinen näistä on komento del:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"Lehtori\"}\ndel henkilokunta[\"Arto\"]\nprint(henkilokunta)

    {'Antti': 'lehtori', 'Emilia': 'professori'}

    Jos komentoa del kutsutaan avaimille, joita sanakirjassa ei ole, seurauksena on virhe:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\ndel henkilokunta[\"Jukka\"]
    \n>>> del henkilokunta[\"Jukka\"]\nTraceback (most recent call last):\n  File \"\", line 1, in \nKeyError: 'Jukka'\n

    Ennen poistoa on siis syytä tarkistaa, että poistettava avain löytyy sanakirjasta:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\nif \"Jukka\" in henkilokunta:\n  del henkilokunta[\"Jukka\"]\n  print(\"Poistettiin\")\nelse:\n  print(\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\")

    Toinen vaihtoehto alkion poistamiseen on metodi pop:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\npoistettu = henkilokunta.pop(\"Arto\")\nprint(henkilokunta)\nprint(\"Poistettiin\", poistettu)

    {'Antti': 'lehtori', 'Emilia': 'professori'}\nPoistettiin lehtori

    Metodi pop siis myös palauttaa poistettua avainta vastaavan arvon.

    Oletusarvoisesti myös pop aiheuttaa virheen, jos sanakirjasta yritetään poistaa avain, jota siellä ei ole. Metodille on kuitenkin mahdollista antaa toisena parametrina oletusarvoinen paluuarvo, joka palautetaan siinä tilanteessa, kun poistettavaa ei löydy. Esimerkiksi arvo None, joka tarkoittaa \"ei mitään\", sopii hyvin tälläisiin tilanteisiin:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\npoistettu = henkilokunta.pop(\"Jukka\", None)\nif poistettu == None:\n  print(\"Poistettavaa henkilöä ei löytynyt henkilökunnasta\")\nelse:\n  print(\"Poistettiin\", poistettu)

    Poistettavaa henkilöä ei löytynyt henkilökunnasta

    Kannattaa huomata, että jos on tarvetta poistaa koko sanakirjan sisältö:

    henkilokunta = {\"Antti\": \"lehtori\", \"Emilia\": \"professori\", \"Arto\": \"lehtori\"}\nfor avain in henkilokunta:\n  del henkilokunta[avain]

    seurauksena on virheilmoitus

    RuntimeError: dictionary changed size during iteration

    Syynä on se, että käytäessä läpi rakennetta for-lauseella, ei sen sisältöä saa muuttaa.

    Koko sanakirjan tyhjennys onnistuu komennolla:

    henkilokunta.clear()

    Kirjoita funktio kaanna(sanakirja: dict), joka saa parametrikseen sanakirjan ja kääntää sen niin, että arvoista tulee avaimia ja päinvastoin.

    Esimerkki funktion käytöstä:

    s = {1: \"eka\", 2: \"toka\", 3: \"kolmas\", 4: \"neljas\"}\nkaanna(s)\nprint(s)

    {\"eka\": 1, \"toka\": 2, \"kolmas\": 3, \"neljas\": 4}

    Huomaa, että tämä pitää paikkansa myös parametrina oleville sanakirjoille!

    Jos kohtaat tehtävässä ongelmia, katso visualisaattorilla mitä koodisi tekee.

    Kirjoita funktio lukukirja(), joka palauttaa uuden sanakirjan. Palautettu rakenne sisältää avaimina luvut nollasta 99:ään. Sanakirjan arvoina ovat luvut kirjaimin kirjoitettuna. Katso esimerkkiä alla:

    luvut = lukukirja()\nprint(luvut[2])\nprint(luvut[11])\nprint(luvut[45])\nprint(luvut[99])\nprint(luvut[0])

    kaksi\nyksitoista\nneljäkymmentäviisi\nyhdensänkymmentäyhdeksän\nnolla

    HUOM! Älä muodosta jokaista lukusanaa yksitellen, vaan mieti, miten voisit hyödyntää silmukoita ja sanakirjaa jotenkin ratkaisussasi!

    Sanakirja tiedon ryhmittelyssä

    Voimme käyttää sanakirjaa myös tiedon ryhmittelyssä. Esimerkiksi seuraava koodi luo sanakirjan, jossa on tietoa henkilöstä:

    henkilo = {\"nimi\": \"Pirjo Python\", \"pituus\": 154, \"paino\": 61, \"ikä:\" 44}

    Tämä tarkoittaa, että henkilön nimi on Pirjo Python, pituus on 154, paino on 61 ja ikä on 44.\nHuomaa, että olisimme voineet tallentaa tiedot myös näin muuttujiin:

    nimi = \"Pirjo Python\"\npituus = 154\npaino = 61\nika = 44

    Sanakirjan etuna on kuitenkin, että se kokoaa kaikki samaan asiaan liittyvät tiedot yhteisen nimen alle, jonka kautta voimme viitata tietoihin. Periaatteessa lista tarjoaa saman edun:

    henkilo = [\"Pirjo Python\", 153, 61, 44]

    Listan huono puoli on kuitenkin, että ohjelmoijan on muistettava, mihin kohtaan listaa mikäkin arvo tallennetaan. Pitää siis muistaa esimerkiksi, että henkilo[2] tarkoittaa painoa ja henkilo[3] ikää. Sanakirjassa tätä ongelmaa ei ole, sillä kaikki sanakirjassa olevat erilliset tiedot on tallennettu selkeästi nimetyn avaimen taakse.

    Esimerkiksi voimme käsitellä henkilöitä näin:

    henkilo1 = {\"nimi\": \"Pirjo Python\", \"pituus\": 154, \"paino\": 61, \"ikä\": 44}\nhenkilo2 = {\"nimi\": \"Pekka Pythonen\", \"pituus\": 174, \"paino\": 103, \"ikä\": 31}\nhenkilo3 = {\"nimi\": \"Pedro Python\", \"pituus\": 191, \"paino\": 71, \"ikä\": 14}\n\nhenkilot = [henkilo1, henkilo2, henkilo3]\n\nfor henkilo in henkilot:\n    print(henkilo[\"nimi\"])\n\nyhteispituus = 0\nfor henkilo in henkilot:\n    yhteispituus += henkilo[\"pituus\"]\n\nprint(\"Keskipituus on\", yhteispituus / len(henkilot))

    Pirjo Python\nPekka Pythonen\nPedro Python\nKeskipituus on 173.0

    Kirjoita funktio lisaa_elokuva(rekisteri: list, nimi: str, ohjaaja: str, vuosi: int, pituus: int), joka lisää yhden elokuvaolion elokuvarekisteriin.

    Rekisteri on toteutettu listana, ja jokainen listan alkio on yksi sanakirja. Sanakirjassa on seuraavat avaimet:

      \n
    • nimi
    • \n
    • ohjaaja
    • \n
    • vuosi
    • \n
    • pituus
    • \n

    Arvot tulevat metodin parametreina.

    Esimerkki:

    rekisteri = []\nlisaa_elokuva(rekisteri, \"Pythonin viemää\", \"Pekka Python\", 2017, 116)\nlisaa_elokuva(rekisteri, \"Python lentokoneessa\", \"Renny Pytholin\", 2001, 94)\nprint(rekisteri)

    [{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pytholin\", \"vuosi\": 2001, \"pituus\": 94}]

    Kirjoita funktio etsi_elokuvat(rekisteri: list, hakusana: str), joka käsittelee edellisessä tehtävässä luotua elokuvarekisteriä. Funktio muodostaa uuden listan, jolle kopioidaan rekisteristä ne elokuvat, joiden nimestä löytyy hakusana. Pienet ja isot kirjaimet eivät merkitse haussa, joten hakusanalla paj pitää löytyä sekä elokuva Tappajahai että elokuva Pajatoiminnan historia.

    Esimerkki:

    rekisteri = [{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116},\n{\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pythonen\", \"vuosi\": 2001, \"pituus\": 94},\n{\"nimi\": \"Koodaajien yö\", \"ohjaaja\": \"M. Night Python\", \"vuosi\": 2011, \"pituus\": 101}]\n\nlista = etsi_elokuvat(rekisteri, \"python\")\nprint(lista)

    [{\"nimi\": \"Pythonin viemää\", \"ohjaaja\": \"Pekka Python\", \"vuosi\": 2017, \"pituus\": 116}, {\"nimi\": \"Python lentokoneessa\", \"ohjaaja\": \"Renny Pythonen\", \"vuosi\": 2001, \"pituus\": 94}]

    ","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/3-dictionary.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-5/4-tuple/page-data.json b/page-data/osa-5/4-tuple/page-data.json index f8d820c1e..a322b01cf 100644 --- a/page-data/osa-5/4-tuple/page-data.json +++ b/page-data/osa-5/4-tuple/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-5/4-tuple", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, millainen tietorakenne on tuple"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa tuplen erityyppisistä arvoista"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä eroa on tuplella ja listalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät esimerkkejä tyypillisistä tavoista käyttää tuplea"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuple eli monikko on listan tapainen tietorakenne. Sen olennaiset erot listaan ovat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuple merkitään kaarisuluilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":", lista merkitään hakasuluilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"]"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuple on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muuttumaton"}]},{"type":"text","value":", kun taas listan sisältö voi muuttua"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi luo tuplen, jossa on pisteen koordinaatit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen sisällä oleviin alkioihin viitataan samalla tavalla kuin listassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"x-koordinaatti:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"y-koordinaatti:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"x-koordinaatti: 10\ny-koordinaatti: 20"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen määrittelyn jälkeen sen arvoa ei kuitenkaan voi muuttaa, eli seuraava koodi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" toimi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npiste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: 'tuple' object does not support item assignment"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Muodosta tuple","tmcname":"osa05-17c_muodosta_tuple"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tee_tuple(x: int, y: int, z: int)"}]},{"type":"text","value":", joka muodostaa ja palauttaa parametrinaan saamistaan kokonaisluvuista tuplen seuraavien sääntöjen mukaaan:"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuplen ensimmäinen alkio on parametreista pienin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuplen toinen alkio on parametreista suurin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuplen kolmas alkio on parametrien summa"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tee_tuple"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(-1, 5, 7)"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vanhin henkilöistä","tmcname":"osa05-18_vanhin_henkiloista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhin(henkilot: list)"}]},{"type":"text","value":", joka saa parametrikseen listan henkilöitä esittäviä tupleja. Funktio etsii ja palauttaa vanhimman henkilön nimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilötuplessa on ensin henkilön nimi merkkijonona ja toisena alkiona henkilön "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"syntymävuosi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"h1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1977"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Einari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1953"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Essi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"h1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Maija"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vanhemmat henkilöt","tmcname":"osa05-19_vanhemmat_henkilot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan, että meillä on edelleen käytössä edellisessä tehtävässä esitellyt henkilö-tuplet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhemmat(henkilot: list, vuosi: int)"}]},{"type":"text","value":", joka palauttaa uuden listan, jolle on tallennettu kaikki "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ennen"}]},{"type":"text","value":" annettua vuotta syntyneet henkilöiden nimet parametrina saadulta henkilöiden listalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"h1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1977"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Einari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1953"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Essi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"h1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nvanhemmat_henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vanhemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1979"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vanhemmat_henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[ 'Arto', Maija' ]"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"miksi-tuple-on-olemassa","style":"position:relative;"},"children":[{"type":"text","value":"Miksi tuple on olemassa?"},{"type":"element","tagName":"a","properties":{"href":"#miksi-tuple-on-olemassa","ariaLabel":"miksi tuple on olemassa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen ideana on tallentaa jokin kiinteä kokoelma arvoja, jotka liittyvät toisiinsa. Esimerkiksi kun tallennamme pisteen, jossa on x- ja y-koordinaatti, tuple on luonteva valinta, koska pisteeseen kuuluu aina kaksi arvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voisimme sinänsä tallentaa pisteen myös listana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei kuitenkaan tuntuisi yhtä hyvältä ratkaisulta, koska lista sisältää peräkkäisiä alkioita jossakin järjestyksessä ja sen koko voi muuttua. Kun tallennamme pisteen, haluamme tallentaa nimenomaan x- ja y-koordinaatin eikä listaa koordinaateista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska tuple on muuttumaton, sitä voidaan käyttää sanakirjan avaimena (toisin kuin listaa).\nEsimerkiksi seuraava ohjelma luo sanakirjan, jonka avaimet ovat pisteitä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\napina\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaava koodi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" toimisi, jos käyttäisimme listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: unhashable type: 'list'"}]}]},{"type":"element","tagName":"h2","properties":{"id":"tuple-ilman-sulkuja","style":"position:relative;"},"children":[{"type":"text","value":"Tuple ilman sulkuja"},{"type":"element","tagName":"a","properties":{"href":"#tuple-ilman-sulkuja","ariaLabel":"tuple ilman sulkuja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen määrittelyssä ei ole pakko antaa sulkuja. Esimerkiksi seuraavat koodit toimivat samalla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän ansiosta voimme tehdä luontevasti funktion, joka palauttaa useita arvoja tuplena. Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"21"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"88"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"312"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\npienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" minmax"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Pienin luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pienin luku on 5 ja suurin on 312"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä funktio palauttaa kaksi arvoa tuplena, ja funktion paluuarvo vastaanotetaan \"yhtä aikaa\" kahteen muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" minmax"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa sijoitusoperaation vasemmalla puolella on tuple, jonka sisällä oleviin muuttujiin asetetaan funktion palauttaman tuplen sisältämät arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" minmax"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjojen yhteydessä esiteltiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"items"}]},{"type":"text","value":"-metodiin perustuvaa tapaa käydä läpi sanakirjan kaikki avaimet ja arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"avain:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässäkin Python käyttää taustalla tupleja: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanakirja.items()"}]},{"type":"text","value":" palauttaa yksi kerrallaan avain-arvo-parit tuplena, jonka ensimmäinen alkio on avain ja toinen arvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vielä yksi tuplen käyttötarkoitus on kahden muuttujan arvon vaihtaminen keskenään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku1"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä oleva koodi vaihtaa keskenään muuttujien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku1"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku2"}]},{"type":"text","value":" arvot, eli koodi toimii samoin kuin seuraava, apumuuttujaa käyttävä koodi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku1\nluku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku2\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" apu"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Opiskelijarekisteri","tmcname":"osa05-20_opiskelijarekisteri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtäväsarjassa toteutetaan yksinkertainen opiskelijarekisteri. Ennen ohjelmoinnin aloittamista kannattanee hetki miettiä, minkälaisen tietorakenteen tarvitset ohjelman tallentamien tietojen organisointiin."}]},{"type":"element","tagName":"h4","properties":{"id":"opiskelijoiden-lisays","style":"position:relative;"},"children":[{"type":"text","value":"opiskelijoiden lisäys"},{"type":"element","tagName":"a","properties":{"href":"#opiskelijoiden-lisays","ariaLabel":"opiskelijoiden lisays permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta ensin funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_opiskelija"}]},{"type":"text","value":" uuden opiskelijan lisäämiseen sekä ensimmäinen versio funktiosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":", joka tulostaa yhden opiskelijan tiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioita käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa tässä vaiheessa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Pekka:\n ei suorituksia\nLiisa:\n ei suorituksia\nei löytynyt ketään nimellä Jukka\n"}]}]},{"type":"element","tagName":"h4","properties":{"id":"suoritusten-lisays","style":"position:relative;"},"children":[{"type":"text","value":"suoritusten lisäys"},{"type":"element","tagName":"a","properties":{"href":"#suoritusten-lisays","ariaLabel":"suoritusten lisays permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"text","value":", jonka avulla opiskelijalle voidaan lisätä kurssin suoritus. Suoritus on tuple, joka koostuu kurssin nimestä ja arvosanasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijan tietojen tulostus muuttuu, kun suorituksia on lisätty:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Pekka:\n suorituksia 2 kurssilta:\n Ohpe 3\n Tira 2\n keskiarvo 2.5\n"}]}]},{"type":"element","tagName":"h4","properties":{"id":"arvosanojen-korotus","style":"position:relative;"},"children":[{"type":"text","value":"arvosanojen korotus"},{"type":"element","tagName":"a","properties":{"href":"#arvosanojen-korotus","ariaLabel":"arvosanojen korotus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suorituksen lisäämisen pitää toimia siten, että se jättää arvosanan 0 suoritukset huomiotta eikä alenna kurssilla ennestään olevaa arvosanaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Pekka:\n suorituksia 2 kurssilta:\n Ohpe 3\n Tira 2\n keskiarvo 2.5\n"}]}]},{"type":"element","tagName":"h4","properties":{"id":"kooste-opiskelijoista","style":"position:relative;"},"children":[{"type":"text","value":"kooste opiskelijoista"},{"type":"element","tagName":"a","properties":{"href":"#kooste-opiskelijoista","ariaLabel":"kooste opiskelijoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kooste"}]},{"type":"text","value":", joka tulostaa koosteen opiskelijoiden suorituksista. Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jtkt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkooste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostus näyttää seuraavalta"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"opiskelijoita 2\neniten suorituksia 3 Pekka\nparas keskiarvo 4.5 Liisa\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kirjainruudukko","tmcname":"osa05-21_kirjainruudukko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osan huipentaa suhteellisen haastava ongelmanratkaisua vaativa tehtävä, jonka voi ratkaista monella eri tavalla. Vaikka tehtävä on tupleja käsittelevässä luvussa, tupleja tässä tuskin kannattaa käyttää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa kirjainruudukon oheisten esimerkkien mukaisesti. Voit olettaa, että kerroksia on enintään 26."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrokset: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"CCCCC\nCBBBC\nCBABC\nCBBBC\nCCCCC\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrokset: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"DDDDDDD\nDCCCCCD\nDCBBBCD\nDCBABCD\nDCBBBCD\nDCCCCCD\nDDDDDDD\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"80966e29-402a-55c4-a555-49ec9f14d65c"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, millainen tietorakenne on tuple
    • \n
    • Osaat muodostaa tuplen erityyppisistä arvoista
    • \n
    • Tiedät, mitä eroa on tuplella ja listalla
    • \n
    • Tiedät esimerkkejä tyypillisistä tavoista käyttää tuplea
    • \n

    Tuple eli monikko on listan tapainen tietorakenne. Sen olennaiset erot listaan ovat:

      \n
    • Tuple merkitään kaarisuluilla ( ja ), lista merkitään hakasuluilla [ ja ]
    • \n
    • Tuple on muuttumaton, kun taas listan sisältö voi muuttua
    • \n

    Esimerkiksi seuraava koodi luo tuplen, jossa on pisteen koordinaatit:

    piste = (10, 20)

    Tuplen sisällä oleviin alkioihin viitataan samalla tavalla kuin listassa:

    piste = (10, 20)\nprint(\"x-koordinaatti:\", piste[0])\nprint(\"y-koordinaatti:\", piste[1])

    x-koordinaatti: 10\ny-koordinaatti: 20

    Tuplen määrittelyn jälkeen sen arvoa ei kuitenkaan voi muuttaa, eli seuraava koodi ei toimi:

    piste = (10, 20)\npiste[0] = 15

    TypeError: 'tuple' object does not support item assignment

    Tee funktio tee_tuple(x: int, y: int, z: int), joka muodostaa ja palauttaa parametrinaan saamistaan kokonaisluvuista tuplen seuraavien sääntöjen mukaaan:

      \n
    1. Tuplen ensimmäinen alkio on parametreista pienin
    2. \n
    3. Tuplen toinen alkio on parametreista suurin
    4. \n
    5. Tuplen kolmas alkio on parametrien summa
    6. \n

    Esimerkki funktion kutsumisesta:

    \nif __name__ == \"__main__\":\n    print(tee_tuple(5, 3, -1))\n

    (-1, 5, 7)

    Tee funktio vanhin(henkilot: list), joka saa parametrikseen listan henkilöitä esittäviä tupleja. Funktio etsii ja palauttaa vanhimman henkilön nimen.

    Henkilötuplessa on ensin henkilön nimi merkkijonona ja toisena alkiona henkilön syntymävuosi.

    Esimerkiksi:

    h1 = (\"Arto\", 1977)\nh2 = (\"Einari\", 1985)\nh3 = (\"Maija\", 1953)\nh4 = (\"Essi\", 1997)\nhlista = [h1, h2, h3, h4]\n\nprint(vanhin(hlista))

    Maija

    Oletetaan, että meillä on edelleen käytössä edellisessä tehtävässä esitellyt henkilö-tuplet.

    Kirjoita funktio vanhemmat(henkilot: list, vuosi: int), joka palauttaa uuden listan, jolle on tallennettu kaikki ennen annettua vuotta syntyneet henkilöiden nimet parametrina saadulta henkilöiden listalta.

    Esimerkiksi:

    h1 = (\"Arto\", 1977)\nh2 = (\"Einari\", 1985)\nh3 = (\"Maija\", 1953)\nh4 = (\"Essi\", 1997)\nhlista = [h1, h2, h3, h4]\n\nvanhemmat_henkilot = vanhemmat(hlista, 1979)\nprint(vanhemmat_henkilot)

    [ 'Arto', Maija' ]

    Miksi tuple on olemassa?

    Tuplen ideana on tallentaa jokin kiinteä kokoelma arvoja, jotka liittyvät toisiinsa. Esimerkiksi kun tallennamme pisteen, jossa on x- ja y-koordinaatti, tuple on luonteva valinta, koska pisteeseen kuuluu aina kaksi arvoa:

    piste = (10, 20)

    Voisimme sinänsä tallentaa pisteen myös listana:

    piste = [10, 20]

    Tämä ei kuitenkaan tuntuisi yhtä hyvältä ratkaisulta, koska lista sisältää peräkkäisiä alkioita jossakin järjestyksessä ja sen koko voi muuttua. Kun tallennamme pisteen, haluamme tallentaa nimenomaan x- ja y-koordinaatin eikä listaa koordinaateista.

    Koska tuple on muuttumaton, sitä voidaan käyttää sanakirjan avaimena (toisin kuin listaa).\nEsimerkiksi seuraava ohjelma luo sanakirjan, jonka avaimet ovat pisteitä:

    pisteet = {}\npisteet[(3, 5)] = \"apina\"\npisteet[(5, 0)] = \"banaani\"\npisteet[(1, 2)] = \"cembalo\"\nprint(pisteet[(3, 5)])
    \napina\n

    Vastaava koodi ei toimisi, jos käyttäisimme listoja:

    pisteet = {}\npisteet[[3, 5]] = \"apina\"\npisteet[[5, 0]] = \"banaani\"\npisteet[[1, 2]] = \"cembalo\"\nprint(pisteet[[3, 5]])

    TypeError: unhashable type: 'list'

    Tuple ilman sulkuja

    Tuplen määrittelyssä ei ole pakko antaa sulkuja. Esimerkiksi seuraavat koodit toimivat samalla tavalla:

    luvut = (1, 2, 3)
    luvut = 1, 2, 3

    Tämän ansiosta voimme tehdä luontevasti funktion, joka palauttaa useita arvoja tuplena. Tarkastellaan seuraavaa esimerkkiä:

    def minmax(lista):\n  return min(lista), max(lista)\n\nlista = [33, 5, 21, 7, 88, 312, 5]\n\npienin, suurin = minmax(lista)\nprint(f\"Pienin luku on {pienin} ja suurin on {suurin}\")

    Pienin luku on 5 ja suurin on 312

    Tämä funktio palauttaa kaksi arvoa tuplena, ja funktion paluuarvo vastaanotetaan \"yhtä aikaa\" kahteen muuttujaan:

    pienin, suurin = minmax(lista)

    Tässä tapauksessa sijoitusoperaation vasemmalla puolella on tuple, jonka sisällä oleviin muuttujiin asetetaan funktion palauttaman tuplen sisältämät arvot:

    (pienin, suurin) = minmax(lista)

    Sanakirjojen yhteydessä esiteltiin items-metodiin perustuvaa tapaa käydä läpi sanakirjan kaikki avaimet ja arvot:

    sanakirja = {}\n\nsanakirja[\"apina\"] = \"monkey\"\nsanakirja[\"banaani\"] = \"banana\"\nsanakirja[\"cembalo\"] = \"harpsichord\"\n\nfor avain, arvo in sanakirja.items():\n    print(\"avain:\", avain)\n    print(\"arvo:\", arvo)

    Tässäkin Python käyttää taustalla tupleja: sanakirja.items() palauttaa yksi kerrallaan avain-arvo-parit tuplena, jonka ensimmäinen alkio on avain ja toinen arvo.

    Vielä yksi tuplen käyttötarkoitus on kahden muuttujan arvon vaihtaminen keskenään:

    luku1, luku2 = luku2, luku1

    Yllä oleva koodi vaihtaa keskenään muuttujien luku1 ja luku2 arvot, eli koodi toimii samoin kuin seuraava, apumuuttujaa käyttävä koodi:

    apu = luku1\nluku1 = luku2\nluku2 = apu

    Tässä tehtäväsarjassa toteutetaan yksinkertainen opiskelijarekisteri. Ennen ohjelmoinnin aloittamista kannattanee hetki miettiä, minkälaisen tietorakenteen tarvitset ohjelman tallentamien tietojen organisointiin.

    opiskelijoiden lisäys

    Toteuta ensin funktio lisaa_opiskelija uuden opiskelijan lisäämiseen sekä ensimmäinen versio funktiosta tulosta, joka tulostaa yhden opiskelijan tiedot.

    Funktioita käytetään seuraavasti:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_opiskelija(opiskelijat, \"Liisa\")\ntulosta(opiskelijat, \"Pekka\")\ntulosta(opiskelijat, \"Liisa\")\ntulosta(opiskelijat, \"Jukka\")

    Ohjelma tulostaa tässä vaiheessa

    \nPekka:\n ei suorituksia\nLiisa:\n ei suorituksia\nei löytynyt ketään nimellä Jukka\n

    suoritusten lisäys

    Tee funktio lisaa_suoritus, jonka avulla opiskelijalle voidaan lisätä kurssin suoritus. Suoritus on tuple, joka koostuu kurssin nimestä ja arvosanasta:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 3))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Tira\", 2))\ntulosta(opiskelijat, \"Pekka\")

    Opiskelijan tietojen tulostus muuttuu, kun suorituksia on lisätty:

    \nPekka:\n suorituksia 2 kurssilta:\n  Ohpe 3\n  Tira 2\n keskiarvo 2.5\n

    arvosanojen korotus

    Suorituksen lisäämisen pitää toimia siten, että se jättää arvosanan 0 suoritukset huomiotta eikä alenna kurssilla ennestään olevaa arvosanaa:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 3))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Tira\", 2))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Lama\", 0))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 2))\ntulosta(opiskelijat, \"Pekka\")
    \nPekka:\n suorituksia 2 kurssilta:\n  Ohpe 3\n  Tira 2\n keskiarvo 2.5\n

    kooste opiskelijoista

    Tee funktio kooste, joka tulostaa koosteen opiskelijoiden suorituksista. Esimerkki:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_opiskelija(opiskelijat, \"Liisa\")\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Lama\", 1))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 1))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Tira\", 1))\nlisaa_suoritus(opiskelijat, \"Liisa\", (\"Ohpe\", 5))\nlisaa_suoritus(opiskelijat, \"Liisa\", (\"Jtkt\", 4))\nkooste(opiskelijat)

    tulostus näyttää seuraavalta

    \nopiskelijoita 2\neniten suorituksia 3 Pekka\nparas keskiarvo 4.5 Liisa\n

    Tämän osan huipentaa suhteellisen haastava ongelmanratkaisua vaativa tehtävä, jonka voi ratkaista monella eri tavalla. Vaikka tehtävä on tupleja käsittelevässä luvussa, tupleja tässä tuskin kannattaa käyttää.

    Tee ohjelma, joka tulostaa kirjainruudukon oheisten esimerkkien mukaisesti. Voit olettaa, että kerroksia on enintään 26.

    Kerrokset: 3

    \nCCCCC\nCBBBC\nCBABC\nCBBBC\nCCCCC\n

    Kerrokset: 4

    \nDDDDDDD\nDCCCCCD\nDCBBBCD\nDCBABCD\nDCBBBCD\nDCCCCCD\nDDDDDDD\n

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/4-tuple.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, millainen tietorakenne on tuple"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa tuplen erityyppisistä arvoista"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä eroa on tuplella ja listalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät esimerkkejä tyypillisistä tavoista käyttää tuplea"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuple eli monikko on listan tapainen tietorakenne. Sen olennaiset erot listaan ovat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuple merkitään kaarisuluilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":", lista merkitään hakasuluilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"]"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuple on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muuttumaton"}]},{"type":"text","value":", kun taas listan sisältö voi muuttua"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi luo tuplen, jossa on pisteen koordinaatit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen sisällä oleviin alkioihin viitataan samalla tavalla kuin listassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"x-koordinaatti:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"y-koordinaatti:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"x-koordinaatti: 10\ny-koordinaatti: 20"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen määrittelyn jälkeen sen arvoa ei kuitenkaan voi muuttaa, eli seuraava koodi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" toimi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npiste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: 'tuple' object does not support item assignment"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Muodosta tuple","tmcname":"osa05-17c_muodosta_tuple"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tee_tuple(x: int, y: int, z: int)"}]},{"type":"text","value":", joka muodostaa ja palauttaa parametrinaan saamistaan kokonaisluvuista tuplen seuraavien sääntöjen mukaaan:"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuplen ensimmäinen alkio on parametreista pienin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuplen toinen alkio on parametreista suurin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tuplen kolmas alkio on parametrien summa"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tee_tuple"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(-1, 5, 7)"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vanhin henkilöistä","tmcname":"osa05-18_vanhin_henkiloista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhin(henkilot: list)"}]},{"type":"text","value":", joka saa parametrikseen listan henkilöitä esittäviä tupleja. Funktio etsii ja palauttaa vanhimman henkilön nimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Henkilötuplessa on ensin henkilön nimi merkkijonona ja toisena alkiona henkilön "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"syntymävuosi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"h1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1977"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Einari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1953"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Essi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"h1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Maija"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vanhemmat henkilöt","tmcname":"osa05-19_vanhemmat_henkilot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan, että meillä on edelleen käytössä edellisessä tehtävässä esitellyt henkilö-tuplet."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhemmat(henkilot: list, vuosi: int)"}]},{"type":"text","value":", joka palauttaa uuden listan, jolle on tallennettu kaikki "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ennen"}]},{"type":"text","value":" annettua vuotta syntyneet henkilöiden nimet parametrina saadulta henkilöiden listalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"h1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1977"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Einari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1985"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1953"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nh4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Essi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1997"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"h1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" h4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\nvanhemmat_henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vanhemmat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1979"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vanhemmat_henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[ 'Arto', Maija' ]"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"miksi-tuple-on-olemassa","style":"position:relative;"},"children":[{"type":"text","value":"Miksi tuple on olemassa?"},{"type":"element","tagName":"a","properties":{"href":"#miksi-tuple-on-olemassa","ariaLabel":"miksi tuple on olemassa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen ideana on tallentaa jokin kiinteä kokoelma arvoja, jotka liittyvät toisiinsa. Esimerkiksi kun tallennamme pisteen, jossa on x- ja y-koordinaatti, tuple on luonteva valinta, koska pisteeseen kuuluu aina kaksi arvoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voisimme sinänsä tallentaa pisteen myös listana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei kuitenkaan tuntuisi yhtä hyvältä ratkaisulta, koska lista sisältää peräkkäisiä alkioita jossakin järjestyksessä ja sen koko voi muuttua. Kun tallennamme pisteen, haluamme tallentaa nimenomaan x- ja y-koordinaatin eikä listaa koordinaateista."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska tuple on muuttumaton, sitä voidaan käyttää sanakirjan avaimena (toisin kuin listaa).\nEsimerkiksi seuraava ohjelma luo sanakirjan, jonka avaimet ovat pisteitä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\napina\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaava koodi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" toimisi, jos käyttäisimme listoja:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"text","value":"\npisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TypeError: unhashable type: 'list'"}]}]},{"type":"element","tagName":"h2","properties":{"id":"tuple-ilman-sulkuja","style":"position:relative;"},"children":[{"type":"text","value":"Tuple ilman sulkuja"},{"type":"element","tagName":"a","properties":{"href":"#tuple-ilman-sulkuja","ariaLabel":"tuple ilman sulkuja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplen määrittelyssä ei ole pakko antaa sulkuja. Esimerkiksi seuraavat koodit toimivat samalla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän ansiosta voimme tehdä luontevasti funktion, joka palauttaa useita arvoja tuplena. Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"21"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"88"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"312"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\npienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" minmax"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Pienin luku on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pienin luku on 5 ja suurin on 312"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä funktio palauttaa kaksi arvoa tuplena, ja funktion paluuarvo vastaanotetaan \"yhtä aikaa\" kahteen muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" minmax"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa sijoitusoperaation vasemmalla puolella on tuple, jonka sisällä oleviin muuttujiin asetetaan funktion palauttaman tuplen sisältämät arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" minmax"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjojen yhteydessä esiteltiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"items"}]},{"type":"text","value":"-metodiin perustuvaa tapaa käydä läpi sanakirjan kaikki avaimet ja arvot:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"monkey\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banana\""}]},{"type":"text","value":"\nsanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"harpsichord\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"avain:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" avain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässäkin Python käyttää taustalla tupleja: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanakirja.items()"}]},{"type":"text","value":" palauttaa yksi kerrallaan avain-arvo-parit tuplena, jonka ensimmäinen alkio on avain ja toinen arvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vielä yksi tuplen käyttötarkoitus on kahden muuttujan arvon vaihtaminen keskenään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku1"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä oleva koodi vaihtaa keskenään muuttujien "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku1"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luku2"}]},{"type":"text","value":" arvot, eli koodi toimii samoin kuin seuraava, apumuuttujaa käyttävä koodi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku1\nluku1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" luku2\nluku2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" apu"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Opiskelijarekisteri","tmcname":"osa05-20_opiskelijarekisteri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtäväsarjassa toteutetaan yksinkertainen opiskelijarekisteri. Ennen ohjelmoinnin aloittamista kannattanee hetki miettiä, minkälaisen tietorakenteen tarvitset ohjelman tallentamien tietojen organisointiin."}]},{"type":"element","tagName":"h4","properties":{"id":"opiskelijoiden-lisays","style":"position:relative;"},"children":[{"type":"text","value":"opiskelijoiden lisäys"},{"type":"element","tagName":"a","properties":{"href":"#opiskelijoiden-lisays","ariaLabel":"opiskelijoiden lisays permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta ensin funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_opiskelija"}]},{"type":"text","value":" uuden opiskelijan lisäämiseen sekä ensimmäinen versio funktiosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":", joka tulostaa yhden opiskelijan tiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioita käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa tässä vaiheessa"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Pekka:\n ei suorituksia\nLiisa:\n ei suorituksia\nei löytynyt ketään nimellä Jukka\n"}]}]},{"type":"element","tagName":"h4","properties":{"id":"suoritusten-lisays","style":"position:relative;"},"children":[{"type":"text","value":"suoritusten lisäys"},{"type":"element","tagName":"a","properties":{"href":"#suoritusten-lisays","ariaLabel":"suoritusten lisays permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"text","value":", jonka avulla opiskelijalle voidaan lisätä kurssin suoritus. Suoritus on tuple, joka koostuu kurssin nimestä ja arvosanasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijan tietojen tulostus muuttuu, kun suorituksia on lisätty:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Pekka:\n suorituksia 2 kurssilta:\n Ohpe 3\n Tira 2\n keskiarvo 2.5\n"}]}]},{"type":"element","tagName":"h4","properties":{"id":"arvosanojen-korotus","style":"position:relative;"},"children":[{"type":"text","value":"arvosanojen korotus"},{"type":"element","tagName":"a","properties":{"href":"#arvosanojen-korotus","ariaLabel":"arvosanojen korotus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suorituksen lisäämisen pitää toimia siten, että se jättää arvosanan 0 suoritukset huomiotta eikä alenna kurssilla ennestään olevaa arvosanaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Pekka:\n suorituksia 2 kurssilta:\n Ohpe 3\n Tira 2\n keskiarvo 2.5\n"}]}]},{"type":"element","tagName":"h4","properties":{"id":"kooste-opiskelijoista","style":"position:relative;"},"children":[{"type":"text","value":"kooste opiskelijoista"},{"type":"element","tagName":"a","properties":{"href":"#kooste-opiskelijoista","ariaLabel":"kooste opiskelijoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kooste"}]},{"type":"text","value":", joka tulostaa koosteen opiskelijoiden suorituksista. Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Liisa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jtkt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkooste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulostus näyttää seuraavalta"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"opiskelijoita 2\neniten suorituksia 3 Pekka\nparas keskiarvo 4.5 Liisa\n"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kirjainruudukko","tmcname":"osa05-21_kirjainruudukko"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osan huipentaa suhteellisen haastava ongelmanratkaisua vaativa tehtävä, jonka voi ratkaista monella eri tavalla. Vaikka tehtävä on tupleja käsittelevässä luvussa, tupleja tässä tuskin kannattaa käyttää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka tulostaa kirjainruudukon oheisten esimerkkien mukaisesti. Voit olettaa, että kerroksia on enintään 26."}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrokset: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"CCCCC\nCBBBC\nCBABC\nCBBBC\nCCCCC\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kerrokset: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"DDDDDDD\nDCCCCCD\nDCBBBCD\nDCBABCD\nDCBBBCD\nDCCCCCD\nDDDDDDD\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"80966e29-402a-55c4-a555-49ec9f14d65c"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, millainen tietorakenne on tuple
    • \n
    • Osaat muodostaa tuplen erityyppisistä arvoista
    • \n
    • Tiedät, mitä eroa on tuplella ja listalla
    • \n
    • Tiedät esimerkkejä tyypillisistä tavoista käyttää tuplea
    • \n

    Tuple eli monikko on listan tapainen tietorakenne. Sen olennaiset erot listaan ovat:

      \n
    • Tuple merkitään kaarisuluilla ( ja ), lista merkitään hakasuluilla [ ja ]
    • \n
    • Tuple on muuttumaton, kun taas listan sisältö voi muuttua
    • \n

    Esimerkiksi seuraava koodi luo tuplen, jossa on pisteen koordinaatit:

    piste = (10, 20)

    Tuplen sisällä oleviin alkioihin viitataan samalla tavalla kuin listassa:

    piste = (10, 20)\nprint(\"x-koordinaatti:\", piste[0])\nprint(\"y-koordinaatti:\", piste[1])

    x-koordinaatti: 10\ny-koordinaatti: 20

    Tuplen määrittelyn jälkeen sen arvoa ei kuitenkaan voi muuttaa, eli seuraava koodi ei toimi:

    piste = (10, 20)\npiste[0] = 15

    TypeError: 'tuple' object does not support item assignment

    Tee funktio tee_tuple(x: int, y: int, z: int), joka muodostaa ja palauttaa parametrinaan saamistaan kokonaisluvuista tuplen seuraavien sääntöjen mukaaan:

      \n
    1. Tuplen ensimmäinen alkio on parametreista pienin
    2. \n
    3. Tuplen toinen alkio on parametreista suurin
    4. \n
    5. Tuplen kolmas alkio on parametrien summa
    6. \n

    Esimerkki funktion kutsumisesta:

    \nif __name__ == \"__main__\":\n    print(tee_tuple(5, 3, -1))\n

    (-1, 5, 7)

    Tee funktio vanhin(henkilot: list), joka saa parametrikseen listan henkilöitä esittäviä tupleja. Funktio etsii ja palauttaa vanhimman henkilön nimen.

    Henkilötuplessa on ensin henkilön nimi merkkijonona ja toisena alkiona henkilön syntymävuosi.

    Esimerkiksi:

    h1 = (\"Arto\", 1977)\nh2 = (\"Einari\", 1985)\nh3 = (\"Maija\", 1953)\nh4 = (\"Essi\", 1997)\nhlista = [h1, h2, h3, h4]\n\nprint(vanhin(hlista))

    Maija

    Oletetaan, että meillä on edelleen käytössä edellisessä tehtävässä esitellyt henkilö-tuplet.

    Kirjoita funktio vanhemmat(henkilot: list, vuosi: int), joka palauttaa uuden listan, jolle on tallennettu kaikki ennen annettua vuotta syntyneet henkilöiden nimet parametrina saadulta henkilöiden listalta.

    Esimerkiksi:

    h1 = (\"Arto\", 1977)\nh2 = (\"Einari\", 1985)\nh3 = (\"Maija\", 1953)\nh4 = (\"Essi\", 1997)\nhlista = [h1, h2, h3, h4]\n\nvanhemmat_henkilot = vanhemmat(hlista, 1979)\nprint(vanhemmat_henkilot)

    [ 'Arto', Maija' ]

    Miksi tuple on olemassa?

    Tuplen ideana on tallentaa jokin kiinteä kokoelma arvoja, jotka liittyvät toisiinsa. Esimerkiksi kun tallennamme pisteen, jossa on x- ja y-koordinaatti, tuple on luonteva valinta, koska pisteeseen kuuluu aina kaksi arvoa:

    piste = (10, 20)

    Voisimme sinänsä tallentaa pisteen myös listana:

    piste = [10, 20]

    Tämä ei kuitenkaan tuntuisi yhtä hyvältä ratkaisulta, koska lista sisältää peräkkäisiä alkioita jossakin järjestyksessä ja sen koko voi muuttua. Kun tallennamme pisteen, haluamme tallentaa nimenomaan x- ja y-koordinaatin eikä listaa koordinaateista.

    Koska tuple on muuttumaton, sitä voidaan käyttää sanakirjan avaimena (toisin kuin listaa).\nEsimerkiksi seuraava ohjelma luo sanakirjan, jonka avaimet ovat pisteitä:

    pisteet = {}\npisteet[(3, 5)] = \"apina\"\npisteet[(5, 0)] = \"banaani\"\npisteet[(1, 2)] = \"cembalo\"\nprint(pisteet[(3, 5)])
    \napina\n

    Vastaava koodi ei toimisi, jos käyttäisimme listoja:

    pisteet = {}\npisteet[[3, 5]] = \"apina\"\npisteet[[5, 0]] = \"banaani\"\npisteet[[1, 2]] = \"cembalo\"\nprint(pisteet[[3, 5]])

    TypeError: unhashable type: 'list'

    Tuple ilman sulkuja

    Tuplen määrittelyssä ei ole pakko antaa sulkuja. Esimerkiksi seuraavat koodit toimivat samalla tavalla:

    luvut = (1, 2, 3)
    luvut = 1, 2, 3

    Tämän ansiosta voimme tehdä luontevasti funktion, joka palauttaa useita arvoja tuplena. Tarkastellaan seuraavaa esimerkkiä:

    def minmax(lista):\n  return min(lista), max(lista)\n\nlista = [33, 5, 21, 7, 88, 312, 5]\n\npienin, suurin = minmax(lista)\nprint(f\"Pienin luku on {pienin} ja suurin on {suurin}\")

    Pienin luku on 5 ja suurin on 312

    Tämä funktio palauttaa kaksi arvoa tuplena, ja funktion paluuarvo vastaanotetaan \"yhtä aikaa\" kahteen muuttujaan:

    pienin, suurin = minmax(lista)

    Tässä tapauksessa sijoitusoperaation vasemmalla puolella on tuple, jonka sisällä oleviin muuttujiin asetetaan funktion palauttaman tuplen sisältämät arvot:

    (pienin, suurin) = minmax(lista)

    Sanakirjojen yhteydessä esiteltiin items-metodiin perustuvaa tapaa käydä läpi sanakirjan kaikki avaimet ja arvot:

    sanakirja = {}\n\nsanakirja[\"apina\"] = \"monkey\"\nsanakirja[\"banaani\"] = \"banana\"\nsanakirja[\"cembalo\"] = \"harpsichord\"\n\nfor avain, arvo in sanakirja.items():\n    print(\"avain:\", avain)\n    print(\"arvo:\", arvo)

    Tässäkin Python käyttää taustalla tupleja: sanakirja.items() palauttaa yksi kerrallaan avain-arvo-parit tuplena, jonka ensimmäinen alkio on avain ja toinen arvo.

    Vielä yksi tuplen käyttötarkoitus on kahden muuttujan arvon vaihtaminen keskenään:

    luku1, luku2 = luku2, luku1

    Yllä oleva koodi vaihtaa keskenään muuttujien luku1 ja luku2 arvot, eli koodi toimii samoin kuin seuraava, apumuuttujaa käyttävä koodi:

    apu = luku1\nluku1 = luku2\nluku2 = apu

    Tässä tehtäväsarjassa toteutetaan yksinkertainen opiskelijarekisteri. Ennen ohjelmoinnin aloittamista kannattanee hetki miettiä, minkälaisen tietorakenteen tarvitset ohjelman tallentamien tietojen organisointiin.

    opiskelijoiden lisäys

    Toteuta ensin funktio lisaa_opiskelija uuden opiskelijan lisäämiseen sekä ensimmäinen versio funktiosta tulosta, joka tulostaa yhden opiskelijan tiedot.

    Funktioita käytetään seuraavasti:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_opiskelija(opiskelijat, \"Liisa\")\ntulosta(opiskelijat, \"Pekka\")\ntulosta(opiskelijat, \"Liisa\")\ntulosta(opiskelijat, \"Jukka\")

    Ohjelma tulostaa tässä vaiheessa

    \nPekka:\n ei suorituksia\nLiisa:\n ei suorituksia\nei löytynyt ketään nimellä Jukka\n

    suoritusten lisäys

    Tee funktio lisaa_suoritus, jonka avulla opiskelijalle voidaan lisätä kurssin suoritus. Suoritus on tuple, joka koostuu kurssin nimestä ja arvosanasta:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 3))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Tira\", 2))\ntulosta(opiskelijat, \"Pekka\")

    Opiskelijan tietojen tulostus muuttuu, kun suorituksia on lisätty:

    \nPekka:\n suorituksia 2 kurssilta:\n  Ohpe 3\n  Tira 2\n keskiarvo 2.5\n

    arvosanojen korotus

    Suorituksen lisäämisen pitää toimia siten, että se jättää arvosanan 0 suoritukset huomiotta eikä alenna kurssilla ennestään olevaa arvosanaa:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 3))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Tira\", 2))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Lama\", 0))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 2))\ntulosta(opiskelijat, \"Pekka\")
    \nPekka:\n suorituksia 2 kurssilta:\n  Ohpe 3\n  Tira 2\n keskiarvo 2.5\n

    kooste opiskelijoista

    Tee funktio kooste, joka tulostaa koosteen opiskelijoiden suorituksista. Esimerkki:

    opiskelijat = {}\nlisaa_opiskelija(opiskelijat, \"Pekka\")\nlisaa_opiskelija(opiskelijat, \"Liisa\")\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Lama\", 1))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Ohpe\", 1))\nlisaa_suoritus(opiskelijat, \"Pekka\", (\"Tira\", 1))\nlisaa_suoritus(opiskelijat, \"Liisa\", (\"Ohpe\", 5))\nlisaa_suoritus(opiskelijat, \"Liisa\", (\"Jtkt\", 4))\nkooste(opiskelijat)

    tulostus näyttää seuraavalta

    \nopiskelijoita 2\neniten suorituksia 3 Pekka\nparas keskiarvo 4.5 Liisa\n

    Tämän osan huipentaa suhteellisen haastava ongelmanratkaisua vaativa tehtävä, jonka voi ratkaista monella eri tavalla. Vaikka tehtävä on tupleja käsittelevässä luvussa, tupleja tässä tuskin kannattaa käyttää.

    Tee ohjelma, joka tulostaa kirjainruudukon oheisten esimerkkien mukaisesti. Voit olettaa, että kerroksia on enintään 26.

    Kerrokset: 3

    \nCCCCC\nCBBBC\nCBABC\nCBBBC\nCCCCC\n

    Kerrokset: 4

    \nDDDDDDD\nDCCCCCD\nDCBBBCD\nDCBABCD\nDCBBBCD\nDCCCCCD\nDDDDDDD\n

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/4-tuple.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-5/page-data.json b/page-data/osa-5/page-data.json index 7a42348dd..3eaccd985 100644 --- a/page-data/osa-5/page-data.json +++ b/page-data/osa-5/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-5", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-5","title":"Osa 5"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-5","title":"Osa 5"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-5/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-6/1-tiedostojen-lukeminen/page-data.json b/page-data/osa-6/1-tiedostojen-lukeminen/page-data.json index 8db5002de..088ab58e6 100644 --- a/page-data/osa-6/1-tiedostojen-lukeminen/page-data.json +++ b/page-data/osa-6/1-tiedostojen-lukeminen/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-6/1-tiedostojen-lukeminen", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten tiedoston sisällön voi lukea Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä ovat tekstitiedosto ja CSV-tiedosto"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat purkaa ja käsitellä CSV-tiedoston sisällön ohjelmassa"}]},{"type":"text","value":"\n"}]}]},{"type":"comment","value":"vastaava teksti löytyy osioista 3-1, 5-1 ja 6-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Kurssin tehtävien tekemisestä"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvosteluperusteet"}]},{"type":"text","value":" toteavat, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä."}]},{"type":"text","value":" Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan"}]},{"type":"text","value":". Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi tavallinen ohjelmoinnin käyttötarkoitus on käsitellä tiedostoissa olevaa tietoa. Ohjelmat voivat lukea tietoa tiedostoista ja tallentaa tuloksia tiedostoihin. Tiedostojen avulla voimme käsitellä suuriakin aineistoja helposti automaattisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletamme tällä kurssilla, että käsiteltävät tiedostot ovat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tekstitiedostoja"}]},{"type":"text","value":" eli ne muodostuvat riveistä, joilla on tekstiä. Esimerkiksi kurssilla käytetty Visual Studio Code -editori käsittelee tekstitiedostoja. Huomaa, että esimerkiksi Word-dokumentti ei ole tekstitiedosto, vaan siinä on tekstin lisäksi muotoilutietoja ja sen käsittely ohjelmallisesti olisi vaikeaa."}]},{"type":"element","tagName":"h2","properties":{"id":"tiedostosta-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"Tiedostosta lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#tiedostosta-lukeminen","ariaLabel":"tiedostosta lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytetään esimerkkinä tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"esimerkki.txt"}]},{"type":"text","value":", jonka sisältönä on:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvä tapa käsitellä tiedostoja Pythonissa on käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":"-lausetta, jonka alkurivi avaa tiedoston. Tämän jälkeen tulee lohko, jonka sisällä tiedostoa voi käsitellä. Lohkon jälkeen tiedosto sulkeutuu automaattisesti, eikä sitä voi enää käsitellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi lukee ja tulostaa tiedoston sisällön:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sisalto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"read"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sisalto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tiedosto"}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tiedostokahva"}]},{"type":"text","value":", jonka kautta tiedostoa voi käsitellä avaamisen jälkeen. Tässä tapauksessa käytämme metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"read"}]},{"type":"text","value":", joka palauttaa koko tiedoston sisällön yhtenä merkkijonona. Tässä tapauksessa palautettu merkkijono on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Moi kaikki!\\nEsimerkkitiedostomme on kolmerivinen.\\nViimeinen rivi.\""}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedoston-sisallon-lapikaynti","style":"position:relative;"},"children":[{"type":"text","value":"Tiedoston sisällön läpikäynti"},{"type":"element","tagName":"a","properties":{"href":"#tiedoston-sisallon-lapikaynti","ariaLabel":"tiedoston sisallon lapikaynti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" on näppärä, jos halutaan esimerkiksi tulostaa tiedoston sisältö kokonaisuudessaan ruudulle. Usein haluamme kuitenkin käsitellä tiedostoa rivi kerrallaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää tiedoston sisällön lukemiseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa, joka käy läpi tiedoston rivit yksi kerrallaan – siis samaan tapaan kuin esimerkiksi listan läpikäynnissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki lukee saman tiedoston nyt käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa, poistaa joka rivin perästä rivinvaihdon ja laskee rivien yhteispituuden:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" pituus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rivien yhteispituus:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yhteispituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivi 1 Moi kaikki!\nRivi 2 Esimerkkitiedostomme on kolmerivinen.\nRivi 3 Viimeinen rivi.\nRivien yhteispituus: 63"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että rivien läpikäynnissä jokaisen rivin perässä on rivinvaihto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\\n"}]},{"type":"text","value":". Yllä oleva koodi kuitenkin poistaa rivinvaihdot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":"-funktiolla, joka korvaa rivinvaihdot tyhjillä merkkijonoilla. Tämän ansiosta tulostukseen ei tule ylimääräisiä rivivaihtoja ja ohjelma laskee oikein tiedoston rivien yhteispituuden."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suurin luku","tmcname":"osa06-01_suurin_luku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut.txt"}]},{"type":"text","value":" on tallennettu lukuja, yksi luku per rivi seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"108"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","parameter","variable"]},"children":[{"type":"text","value":"-10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":".jne"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":"."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin"}]},{"type":"text","value":", joka lukee tiedoston ja palauttaa suurimman tiedostosta löytyvän luvun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tiedoston nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut.txt"}]},{"type":"text","value":" eikä funktiolle anneta parametria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa heti tehtävän jälkeen olevaa ohjetta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa","style":"position:relative;"},"children":[{"type":"text","value":"Mitä jos VS code ei löydä tiedostoja koodia suoritettaessa?"},{"type":"element","tagName":"a","properties":{"href":"#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa","ariaLabel":"mita jos vs code ei loyda tiedostoja koodia suoritettaessa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos VS Code ei löydä tiedostoa suorittaessasi koodia (vihreää nappia painamalla) vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Mene asetuksiin valikosta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"File"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Preferences"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Settings"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Etsi muutettava kohta hakusanalla \"executeinfile\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Valitse välilehti "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Workspace"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Laita raksi kohtaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Python"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Terminal"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Execute In File Dir"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oikein tehtynä asetus näyttää suunilleen seuraavalta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/6e5d89f76dfd47af6f9ea67b097452e8/e405b/6_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 16.521739130434785%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVQI11XOQQqAMAwEwP5DknRNkNIilaInvXn3/8+RKIoOOe4uCQAQHYDWWq01/xS/UnLO07rP+9HbEEU8DQT+SCmZmZqlB77GRdvGUCa687+yiDAzVH3i8hb9MyZQJ0xv/gSEjBk5LU20dgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e5d89f76dfd47af6f9ea67b097452e8/a0b58/6_1_1.webp 230w","/static/6e5d89f76dfd47af6f9ea67b097452e8/bc10c/6_1_1.webp 460w","/static/6e5d89f76dfd47af6f9ea67b097452e8/966d8/6_1_1.webp 920w","/static/6e5d89f76dfd47af6f9ea67b097452e8/445df/6_1_1.webp 1380w","/static/6e5d89f76dfd47af6f9ea67b097452e8/9b2c8/6_1_1.webp 1566w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e5d89f76dfd47af6f9ea67b097452e8/81c8e/6_1_1.png 230w","/static/6e5d89f76dfd47af6f9ea67b097452e8/08a84/6_1_1.png 460w","/static/6e5d89f76dfd47af6f9ea67b097452e8/c0255/6_1_1.png 920w","/static/6e5d89f76dfd47af6f9ea67b097452e8/b1001/6_1_1.png 1380w","/static/6e5d89f76dfd47af6f9ea67b097452e8/e405b/6_1_1.png 1566w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/6e5d89f76dfd47af6f9ea67b097452e8/c0255/6_1_1.png","alt":"6 1 1","title":"6 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos edellinenkään ei toimi, voit kopioida kansiossa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"src"}]},{"type":"text","value":" olevan testaukseen käytetyn tiedoston sisällön"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/a57483e6084d39a596ee24c41a42de70/6297e/6_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 22.17391304347826%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAApklEQVQI123N0QqCQBAFUH/CUVlnt3JnVtcSyx1XikKCHur/PyhQih463KcLl5s87rcQRcLoa98037TO1czsFtba6p/kFESm8+U6HyTuT4FcY11Dtd9WVH4gol7keQ4Aa4OIySBjfxwkyKuLc90P5ImYiHeWtdmYRVmWSqmiKLIsAwCllDFGa50EiW3Xj3F6tjKQr5YlE28tozbrISKmaQoAiPg7fgOYxyLFEKvBSAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a57483e6084d39a596ee24c41a42de70/a0b58/6_1_2.webp 230w","/static/a57483e6084d39a596ee24c41a42de70/bc10c/6_1_2.webp 460w","/static/a57483e6084d39a596ee24c41a42de70/966d8/6_1_2.webp 920w","/static/a57483e6084d39a596ee24c41a42de70/445df/6_1_2.webp 1380w","/static/a57483e6084d39a596ee24c41a42de70/78de1/6_1_2.webp 1840w","/static/a57483e6084d39a596ee24c41a42de70/4b7c9/6_1_2.webp 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a57483e6084d39a596ee24c41a42de70/81c8e/6_1_2.png 230w","/static/a57483e6084d39a596ee24c41a42de70/08a84/6_1_2.png 460w","/static/a57483e6084d39a596ee24c41a42de70/c0255/6_1_2.png 920w","/static/a57483e6084d39a596ee24c41a42de70/b1001/6_1_2.png 1380w","/static/a57483e6084d39a596ee24c41a42de70/161ec/6_1_2.png 1840w","/static/a57483e6084d39a596ee24c41a42de70/6297e/6_1_2.png 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/a57483e6084d39a596ee24c41a42de70/c0255/6_1_2.png","alt":"6 1 2","title":"6 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suoraan tehtäväkansion alle"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/bc83b27162a67ce98f825821dc304a7e/6297e/6_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 26.956521739130434%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAt0lEQVQY023P3Q6CMAwFYN6DjqjtNta1MxlDdILGxBvf/4UMGO/4cm5Pf5pa79N0m+eHSBJJMSqzMKv3vaqklPq+995ba51zdkNkPR2COzallJzL8/lalketc86FWWJUIsfMqtq2bdd1sDF/AOaE2AzDUIYyjmPOWUQRiWidjYgxRlU1xnQ7DBGtmyWdy2ViZqL1ul8QSSQyMwDsVI1BxOZ6md65fsYlyTms3/6iznnd7JYBIITwBcyRLmVWTxqEAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/bc83b27162a67ce98f825821dc304a7e/a0b58/6_1_3.webp 230w","/static/bc83b27162a67ce98f825821dc304a7e/bc10c/6_1_3.webp 460w","/static/bc83b27162a67ce98f825821dc304a7e/966d8/6_1_3.webp 920w","/static/bc83b27162a67ce98f825821dc304a7e/445df/6_1_3.webp 1380w","/static/bc83b27162a67ce98f825821dc304a7e/78de1/6_1_3.webp 1840w","/static/bc83b27162a67ce98f825821dc304a7e/4b7c9/6_1_3.webp 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/bc83b27162a67ce98f825821dc304a7e/81c8e/6_1_3.png 230w","/static/bc83b27162a67ce98f825821dc304a7e/08a84/6_1_3.png 460w","/static/bc83b27162a67ce98f825821dc304a7e/c0255/6_1_3.png 920w","/static/bc83b27162a67ce98f825821dc304a7e/b1001/6_1_3.png 1380w","/static/bc83b27162a67ce98f825821dc304a7e/161ec/6_1_3.png 1840w","/static/bc83b27162a67ce98f825821dc304a7e/6297e/6_1_3.png 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/bc83b27162a67ce98f825821dc304a7e/c0255/6_1_3.png","alt":"6 1 3","title":"6 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"tiedostoja-lukevan-koodin-debuggaus","style":"position:relative;"},"children":[{"type":"text","value":"Tiedostoja lukevan koodin debuggaus"},{"type":"element","tagName":"a","properties":{"href":"#tiedostoja-lukevan-koodin-debuggaus","ariaLabel":"tiedostoja lukevan koodin debuggaus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos yrität käyttää VS Coden "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/1-vscode#debuggeri"},"children":[{"type":"text","value":"debuggeria"}]},{"type":"text","value":" tiedostoja lukevan koodin suorittamiseen, törmäät ikävään virheilmoitukseen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/b0c7745f7a4cc9c485a52d483e0aa290/eff3b/6_1_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 31.304347826086953%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAABMklEQVQY003PyU7CQACA4d7EBWQpLdDS6XSWzkw702VIIBESgyaYWBZRE60QUIzv/wguB0PyX7/Db2itx5PJcDiKYym4ICFXaSKkZFKGMhUyESKmlAEY+BD5EAGIMA5iThhjRpZlOhsooTjlmFAKgaBgPMSjHOS8kwtHx55itgqt4xIllEqNPM85F4xxSmhAyAziDabbiG8F28voBcGnvrNot+ZmY2E252azMBtFvSZ7XQADQ19dI4QJoX+Y3vXhgcbvcbYL5Z6pHYlKQEpAS0DWrd6yZi3r1uK0Hpm26wND6xxj8o9nrv8Zxl/p4CCSQ5R8cFV6aAPwm4eeLWfd7Dy2OqvzRtS2XQB+n4/x1IOvNHrw8dIBSwcUtlPYzsqF9+3e7dnltFKdVqo3JxfC7v7gb6ThPL16POKXAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b0c7745f7a4cc9c485a52d483e0aa290/a0b58/6_1_4.webp 230w","/static/b0c7745f7a4cc9c485a52d483e0aa290/bc10c/6_1_4.webp 460w","/static/b0c7745f7a4cc9c485a52d483e0aa290/966d8/6_1_4.webp 920w","/static/b0c7745f7a4cc9c485a52d483e0aa290/445df/6_1_4.webp 1380w","/static/b0c7745f7a4cc9c485a52d483e0aa290/78de1/6_1_4.webp 1840w","/static/b0c7745f7a4cc9c485a52d483e0aa290/5340a/6_1_4.webp 2072w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b0c7745f7a4cc9c485a52d483e0aa290/81c8e/6_1_4.png 230w","/static/b0c7745f7a4cc9c485a52d483e0aa290/08a84/6_1_4.png 460w","/static/b0c7745f7a4cc9c485a52d483e0aa290/c0255/6_1_4.png 920w","/static/b0c7745f7a4cc9c485a52d483e0aa290/b1001/6_1_4.png 1380w","/static/b0c7745f7a4cc9c485a52d483e0aa290/161ec/6_1_4.png 1840w","/static/b0c7745f7a4cc9c485a52d483e0aa290/eff3b/6_1_4.png 2072w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/b0c7745f7a4cc9c485a52d483e0aa290/c0255/6_1_4.png","alt":"6 1 4","title":"6 1 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syynä tälle on se, että debuggeri etsii tiedostoja tehtäväkansion juuresta eikä edes "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Execute In File Dir"}]},{"type":"text","value":" -asetus ei asiaa muuta. Helpoin ratkaisu ongelmaan on edellisessä luvussa kuvattu testaukseen käytetyn tiedoston kopioiminen tehtävähakemiston juureen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun olet kopioinut tiedostot tehtävähakemiston juureen, joudut ehkä vielä käynnistämään visual studio coden uudelleen jotta kaikki toimisi."}]},{"type":"element","tagName":"h2","properties":{"id":"csv-tiedoston-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"CSV-tiedoston lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#csv-tiedoston-lukeminen","ariaLabel":"csv tiedoston lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-tiedosto ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Comma Separated Values"}]},{"type":"text","value":") on tekstitiedosto, jonka jokaisella rivillä on tietyllä välimerkillä erotettua tietoa. Välimerkkinä on usein pilkku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tai puolipiste "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":", mutta mikä tahansa muukin merkki on periaatteessa mahdollinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-tiedostoja käytetään usein erilaisten aineistojen esittämiseen. Myös Excelin ja muiden vastaavien ohjelmien taulukot voidaan tallentaa CSV-muodossa, jolloin niitä on helppo käsitellä muilla ohjelmilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme lukea CSV-tiedoston rivit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla, mutta miten erottaa rivillä olevat tiedot toisistaan? Helppo tapa on käyttää merkkijonojen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":"-metodia: metodille annetaan haluttu välimerkki, ja se palauttaa tiedot välimerkin mukaan eroteltuna listana merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina,banaani,cembalo\""}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"apina\nbanaani\ncembalo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat.csv"}]},{"type":"text","value":", joka sisältää jokaisella rivillä aluksi opiskelijan nimen ja sen jälkeen tämän eri kursseista saamat arvosanat. Tiedot on erotettu toisistaan puolipisteillä."}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma käy läpi tiedoston rivit, jakaa jokaisen rivin osiin ja näyttää opiskelijan nimen sekä arvosanat."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvosanat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n arvosanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arvosanat:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nimi: Pekka\nArvosanat: ['5', '4', '5', '3', '4', '5', '5', '4', '2', '4']\nNimi: Paula\nArvosanat: ['3', '4', '2', '4', '4', '2', '3', '1', '3', '3']\nNimi: Pirjo\nArvosanat: ['4', '5', '5', '4', '5', '5', '4', '5', '4', '4']"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hedelmäkauppa","tmcname":"osa06-02_hedelmakauppa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hedelmat.csv"}]},{"type":"text","value":" on hedelmiä hintoineen seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"banaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6.50"}]},{"type":"text","value":"\nomena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"text","value":"\nappelsiini"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":".jne"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":"."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_hedelmat"}]},{"type":"text","value":", joka lukee hedelmätiedoston ja muodostaa siitä sanakirjan, jossa hedelmän nimi on avain ja hinta arvo. Hinnan tulee olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":"-arvona sanakirjassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tiedoston nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hedelmat.csv"}]},{"type":"text","value":" eikä funktiolle anneta parametria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopuksi funktio palauttaa tämän sanakirjan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" olevaa ohjetta."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Matriisi","tmcname":"osa06-03_matriisi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"matriisi.txt"}]},{"type":"text","value":" on seuraavan esimerkin kaltainen matriisi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1,0"}]},{"type":"text","value":",2,8,2,1,3,2,5,2,2,2\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9,2"}]},{"type":"text","value":",4,5,2,4,2,4,1,10,4,2\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":".jne"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":"."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maksimi"}]},{"type":"text","value":", jotka lukevat ja palauttavat nimensä mukaisesti matriisin kaikkien alkioiden summan ja suurimman alkion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita lisäksi funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivisummat"}]},{"type":"text","value":", joka palauttaa listassa kaikkien matriisin rivien summat. Esimerkiksi matriisille"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1,2"}]},{"type":"text","value":",3\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2,3"}]},{"type":"text","value":",4"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"funktio palauttaisi listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[6, 9]"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Voit kirjoittaa ohjelmaan myös muita funktioita – kannattaa siis miettiä, mitä kaikkia yhteisiä toimintoja kolmea funktiota varten vaaditaan. Huomaa, että tiedoston nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"matriisi.txt"}]},{"type":"text","value":" eikä tehtävänannossa määritellyille funktioille anneta parametreja. Itse lisäämäsi funktiot voivat hyödyntää myös parametreja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" olevaa ohjetta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"saman-tiedoston-lukeminen-moneen-kertaan","style":"position:relative;"},"children":[{"type":"text","value":"Saman tiedoston lukeminen moneen kertaan"},{"type":"element","tagName":"a","properties":{"href":"#saman-tiedoston-lukeminen-moneen-kertaan","ariaLabel":"saman tiedoston lukeminen moneen kertaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa ohjelman on tarvetta lukea sama tiedosto useampaan kertaan. Tarkastellaan esimerkkinä seuraavaa ohjelmaa, joka käsittelee henkilötietoja sisältävää tiedostoa:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"text","value":"\nPekka;40;Helsinki\nEmilia;34;Espoo\nErkki;42;Turku\nAntti;100;Helsinki\nLiisa;58;Suonenjoki\n"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan nimet"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# etsitään vanhin"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" vanhimman_ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n vanhin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma aiheuttaa erikoisen virheilmoituksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"Traceback "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"most recent call last"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nUnboundLocalError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" local variable "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'vanhin'"}]},{"type":"text","value":" referenced before assignment"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syynä virheelle on se, että jälkimmäistä for-silmukkaa ei suoriteta ollenkaan, sillä tiedoston voi lukea vain kerran. Tämän jälkeen ollaan päästy \"tiedoston loppuun\", ja vaikka yritetään lukea tiedostosta lisää jälkimmäisessä silmukassa, tietoon ei päästä enää käsiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto onkin avattava uudelleen komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"open"}]},{"type":"text","value":" toista lukukertaa varten:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan nimet"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# etsitään vanhin"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" vanhimman_ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n vanhin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleensä aina on kuitenkin parasta lukea tiedosto vain kerran ja tallentaa se muotoon, jota ohjelman toiminnallisuudet pystyvät hyödyntämään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luetaan tiedostosta henkilöt listaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan nimet"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# etsitään vanhin"}]},{"type":"text","value":"\nvanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" vanhimman_ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n vanhin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-csv-tiedoston-kasittelya","style":"position:relative;"},"children":[{"type":"text","value":"Lisää CSV-tiedoston käsittelyä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-csv-tiedoston-kasittelya","ariaLabel":"lisaa csv tiedoston kasittelya permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jatketaan opiskelijoiden arvosanoja sisältävän tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat.csv"}]},{"type":"text","value":" käsittelyä. Tiedosto näyttää siis seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma luo tiedoston perusteella sanakirjan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat"}]},{"type":"text","value":", jossa jokainen avain on opiskelijan nimi ja vastaava arvo on lista arvosanoista. Ohjelma muuttaa arvosanat kokonaisluvuiksi, jotta niitä on mukavampaa käsitellä myöhemmin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"arvosanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvosanat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" arvosana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Pekka': [5, 4, 5, 3, 4, 5, 5, 4, 2, 4], 'Paula': [3, 4, 2, 4, 4, 2, 3, 1, 3, 3], 'Pirjo': [4, 5, 5, 4, 5, 5, 4, 5, 4, 4]}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen voimme vaikkapa tulostaa analyysin arvosanoista käymällä läpi sanakirjan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat"}]},{"type":"text","value":" perusteella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n paras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n keskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": paras arvosana "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"paras"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", keskiarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":".2f"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka: paras arvosana 5, keskiarvo 4.10\nPaula: paras arvosana 4, keskiarvo 2.90\nPirjo: paras arvosana 5, keskiarvo 4.50"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa tutustua huolella esimerkkikoodiin. Se voi ensisilmäyksellä vaikuttaa monimutkaiselta, mutta ratkaisu on helposti sovellettavissa monenlaisiin datatiedostoihin."}]},{"type":"element","tagName":"h2","properties":{"id":"eroon-turhista-riveista-valilyonneista-ja-rivinvaihdoista","style":"position:relative;"},"children":[{"type":"text","value":"Eroon turhista riveistä, välilyönneistä ja rivinvaihdoista"},{"type":"element","tagName":"a","properties":{"href":"#eroon-turhista-riveista-valilyonneista-ja-rivinvaihdoista","ariaLabel":"eroon turhista riveista valilyonneista ja rivinvaihdoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tallentaneet Excelistä nimiä taulukon CSV-muodossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" sukunimi\nPekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" Python\nJaana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" Java\nHeikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" Haskell"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten tyypillistä, Excel on lisännyt sarakkeiden väliin erottimena toimivan puolipisteen lisäksi myös välilyönnin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Haluamme tulostaa listalla olevat sukunimet. Koska ensimmäinen rivi kertoo sarakkeiden otsikot, ohitamme sen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sukunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohitetaan otsikkorivi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"etunimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[' Python\\n', ' Java\\n', ' Haskell']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikkiin paitsi viimeiseen rivin sukunimeen on jäänyt mukaan rivinvaihtomerkki, ja jokaisen sukunimen alkuun on jäänyt ikävä välilyönti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääsisimme näistä eroon aiempien esimerkkien tapaan käyttämällä metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":", mutta parempi vaihtoehto tässä tilanteessa on käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"strip"}]},{"type":"text","value":", joka poistaa merkkijonon alusta ja lopusta ns. whitespace-merkit, eli välilyönnit, rivinvaihdot ja muut normaalina merkkinä tulostumattomat merkit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kokeillaan metodin toimintaa konsolissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" koe \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'koe'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\\ntesti\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'testi'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarvittava muutos ohjelmaan on helppo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sukunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"etunimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä oli otsikkorivi, ei huomioida!"}]},{"type":"text","value":"\n sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen tulostus on halutunlainen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Python', 'Java', 'Haskell']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonoilla on myös metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lstrip"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rstrip"}]},{"type":"text","value":", jotka poistavat ainoastaan merkkijonon vasemmalla tai oikealla puolella olevia merkkejä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" testimerkkijono \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rstrip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"' testimerkkijono'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" testimerkkijono \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lstrip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'testimerkkijono '"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"eri-tiedostoissa-olevien-tietojen-yhdistely","style":"position:relative;"},"children":[{"type":"text","value":"Eri tiedostoissa olevien tietojen yhdistely"},{"type":"element","tagName":"a","properties":{"href":"#eri-tiedostoissa-olevien-tietojen-yhdistely","ariaLabel":"eri tiedostoissa olevien tietojen yhdistely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On hyvin yleistä, että ohjelmassa tarvittava data on talletettu useaan erilliseen tiedostoon. Tarkastellaan esimerkkinä tilannetta, jossa yrityksen henkilöstön tiedot ovat omassa tiedostossaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tyontekijat.csv"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"hetu;nimi;osoite;kaupunki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"080488-123X;Pekka Mikkola;Vilppulantie 7;00700 Helsinki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"290274-044S;Liisa Marttinen;Mannerheimintie 100 A 10;00100 Helsinki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"010479-007Z;Arto Vihavainen;Pihapolku 4;01010 Kerava"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"010499-345K;Leevi Hellas;Tapiolantie 11 B;02000 Espoo"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Työntekijöiden palkat taas ovat talletettu omaan tiedostoonsa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkat.csv"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"hetu;palkka;bonus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"080488-123X;3300;0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"290274-044S;4150;200"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"010479-007Z;1300;1200"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molempien tiedostojen riveillä on ensin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"henkilötunnus"}]},{"type":"text","value":", joka kertoo kenen tiedoista on kyse. Käyttämällä henkilötunnusta yhdistävänä tekijänä, on helppo yhdistää henkilöiden nimet ja palkat toisiinsa, ja tehdä esimerkiksi ohjelma, joka tulostaa seuraavanlaisen näkymän henkilöiden ansioihin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"ansiot:\nPekka Mikkola 3300 euroa\nLiisa Marttinen 4350 euroa\nArto Vihavainen 2500 euroa\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käyttää aputietorakenteena kahta saankirjaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimet"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkat"}]},{"type":"text","value":", joissa molemmissa avaimena toimii henkilötunnus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tyontekijat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hetu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\npalkat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hetu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n palkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ansiot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" hetu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" hetu "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" palkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" palkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"hetu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" 0 euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma siis muodostaa ensin sanakirjat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimet"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkat"}]},{"type":"text","value":", joiden sisältö näyttää seuraavilta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'080488-123X'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Pekka Mikkola'"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'290274-044S'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Liisa Marttinen'"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'010479-007Z'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Arto Vihavainen'"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'010499-345K'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Leevi Hellas'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'080488-123X'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3300"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'290274-044S'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4350"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'010479-007Z'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopun for-silmukka yhdistää henkilöiden nimet ja niitä vastaavat palkat sanakirjojen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma huomioi myös tilanteen, jossa henkilön palkkatietoja ei ole olemassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että koska ohjelma käyttää aputietorakenteena sanakirjaa, ei henkilöitä vastaavien rivien järjestyksellä ole merkitystä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 1","tmcname":"osa06-04_kurssin_tulokset_osa1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käsittelee kahta CSV-muotoista tiedostoa. Toisessa on tieto opiskelijoista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"opnro;etunimi;sukunimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345678;pekka;peloton"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345687;jaana;javanainen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345699;liisa;virtanen"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ja toisessa opiskelijoiden viikoittaisesta tehtävien lukumäärästä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"opnro;v1;v2;v3;v4;v5;v6;v7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345678;4;1;1;4;5;2;4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345687;3;5;3;1;5;4;6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345699;10;2;2;7;10;2;2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molempien CSV-tiedostojen ensimmäinen rivi on otsikkorivi, joka kertoo kunkin kentän sisällön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy tiedostojen nimet ja tämän jälkeen tulostaa kunkin opiskelijan tehtävien yhteenlasketun määrän. Ohjelma toimii seuraavasti, kun tiedostojen sisältö on yllä oleva:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\nTehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\npekka peloton 21\njaana javanainen 27\nliisa virtanen 35"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Ohjelman testaileminen on toivottoman hidasta, jos käyttäjä joutuu kirjoittamaan syötteen aina käsin. Testausvaiheessa syötteet kannattaakin antaa \"kovakoodaamalla\" ne esim. seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne ei tulla"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opiskelijatiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tehtävätiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kovakoodatut syötteet"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelijat1.csv\""}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tehtavat1.csv\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman varsinainen toiminnallisuus on nyt \"piilotettu\" ehdon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"-haaraan, jota ei suoriteta koskaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos taas halutaan nopeasti tarkastaa, toimiiko ohjelma myös käyttäjän kirjoittaessa syötteen, voidaan arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" muuttaa arvoksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opiskelijatiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tehtävätiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne ei tulla!"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelijat1.csv\""}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tehtavat1.csv\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun koodi on kunnossa, voi ehtorakenteen poistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Toinen huomio"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 2","tmcname":"osa06-05_kurssin_tulokset_osa2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellinen tehtävä laajenee vielä siten, että myös opiskelijan koepisteet luetaan CSV-tiedostosta. Tiedoston sisältö näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"opnro;k1;k2;k3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345678;4;1;4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345687;3;5;3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345699;10;2;2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi opiskelija jonka opiskelijanumero on 12345678 on saanut kokeesta 4+1+4 eli yhteensä 9 pistettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kysyy tiedostojen nimet ja tulostaa jokaisen opiskelijan arvosanan:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\nTehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\nKoepisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koepisteet1.csv"}]},{"type":"text","value":"\npekka peloton 0\njaana javanainen 1\nliisa virtanen 3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtyjen harjoitustehtävien määrästä saa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pisteitä"}]},{"type":"text","value":" siten, että vähintään 10 % tehtävämäärästä tuo 1 pisteen, vähintään 20% tuo 2 pistettä jne., ja 100 % eli 40 harjoitustehtävää tuo 10 pistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin arvosana määräytyy kokeen ja harjoituspisteiden summan perusteella seuraavan taulukon mukaan:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"kokeen pisteet + harjoitusten pisteet"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"arvosana"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0-14"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0 (eli hylätty)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"15-17"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"18-20"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"21-23"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"24-27"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"28-"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 3","tmcname":"osa06-06_kurssin_tulokset_osa3"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä muotoillaan edellisen tehtävän tulostus parempaan muotoon:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\nTehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\nKoepisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koepisteet1.csv"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"nimi teht_lkm teht_pist koe_pist yht_pist arvosana\npekka peloton 21 5 9 14 0\njaana javanainen 27 6 11 17 1\nliisa virtanen 35 8 14 22 3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisella rivillä siis tulostetaan opiskelijan tehtävien lukumäärä, tehtävistä saatavat pisteet, kokeen pisteet, yhteispisteet (koe+harjoitukset) sekä arvosana \"siististi\" siten, että tulostus on jaoteltu sarakkeisiin. Nimisarakkeen leveys on 30 merkkiä ja muiden sarakkeiden leveys on tasan 10 merkkiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävässä kannattaa käyttää "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/5-tulostuksen-muotoilu"},"children":[{"type":"text","value":"osassa 4"}]},{"type":"text","value":" käsiteltyjä f-merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että merkkijonojen ja lukujen tulostaminen noudattaa hieman erilaista logiikkaa f-merkkijonoissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":">10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"python jatkuu\n pythonjatkuu\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvoisesti siis merkkijono sisentyy määritellyn levyisen alueen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"vasempaan"}]},{"type":"text","value":" reunaan. Merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"voidaan ohjata tulostus sisentymään oikeaan reunaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lukuja tulostettaessa logiikka on päinvastainen"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"<10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":" 42jatkuu\n42 jatkuu\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvo lukujen yhteydessä on tulostuksen sisentyminen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"oikeaan"}]},{"type":"text","value":" reunaan. Merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" voidaan ohjata luvun tulostus sisentymään vasempaan reunaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Spell checker","tmcname":"osa06-07_spellchecker"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. Seuraavassa kaksi käyttöesimerkkiä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"We use ptython to make a spell checker"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"We use *ptython* to make a spell checker\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"This is acually a good and usefull program"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"This is *acually* good and *usefull* program\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjainten koolla ei ole merkitystä ohjelman toiminnan kannalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tunnistaa oikein kirjoitetut sanat käyttämällä tehtäväpohjassa olevaa tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"wordlist.txt"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Toinen huomio"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Reseptihaku","tmcname":"osa06-08_reseptihaku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään ohjelma, joka tarjoaa käyttäjälle mahdollisuuden reseptien hakuun reseptin nimen, valmistusajan tai raaka-aineen nimen perusteella. Ohjelma lukee reseptit käyttäjän antamasta tiedostosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokainen resepti koostuu kolmesta tai useammasta rivistä reseptitiedostossa. Ensimmäisellä rivillä on reseptin nimi, toisella rivillä reseptin valmistusaika (kokonaisluku), ja kolmas ja sitä seuraavat rivit kertovat reseptin raaka-aineet. Reseptin raaka-aineiden kuvaus päättyy tyhjään riviin, poislukien viimeinen resepti. Tiedostossa voi olla useampia reseptejä. Alla kuvattuna esimerkkitiedosto."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"Lettutaikina\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nmaito\nkananmuna\njauho\nsokeri\nsuola\nvoi\n\nLihapullat\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\njauheliha\nkananmuna\nkorppujauho\n\nTofurullat\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\ntofu\nriisi\nvesi\nporkkana\nkurkku\navokado\nwasabi\n\nPullataikina\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"text","value":"\nmaito\nhiiva\nkananmuna\nsuola\nsokeri\nkardemumma\nvoi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" tässä tehtävässä lienee järkevintä lukea ensin tiedoston rivit listalle ja käsitellä sitten tätä listaa tehtävän edellyttämällä tavalla."}]},{"type":"element","tagName":"h4","properties":{"id":"reseptien-haku-nimen-perusteella","style":"position:relative;"},"children":[{"type":"text","value":"reseptien haku nimen perusteella"},{"type":"element","tagName":"a","properties":{"href":"#reseptien-haku-nimen-perusteella","ariaLabel":"reseptien haku nimen perusteella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_nimi(tiedosto: str, sana: str)"}]},{"type":"text","value":" joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden nimessä esiintyy toisena parametrina annettu merkkijono. Funktio palauttaa listan, jossa kutakin löydettyä reseptiä vastaa merkkijono, joka kertoo reseptin nimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"loydetyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"reseptit1.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pulla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" resepti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loydetyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lihapullat\nPullataikina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että hakusanojen kirjainten koolla ei ole merkitystä, eli hakusana "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pulla"}]},{"type":"text","value":" löytää myös reseptin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Pullataikina"}]},{"type":"text","value":", joka alkaa isolla kirjaimella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]},{"type":"element","tagName":"h4","properties":{"id":"reseptien-hakeminen-valmistusajan-perusteella","style":"position:relative;"},"children":[{"type":"text","value":"reseptien hakeminen valmistusajan perusteella"},{"type":"element","tagName":"a","properties":{"href":"#reseptien-hakeminen-valmistusajan-perusteella","ariaLabel":"reseptien hakeminen valmistusajan perusteella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_aika(tiedosto: str, aika: int)"}]},{"type":"text","value":" joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden valmistusaika on korkeintaan parametrina kerrottu minuuttimäärä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana, nyt kerrotaan myös reseptin valmistumisaika. Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"loydetyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"reseptit1.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" resepti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loydetyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lettutaikina, valmistusaika 15 min"}]}]},{"type":"element","tagName":"h4","properties":{"id":"reseptien-hakeminen-raaka-aineen-perusteella","style":"position:relative;"},"children":[{"type":"text","value":"reseptien hakeminen raaka-aineen perusteella"},{"type":"element","tagName":"a","properties":{"href":"#reseptien-hakeminen-raaka-aineen-perusteella","ariaLabel":"reseptien hakeminen raaka aineen perusteella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Varoitus"}]},{"type":"text","value":" tämä osa on edellisiä selvästi haastavampi. Jos tehtävä ei lähde heti aukenemaan, kannattanee tehdä ensin osan muut tehtävät ja palata lopuksi takaisin tähän. Huomaa, että voit lähettää moniosaisessa tehtävässä palvelimelle myös yksittäiset osat"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_raakaaine(tiedosto: str, aine: str)"}]},{"type":"text","value":" joka hakee parametrina annetun nimisestä tiedostosta reseptit, jotka sisältävät toisena parametrina annetun raaka-aineen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana. Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"loydetyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_raakaaine"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"reseptit1.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"maito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" resepti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loydetyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lettutaikina, valmistusaika 15 min\nPullataikina, valmistusaika 60 min"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaupunkipyörät","tmcname":"osa06-09_kaupunkipyorat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään muutama funktio, joiden avulla voidaan tarkastella "},{"type":"element","tagName":"a","properties":{"href":"https://kaupunkipyorat.hsl.fi/fi","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"kaupunkipyörien"}]},{"type":"text","value":" asemien sijaintia sisältävää tiedostoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostot näyttävät seuraavilta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Longitude;Latitude;FID;name;total_slot;operative;id"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"24.950292890004903;60.155444793742276;1;Kaivopuisto;30;Yes;001"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"24.956347471358754;60.160959093887129;2;Laivasillankatu;12;Yes;002"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"24.944927399779715;60.158189199971673;3;Kapteeninpuistikko;16;Yes;003"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutakin asemaa kohti tiedostossa on yksi rivi, joka kertoo aseman koordinaatit, aseman nimen ja muuta tunnistetietoa."}]},{"type":"element","tagName":"h4","properties":{"id":"asemien-valinen-etaisyys","style":"position:relative;"},"children":[{"type":"text","value":"asemien välinen etäisyys"},{"type":"element","tagName":"a","properties":{"href":"#asemien-valinen-etaisyys","ariaLabel":"asemien valinen etaisyys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ensin funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_asematiedot(tiedosto: str)"}]},{"type":"text","value":", joka lukee asematiedot tiedostosta ja palauttaa ne sanakirjana, joka näyttää tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"{\n \"Kaivopuisto: (24.950292890004903, 60.155444793742276),\n \"Laivasillankatu: (24.956347471358754, 60.160959093887129),\n \"Kapteeninpuistikko: (24.944927399779715, 60.158189199971673)\n}\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli sanakirjan avaimena on aseman nimi ja arvona tuple, joka koostuu aseman koordinaateista, ensimmäisenä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Longitude"}]},{"type":"text","value":" ja toisena "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Latitude"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee seuraavaksi funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etaisyys(asemat: dict, asema1: str, asema2: str)"}]},{"type":"text","value":", joka palauttaa parametrina kerrottujen asemien välisen etäisyyden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Etäisyys lasketaan seuraavalla kaavalla (hyödyntäen Pythagoraan lausetta):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä rivi tarvitaan, jotta saadaan käyttöön metodi sqrt"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\nx_kilometreina "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"longitude1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" longitude2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55.26"}]},{"type":"text","value":"\ny_kilometreina "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"latitude1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" latitude2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"111.2"}]},{"type":"text","value":"\netaisyys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x_kilometreina"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" y_kilometreina"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asemat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_asematiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'stations1.csv'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etaisyys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asemat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Designmuseo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hietalahdentori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etaisyys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asemat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viiskulma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kaivopuisto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0.9032737292463177\n0.7753594392019532"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]},{"type":"element","tagName":"h4","properties":{"id":"pisin-valimatka","style":"position:relative;"},"children":[{"type":"text","value":"pisin välimatka"},{"type":"element","tagName":"a","properties":{"href":"#pisin-valimatka","ariaLabel":"pisin valimatka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin_etaisyys(asemat: dict)"}]},{"type":"text","value":", joka selvittää, mitkä kaksi asemaa ovat kauimpana toisistaan. Funktio palauttaa tuplen, jonka ensimmäiset kaksi arvoa kertovat asemien nimet ja kolmas arvo niiden välisen etäisyyden."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asemat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_asematiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'stations1.csv'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nasema1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" asema2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suurin_etaisyys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asemat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" asema2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laivasillankatu Hietalahdentori 1.478708873076181"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten tiedoston sisällön voi lukea Pythonissa
    • \n
    • Tiedät, mitä ovat tekstitiedosto ja CSV-tiedosto
    • \n
    • Osaat purkaa ja käsitellä CSV-tiedoston sisällön ohjelmassa
    • \n

    Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

    Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten arvosteluperusteet toteavat, kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä.

    Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää.

    Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta.

    Yksi tavallinen ohjelmoinnin käyttötarkoitus on käsitellä tiedostoissa olevaa tietoa. Ohjelmat voivat lukea tietoa tiedostoista ja tallentaa tuloksia tiedostoihin. Tiedostojen avulla voimme käsitellä suuriakin aineistoja helposti automaattisesti.

    Oletamme tällä kurssilla, että käsiteltävät tiedostot ovat tekstitiedostoja eli ne muodostuvat riveistä, joilla on tekstiä. Esimerkiksi kurssilla käytetty Visual Studio Code -editori käsittelee tekstitiedostoja. Huomaa, että esimerkiksi Word-dokumentti ei ole tekstitiedosto, vaan siinä on tekstin lisäksi muotoilutietoja ja sen käsittely ohjelmallisesti olisi vaikeaa.

    Tiedostosta lukeminen

    Käytetään esimerkkinä tiedostoa esimerkki.txt, jonka sisältönä on:

    Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi.

    Hyvä tapa käsitellä tiedostoja Pythonissa on käyttää with-lausetta, jonka alkurivi avaa tiedoston. Tämän jälkeen tulee lohko, jonka sisällä tiedostoa voi käsitellä. Lohkon jälkeen tiedosto sulkeutuu automaattisesti, eikä sitä voi enää käsitellä.

    Esimerkiksi seuraava koodi lukee ja tulostaa tiedoston sisällön:

    with open(\"esimerkki.txt\") as tiedosto:\n    sisalto = tiedosto.read()\n    print(sisalto)

    Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi.

    Koodissa muuttuja tiedosto on tiedostokahva, jonka kautta tiedostoa voi käsitellä avaamisen jälkeen. Tässä tapauksessa käytämme metodia read, joka palauttaa koko tiedoston sisällön yhtenä merkkijonona. Tässä tapauksessa palautettu merkkijono on seuraava:

    \"Moi kaikki!\\nEsimerkkitiedostomme on kolmerivinen.\\nViimeinen rivi.\"

    Tiedoston sisällön läpikäynti

    Metodi read on näppärä, jos halutaan esimerkiksi tulostaa tiedoston sisältö kokonaisuudessaan ruudulle. Usein haluamme kuitenkin käsitellä tiedostoa rivi kerrallaan.

    Voimme käyttää tiedoston sisällön lukemiseen for-silmukkaa, joka käy läpi tiedoston rivit yksi kerrallaan – siis samaan tapaan kuin esimerkiksi listan läpikäynnissä.

    Seuraava esimerkki lukee saman tiedoston nyt käyttäen for-silmukkaa, poistaa joka rivin perästä rivinvaihdon ja laskee rivien yhteispituuden:

    with open(\"esimerkki.txt\") as tiedosto:\n    laskuri = 0\n    yhteispituus = 0\n\n    for rivi in tiedosto:\n        rivi = rivi.replace(\"\\n\", \"\")\n        laskuri += 1\n        print(\"Rivi\", laskuri, rivi)\n        pituus = len(rivi)\n        yhteispituus += pituus\n\nprint(\"Rivien yhteispituus:\", yhteispituus)

    Rivi 1 Moi kaikki!\nRivi 2 Esimerkkitiedostomme on kolmerivinen.\nRivi 3 Viimeinen rivi.\nRivien yhteispituus: 63

    Huomaa, että rivien läpikäynnissä jokaisen rivin perässä on rivinvaihto \\n. Yllä oleva koodi kuitenkin poistaa rivinvaihdot replace-funktiolla, joka korvaa rivinvaihdot tyhjillä merkkijonoilla. Tämän ansiosta tulostukseen ei tule ylimääräisiä rivivaihtoja ja ohjelma laskee oikein tiedoston rivien yhteispituuden.

    Tiedostoon luvut.txt on tallennettu lukuja, yksi luku per rivi seuraavan esimerkin mukaisesti:

    2\n45\n108\n3\n-10\n1100\n...jne...

    Kirjoita funktio suurin, joka lukee tiedoston ja palauttaa suurimman tiedostosta löytyvän luvun.

    Huomaa, että tiedoston nimi on aina luvut.txt eikä funktiolle anneta parametria.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa heti tehtävän jälkeen olevaa ohjetta.

    Mitä jos VS code ei löydä tiedostoja koodia suoritettaessa?

    Jos VS Code ei löydä tiedostoa suorittaessasi koodia (vihreää nappia painamalla) vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa:

      \n
    • Mene asetuksiin valikosta File -> Preferences -> Settings
    • \n
    • Etsi muutettava kohta hakusanalla \"executeinfile\"
    • \n
    • Valitse välilehti Workspace
    • \n
    • Laita raksi kohtaan Python -> Terminal -> Execute In File Dir
    • \n

    Oikein tehtynä asetus näyttää suunilleen seuraavalta:

    \n \n \n \n \n \n \"6\n \n \n

    Jos edellinenkään ei toimi, voit kopioida kansiossa src olevan testaukseen käytetyn tiedoston sisällön

    \n \n \n \n \n \n \"6\n \n \n

    suoraan tehtäväkansion alle

    \n \n \n \n \n \n \"6\n \n \n

    Tiedostoja lukevan koodin debuggaus

    Jos yrität käyttää VS Coden debuggeria tiedostoja lukevan koodin suorittamiseen, törmäät ikävään virheilmoitukseen:

    \n \n \n \n \n \n \"6\n \n \n

    Syynä tälle on se, että debuggeri etsii tiedostoja tehtäväkansion juuresta eikä edes Execute In File Dir -asetus ei asiaa muuta. Helpoin ratkaisu ongelmaan on edellisessä luvussa kuvattu testaukseen käytetyn tiedoston kopioiminen tehtävähakemiston juureen.

    Kun olet kopioinut tiedostot tehtävähakemiston juureen, joudut ehkä vielä käynnistämään visual studio coden uudelleen jotta kaikki toimisi.

    CSV-tiedoston lukeminen

    CSV-tiedosto (Comma Separated Values) on tekstitiedosto, jonka jokaisella rivillä on tietyllä välimerkillä erotettua tietoa. Välimerkkinä on usein pilkku , tai puolipiste ;, mutta mikä tahansa muukin merkki on periaatteessa mahdollinen.

    CSV-tiedostoja käytetään usein erilaisten aineistojen esittämiseen. Myös Excelin ja muiden vastaavien ohjelmien taulukot voidaan tallentaa CSV-muodossa, jolloin niitä on helppo käsitellä muilla ohjelmilla.

    Voimme lukea CSV-tiedoston rivit for-silmukalla, mutta miten erottaa rivillä olevat tiedot toisistaan? Helppo tapa on käyttää merkkijonojen split-metodia: metodille annetaan haluttu välimerkki, ja se palauttaa tiedot välimerkin mukaan eroteltuna listana merkkijonoja.

    Esimerkki metodin käytöstä:

    teksti = \"apina,banaani,cembalo\"\nsanat = teksti.split(\",\")\nfor sana in sanat:\n    print(sana)

    apina\nbanaani\ncembalo

    Tarkastellaan esimerkkinä tiedostoa arvosanat.csv, joka sisältää jokaisella rivillä aluksi opiskelijan nimen ja sen jälkeen tämän eri kursseista saamat arvosanat. Tiedot on erotettu toisistaan puolipisteillä.

    Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4

    Seuraava ohjelma käy läpi tiedoston rivit, jakaa jokaisen rivin osiin ja näyttää opiskelijan nimen sekä arvosanat.

    with open(\"arvosanat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        rivi = rivi.replace(\"\\n\", \"\")\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        arvosanat = osat[1:]\n        print(\"Nimi:\", nimi)\n        print(\"Arvosanat:\", arvosanat)

    Nimi: Pekka\nArvosanat: ['5', '4', '5', '3', '4', '5', '5', '4', '2', '4']\nNimi: Paula\nArvosanat: ['3', '4', '2', '4', '4', '2', '3', '1', '3', '3']\nNimi: Pirjo\nArvosanat: ['4', '5', '5', '4', '5', '5', '4', '5', '4', '4']

    Tiedostossa hedelmat.csv on hedelmiä hintoineen seuraavan esimerkin mukaisesti:

    banaani;6.50\nomena;4.95\nappelsiini;8.0\n...jne...

    Kirjoita funktio lue_hedelmat, joka lukee hedelmätiedoston ja muodostaa siitä sanakirjan, jossa hedelmän nimi on avain ja hinta arvo. Hinnan tulee olla float-arvona sanakirjassa.

    Huomaa, että tiedoston nimi on aina hedelmat.csv eikä funktiolle anneta parametria.

    Lopuksi funktio palauttaa tämän sanakirjan.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla täällä olevaa ohjetta.

    Tiedostossa matriisi.txt on seuraavan esimerkin kaltainen matriisi:

    1,0,2,8,2,1,3,2,5,2,2,2\n9,2,4,5,2,4,2,4,1,10,4,2\n...jne...

    Kirjoita funktiot summa ja maksimi, jotka lukevat ja palauttavat nimensä mukaisesti matriisin kaikkien alkioiden summan ja suurimman alkion.

    Kirjoita lisäksi funktio rivisummat, joka palauttaa listassa kaikkien matriisin rivien summat. Esimerkiksi matriisille

    1,2,3\n2,3,4

    funktio palauttaisi listan [6, 9].

    Vinkki: Voit kirjoittaa ohjelmaan myös muita funktioita – kannattaa siis miettiä, mitä kaikkia yhteisiä toimintoja kolmea funktiota varten vaaditaan. Huomaa, että tiedoston nimi on aina matriisi.txt eikä tehtävänannossa määritellyille funktioille anneta parametreja. Itse lisäämäsi funktiot voivat hyödyntää myös parametreja.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla täällä olevaa ohjetta.

    Saman tiedoston lukeminen moneen kertaan

    Joissain tilanteissa ohjelman on tarvetta lukea sama tiedosto useampaan kertaan. Tarkastellaan esimerkkinä seuraavaa ohjelmaa, joka käsittelee henkilötietoja sisältävää tiedostoa:

    \nPekka;40;Helsinki\nEmilia;34;Espoo\nErkki;42;Turku\nAntti;100;Helsinki\nLiisa;58;Suonenjoki\n
    with open(\"henkilot.csv\") as tiedosto:\n    # tulostetaan nimet\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        print(\"Nimi:\", osat[0])\n\n    # etsitään vanhin\n    vanhimman_ika = -1\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        ika = int(osat[1])\n        if ika > vanhimman_ika:\n            vanhimman_ika = ika\n            vanhin = nimi\n    print(\"vanhin on\", vanhin)

    Ohjelma aiheuttaa erikoisen virheilmoituksen:

    Traceback (most recent call last):\n    print(\"vanhin on\"; vanhin)\nUnboundLocalError: local variable 'vanhin' referenced before assignment

    Syynä virheelle on se, että jälkimmäistä for-silmukkaa ei suoriteta ollenkaan, sillä tiedoston voi lukea vain kerran. Tämän jälkeen ollaan päästy \"tiedoston loppuun\", ja vaikka yritetään lukea tiedostosta lisää jälkimmäisessä silmukassa, tietoon ei päästä enää käsiksi.

    Tiedosto onkin avattava uudelleen komennolla open toista lukukertaa varten:

    with open(\"henkilot.csv\") as tiedosto:\n    # tulostetaan nimet\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        print(\"Nimi:\", osat[0])\n\nwith open(\"henkilot.csv\") as tiedosto:\n    # etsitään vanhin\n    vanhimman_ika = -1\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        ika = int(osat[1])\n        if ika > vanhimman_ika:\n            vanhimman_ika = ika\n            vanhin = nimi\n    print(\"vanhin on\", vanhin)

    Yleensä aina on kuitenkin parasta lukea tiedosto vain kerran ja tallentaa se muotoon, jota ohjelman toiminnallisuudet pystyvät hyödyntämään:

    henkilot = []\n# luetaan tiedostosta henkilöt listaan\nwith open(\"henkilot.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        henkilot.append((osat[0], int(osat[1]), osat[2]))\n\n# tulostetaan nimet\nfor henkilo in henkilot:\n    print(\"Nimi:\", henkilo[0])\n\n# etsitään vanhin\nvanhimman_ika = -1\nfor henkilo in henkilot:\n    nimi = henkilo[0]\n    ika = henkilo[1]\n    if ika > vanhimman_ika:\n        vanhimman_ika = ika\n        vanhin = nimi\nprint(\"vanhin on\", vanhin)

    Lisää CSV-tiedoston käsittelyä

    Jatketaan opiskelijoiden arvosanoja sisältävän tiedoston arvosanat.csv käsittelyä. Tiedosto näyttää siis seuraavalta:

    Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4

    Seuraava ohjelma luo tiedoston perusteella sanakirjan arvosanat, jossa jokainen avain on opiskelijan nimi ja vastaava arvo on lista arvosanoista. Ohjelma muuttaa arvosanat kokonaisluvuiksi, jotta niitä on mukavampaa käsitellä myöhemmin.

    arvosanat = {}\nwith open(\"arvosanat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        rivi = rivi.replace(\"\\n\", \"\")\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        arvosanat[nimi] = []\n        for arvosana in osat[1:]:\n            arvosanat[nimi].append(int(arvosana))\n\nprint(arvosanat)

    {'Pekka': [5, 4, 5, 3, 4, 5, 5, 4, 2, 4], 'Paula': [3, 4, 2, 4, 4, 2, 3, 1, 3, 3], 'Pirjo': [4, 5, 5, 4, 5, 5, 4, 5, 4, 4]}

    Tämän jälkeen voimme vaikkapa tulostaa analyysin arvosanoista käymällä läpi sanakirjan arvosanat perusteella:

    for nimi, lista in arvosanat.items():\n    paras = max(lista)\n    keskiarvo = sum(lista) / len(lista)\n    print(f\"{nimi}: paras arvosana {paras}, keskiarvo {keskiarvo:.2f}\")

    Pekka: paras arvosana 5, keskiarvo 4.10\nPaula: paras arvosana 4, keskiarvo 2.90\nPirjo: paras arvosana 5, keskiarvo 4.50

    Kannattaa tutustua huolella esimerkkikoodiin. Se voi ensisilmäyksellä vaikuttaa monimutkaiselta, mutta ratkaisu on helposti sovellettavissa monenlaisiin datatiedostoihin.

    Eroon turhista riveistä, välilyönneistä ja rivinvaihdoista

    Olemme tallentaneet Excelistä nimiä taulukon CSV-muodossa:

    etunimi; sukunimi\nPekka; Python\nJaana; Java\nHeikki; Haskell

    Kuten tyypillistä, Excel on lisännyt sarakkeiden väliin erottimena toimivan puolipisteen lisäksi myös välilyönnin.

    Haluamme tulostaa listalla olevat sukunimet. Koska ensimmäinen rivi kertoo sarakkeiden otsikot, ohitamme sen:

    sukunimet = []\nwith open(\"henkilot.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        # ohitetaan otsikkorivi\n        if osat[0] == \"etunimi\":\n            continue\n        sukunimet.append(osat[1])\n\nprint(sukunimet)

    Tulostus näyttää seuraavalta:

    [' Python\\n', ' Java\\n', ' Haskell']

    Kaikkiin paitsi viimeiseen rivin sukunimeen on jäänyt mukaan rivinvaihtomerkki, ja jokaisen sukunimen alkuun on jäänyt ikävä välilyönti.

    Pääsisimme näistä eroon aiempien esimerkkien tapaan käyttämällä metodia replace, mutta parempi vaihtoehto tässä tilanteessa on käyttää metodia strip, joka poistaa merkkijonon alusta ja lopusta ns. whitespace-merkit, eli välilyönnit, rivinvaihdot ja muut normaalina merkkinä tulostumattomat merkit.

    Kokeillaan metodin toimintaa konsolissa:

    >>> \" koe \".strip()\n'koe'\n>>> \"\\n\\ntesti\\n\".strip()\n'testi'\n>>>

    Tarvittava muutos ohjelmaan on helppo:

    sukunimet = []\nwith open(\"henkilot.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(';')\n        if osat[0] == \"etunimi\":\n            continue # tämä oli otsikkorivi, ei huomioida!\n        sukunimet.append(osat[1].strip())\nprint(sukunimet)

    Tämän jälkeen tulostus on halutunlainen:

    ['Python', 'Java', 'Haskell']

    Merkkijonoilla on myös metodit lstrip ja rstrip, jotka poistavat ainoastaan merkkijonon vasemmalla tai oikealla puolella olevia merkkejä.

    >>> \" testimerkkijono  \".rstrip()\n' testimerkkijono'\n>>> \" testimerkkijono  \".lstrip()\n'testimerkkijono  '

    Eri tiedostoissa olevien tietojen yhdistely

    On hyvin yleistä, että ohjelmassa tarvittava data on talletettu useaan erilliseen tiedostoon. Tarkastellaan esimerkkinä tilannetta, jossa yrityksen henkilöstön tiedot ovat omassa tiedostossaan tyontekijat.csv:

    hetu;nimi;osoite;kaupunki\n080488-123X;Pekka Mikkola;Vilppulantie 7;00700 Helsinki\n290274-044S;Liisa Marttinen;Mannerheimintie 100 A 10;00100 Helsinki\n010479-007Z;Arto Vihavainen;Pihapolku 4;01010 Kerava\n010499-345K;Leevi Hellas;Tapiolantie 11 B;02000 Espoo

    Työntekijöiden palkat taas ovat talletettu omaan tiedostoonsa palkat.csv

    hetu;palkka;bonus\n080488-123X;3300;0\n290274-044S;4150;200\n010479-007Z;1300;1200

    Molempien tiedostojen riveillä on ensin henkilötunnus, joka kertoo kenen tiedoista on kyse. Käyttämällä henkilötunnusta yhdistävänä tekijänä, on helppo yhdistää henkilöiden nimet ja palkat toisiinsa, ja tehdä esimerkiksi ohjelma, joka tulostaa seuraavanlaisen näkymän henkilöiden ansioihin:

    \nansiot:\nPekka Mikkola    3300 euroa\nLiisa Marttinen  4350 euroa\nArto Vihavainen  2500 euroa\n

    Ohjelma käyttää aputietorakenteena kahta saankirjaa nimet ja palkat, joissa molemmissa avaimena toimii henkilötunnus:

    nimet = {}\n\nwith open(\"tyontekijat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(';')\n        if osat[0] == \"hetu\":\n            continue\n        nimet[osat[0]] = osat[1]\n\npalkat = {}\n\nwith open(\"palkat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(';')\n        if osat[0] == \"hetu\":\n            continue\n        palkat[osat[0]] = int(osat[1]) +int(osat[2])\n\nprint(\"ansiot:\")\n\nfor hetu, nimi in nimet.items():\n    if hetu in palkat:\n        palkka = palkat[hetu]\n        print(f\"{nimi:16} {palkka} euroa\")\n    else:\n        print(f\"{nimi:16} 0 euroa\")

    Ohjelma siis muodostaa ensin sanakirjat nimet ja palkat, joiden sisältö näyttää seuraavilta:

    {\n    '080488-123X': 'Pekka Mikkola',\n    '290274-044S': 'Liisa Marttinen',\n    '010479-007Z': 'Arto Vihavainen',\n    '010499-345K': 'Leevi Hellas'\n}\n\n{\n    '080488-123X': 3300,\n    '290274-044S': 4350,\n    '010479-007Z': 2500\n}

    Lopun for-silmukka yhdistää henkilöiden nimet ja niitä vastaavat palkat sanakirjojen avulla.

    Ohjelma huomioi myös tilanteen, jossa henkilön palkkatietoja ei ole olemassa.

    Huomaa, että koska ohjelma käyttää aputietorakenteena sanakirjaa, ei henkilöitä vastaavien rivien järjestyksellä ole merkitystä.

    Ohjelma käsittelee kahta CSV-muotoista tiedostoa. Toisessa on tieto opiskelijoista:

    opnro;etunimi;sukunimi\n12345678;pekka;peloton\n12345687;jaana;javanainen\n12345699;liisa;virtanen

    ja toisessa opiskelijoiden viikoittaisesta tehtävien lukumäärästä:

    opnro;v1;v2;v3;v4;v5;v6;v7\n12345678;4;1;1;4;5;2;4\n12345687;3;5;3;1;5;4;6\n12345699;10;2;2;7;10;2;2

    Molempien CSV-tiedostojen ensimmäinen rivi on otsikkorivi, joka kertoo kunkin kentän sisällön.

    Tee ohjelma, joka kysyy tiedostojen nimet ja tämän jälkeen tulostaa kunkin opiskelijan tehtävien yhteenlasketun määrän. Ohjelma toimii seuraavasti, kun tiedostojen sisältö on yllä oleva:

    Opiskelijatiedot: opiskelijat1.csv\nTehtävätiedot: tehtavat1.csv\npekka peloton 21\njaana javanainen 27\nliisa virtanen 35

    Vinkki: Ohjelman testaileminen on toivottoman hidasta, jos käyttäjä joutuu kirjoittamaan syötteen aina käsin. Testausvaiheessa syötteet kannattaakin antaa \"kovakoodaamalla\" ne esim. seuraavasti:

    if False:\n    # tänne ei tulla\n    opiskelijatiedot = input(\"Opiskelijatiedot: \")\n    tehtavatiedot = input(\"Tehtävätiedot: \")\nelse:\n    # kovakoodatut syötteet\n    opiskelijatiedot = \"opiskelijat1.csv\"\n    tehtavatiedot = \"tehtavat1.csv\"

    Ohjelman varsinainen toiminnallisuus on nyt \"piilotettu\" ehdon False-haaraan, jota ei suoriteta koskaan.

    Jos taas halutaan nopeasti tarkastaa, toimiiko ohjelma myös käyttäjän kirjoittaessa syötteen, voidaan arvo False muuttaa arvoksi True:

    \nif True:\n    opiskelijatiedot = input(\"Opiskelijatiedot: \")\n    tehtavatiedot = input(\"Tehtävätiedot: \")\nelse:\n    # tänne ei tulla!\n    opiskelijatiedot = \"opiskelijat1.csv\"\n    tehtavatiedot = \"tehtavat1.csv\"

    Kun koodi on kunnossa, voi ehtorakenteen poistaa.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Toinen huomio Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    Edellinen tehtävä laajenee vielä siten, että myös opiskelijan koepisteet luetaan CSV-tiedostosta. Tiedoston sisältö näyttää seuraavalta:

    opnro;k1;k2;k3\n12345678;4;1;4\n12345687;3;5;3\n12345699;10;2;2

    Esimerkiksi opiskelija jonka opiskelijanumero on 12345678 on saanut kokeesta 4+1+4 eli yhteensä 9 pistettä.

    Ohjelma kysyy tiedostojen nimet ja tulostaa jokaisen opiskelijan arvosanan:

    Opiskelijatiedot: opiskelijat1.csv\nTehtävätiedot: tehtavat1.csv\nKoepisteet: koepisteet1.csv\npekka peloton 0\njaana javanainen 1\nliisa virtanen 3

    Tehtyjen harjoitustehtävien määrästä saa pisteitä siten, että vähintään 10 % tehtävämäärästä tuo 1 pisteen, vähintään 20% tuo 2 pistettä jne., ja 100 % eli 40 harjoitustehtävää tuo 10 pistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku.

    Kurssin arvosana määräytyy kokeen ja harjoituspisteiden summan perusteella seuraavan taulukon mukaan:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    kokeen pisteet + harjoitusten pisteetarvosana
    0-140 (eli hylätty)
    15-171
    18-202
    21-233
    24-274
    28-5

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tässä tehtävässä muotoillaan edellisen tehtävän tulostus parempaan muotoon:

    Opiskelijatiedot: opiskelijat1.csv\nTehtävätiedot: tehtavat1.csv\nKoepisteet: koepisteet1.csv

    \nnimi                          teht_lkm  teht_pist koe_pist  yht_pist  arvosana\npekka peloton                 21        5         9         14        0\njaana javanainen              27        6         11        17        1\nliisa virtanen                35        8         14        22        3\n

    Jokaisella rivillä siis tulostetaan opiskelijan tehtävien lukumäärä, tehtävistä saatavat pisteet, kokeen pisteet, yhteispisteet (koe+harjoitukset) sekä arvosana \"siististi\" siten, että tulostus on jaoteltu sarakkeisiin. Nimisarakkeen leveys on 30 merkkiä ja muiden sarakkeiden leveys on tasan 10 merkkiä.

    Tehtävässä kannattaa käyttää osassa 4 käsiteltyjä f-merkkijonoja.

    Kannattaa huomata, että merkkijonojen ja lukujen tulostaminen noudattaa hieman erilaista logiikkaa f-merkkijonoissa:

    sana = \"python\"\nprint(f\"{sana:10}jatkuu\")\nprint(f\"{sana:>10}jatkuu\")
    \npython    jatkuu\n    pythonjatkuu\n

    Oletusarvoisesti siis merkkijono sisentyy määritellyn levyisen alueen vasempaan reunaan. Merkillä >voidaan ohjata tulostus sisentymään oikeaan reunaan.

    Lukuja tulostettaessa logiikka on päinvastainen

    luku = 42\nprint(f\"{luku:10}jatkuu\")\nprint(f\"{luku:<10}jatkuu\")
    \n        42jatkuu\n42        jatkuu\n

    Oletusarvo lukujen yhteydessä on tulostuksen sisentyminen oikeaan reunaan. Merkillä < voidaan ohjata luvun tulostus sisentymään vasempaan reunaan.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tee ohjelma, joka pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. Seuraavassa kaksi käyttöesimerkkiä:

    Write text: We use ptython to make a spell checker

    \nWe use *ptython* to make a spell checker\n

    Write text: This is acually a good and usefull program

    \nThis is *acually* good and *usefull* program\n

    Kirjainten koolla ei ole merkitystä ohjelman toiminnan kannalta.

    Ohjelma tunnistaa oikein kirjoitetut sanat käyttämällä tehtäväpohjassa olevaa tiedostoa wordlist.txt.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Toinen huomio Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    Tässä tehtävässä tehdään ohjelma, joka tarjoaa käyttäjälle mahdollisuuden reseptien hakuun reseptin nimen, valmistusajan tai raaka-aineen nimen perusteella. Ohjelma lukee reseptit käyttäjän antamasta tiedostosta.

    Jokainen resepti koostuu kolmesta tai useammasta rivistä reseptitiedostossa. Ensimmäisellä rivillä on reseptin nimi, toisella rivillä reseptin valmistusaika (kokonaisluku), ja kolmas ja sitä seuraavat rivit kertovat reseptin raaka-aineet. Reseptin raaka-aineiden kuvaus päättyy tyhjään riviin, poislukien viimeinen resepti. Tiedostossa voi olla useampia reseptejä. Alla kuvattuna esimerkkitiedosto.

    Lettutaikina\n15\nmaito\nkananmuna\njauho\nsokeri\nsuola\nvoi\n\nLihapullat\n45\njauheliha\nkananmuna\nkorppujauho\n\nTofurullat\n30\ntofu\nriisi\nvesi\nporkkana\nkurkku\navokado\nwasabi\n\nPullataikina\n60\nmaito\nhiiva\nkananmuna\nsuola\nsokeri\nkardemumma\nvoi

    Vihje tässä tehtävässä lienee järkevintä lukea ensin tiedoston rivit listalle ja käsitellä sitten tätä listaa tehtävän edellyttämällä tavalla.

    reseptien haku nimen perusteella

    Tee funktio hae_nimi(tiedosto: str, sana: str) joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden nimessä esiintyy toisena parametrina annettu merkkijono. Funktio palauttaa listan, jossa kutakin löydettyä reseptiä vastaa merkkijono, joka kertoo reseptin nimen.

    Esimerkki funktion käytöstä:

    loydetyt = hae_nimi(\"reseptit1.txt\", \"pulla\")\n\nfor resepti in loydetyt:\n    print(resepti)

    Lihapullat\nPullataikina

    Huomaa, että hakusanojen kirjainten koolla ei ole merkitystä, eli hakusana pulla löytää myös reseptin Pullataikina, joka alkaa isolla kirjaimella.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    reseptien hakeminen valmistusajan perusteella

    Tee funktio hae_aika(tiedosto: str, aika: int) joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden valmistusaika on korkeintaan parametrina kerrottu minuuttimäärä.

    Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana, nyt kerrotaan myös reseptin valmistumisaika. Esimerkki funktion käytöstä:

    loydetyt = hae_aika(\"reseptit1.txt\", 20)\n\nfor resepti in loydetyt:\n    print(resepti)

    Lettutaikina, valmistusaika 15 min

    reseptien hakeminen raaka-aineen perusteella

    Varoitus tämä osa on edellisiä selvästi haastavampi. Jos tehtävä ei lähde heti aukenemaan, kannattanee tehdä ensin osan muut tehtävät ja palata lopuksi takaisin tähän. Huomaa, että voit lähettää moniosaisessa tehtävässä palvelimelle myös yksittäiset osat

    Tee funktio hae_raakaaine(tiedosto: str, aine: str) joka hakee parametrina annetun nimisestä tiedostosta reseptit, jotka sisältävät toisena parametrina annetun raaka-aineen.

    Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana. Esimerkki funktion käytöstä:

    loydetyt = hae_raakaaine(\"reseptit1.txt\", \"maito\")\n\nfor resepti in loydetyt:\n    print(resepti)

    Lettutaikina, valmistusaika 15 min\nPullataikina, valmistusaika 60 min

    Tässä tehtävässä tehdään muutama funktio, joiden avulla voidaan tarkastella kaupunkipyörien asemien sijaintia sisältävää tiedostoa.

    Tiedostot näyttävät seuraavilta:

    Longitude;Latitude;FID;name;total_slot;operative;id\n24.950292890004903;60.155444793742276;1;Kaivopuisto;30;Yes;001\n24.956347471358754;60.160959093887129;2;Laivasillankatu;12;Yes;002\n24.944927399779715;60.158189199971673;3;Kapteeninpuistikko;16;Yes;003

    Kutakin asemaa kohti tiedostossa on yksi rivi, joka kertoo aseman koordinaatit, aseman nimen ja muuta tunnistetietoa.

    asemien välinen etäisyys

    Tee ensin funktio hae_asematiedot(tiedosto: str), joka lukee asematiedot tiedostosta ja palauttaa ne sanakirjana, joka näyttää tältä:

    \n{\n  \"Kaivopuisto: (24.950292890004903, 60.155444793742276),\n  \"Laivasillankatu: (24.956347471358754, 60.160959093887129),\n  \"Kapteeninpuistikko: (24.944927399779715, 60.158189199971673)\n}\n

    Eli sanakirjan avaimena on aseman nimi ja arvona tuple, joka koostuu aseman koordinaateista, ensimmäisenä Longitude ja toisena Latitude.

    Tee seuraavaksi funktio etaisyys(asemat: dict, asema1: str, asema2: str), joka palauttaa parametrina kerrottujen asemien välisen etäisyyden.

    Etäisyys lasketaan seuraavalla kaavalla (hyödyntäen Pythagoraan lausetta):

    # tämä rivi tarvitaan, jotta saadaan käyttöön metodi sqrt\nimport math\n\nx_kilometreina = (longitude1 - longitude2) * 55.26\ny_kilometreina = (latitude1 - latitude2) * 111.2\netaisyys = math.sqrt(x_kilometreina**2 + y_kilometreina**2)

    Esimerkkisuorituksia:

    asemat = hae_asematiedot('stations1.csv')\ne = etaisyys(asemat, \"Designmuseo\", \"Hietalahdentori\")\nprint(e)\ne = etaisyys(asemat, \"Viiskulma\", \"Kaivopuisto\")\nprint(e)

    0.9032737292463177\n0.7753594392019532

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    pisin välimatka

    Tee funktio suurin_etaisyys(asemat: dict), joka selvittää, mitkä kaksi asemaa ovat kauimpana toisistaan. Funktio palauttaa tuplen, jonka ensimmäiset kaksi arvoa kertovat asemien nimet ja kolmas arvo niiden välisen etäisyyden.

    asemat = hae_asematiedot('stations1.csv')\nasema1, asema2, suurin = suurin_etaisyys(asemat)\nprint(asema1, asema2, suurin)

    Laivasillankatu Hietalahdentori 1.478708873076181

    ","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/1-tiedostojen-lukeminen.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten tiedoston sisällön voi lukea Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä ovat tekstitiedosto ja CSV-tiedosto"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat purkaa ja käsitellä CSV-tiedoston sisällön ohjelmassa"}]},{"type":"text","value":"\n"}]}]},{"type":"comment","value":"vastaava teksti löytyy osioista 3-1, 5-1 ja 6-1, tsekkaa kaikki jos muokkaat tätä"},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Kurssin tehtävien tekemisestä"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten "},{"type":"element","tagName":"a","properties":{"href":"/arvostelu-ja-kokeet"},"children":[{"type":"text","value":"arvosteluperusteet"}]},{"type":"text","value":" toteavat, "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä."}]},{"type":"text","value":" Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan"}]},{"type":"text","value":". Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi tavallinen ohjelmoinnin käyttötarkoitus on käsitellä tiedostoissa olevaa tietoa. Ohjelmat voivat lukea tietoa tiedostoista ja tallentaa tuloksia tiedostoihin. Tiedostojen avulla voimme käsitellä suuriakin aineistoja helposti automaattisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletamme tällä kurssilla, että käsiteltävät tiedostot ovat "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tekstitiedostoja"}]},{"type":"text","value":" eli ne muodostuvat riveistä, joilla on tekstiä. Esimerkiksi kurssilla käytetty Visual Studio Code -editori käsittelee tekstitiedostoja. Huomaa, että esimerkiksi Word-dokumentti ei ole tekstitiedosto, vaan siinä on tekstin lisäksi muotoilutietoja ja sen käsittely ohjelmallisesti olisi vaikeaa."}]},{"type":"element","tagName":"h2","properties":{"id":"tiedostosta-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"Tiedostosta lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#tiedostosta-lukeminen","ariaLabel":"tiedostosta lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytetään esimerkkinä tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"esimerkki.txt"}]},{"type":"text","value":", jonka sisältönä on:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hyvä tapa käsitellä tiedostoja Pythonissa on käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":"-lausetta, jonka alkurivi avaa tiedoston. Tämän jälkeen tulee lohko, jonka sisällä tiedostoa voi käsitellä. Lohkon jälkeen tiedosto sulkeutuu automaattisesti, eikä sitä voi enää käsitellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi lukee ja tulostaa tiedoston sisällön:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n sisalto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"read"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sisalto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tiedosto"}]},{"type":"text","value":" on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tiedostokahva"}]},{"type":"text","value":", jonka kautta tiedostoa voi käsitellä avaamisen jälkeen. Tässä tapauksessa käytämme metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"read"}]},{"type":"text","value":", joka palauttaa koko tiedoston sisällön yhtenä merkkijonona. Tässä tapauksessa palautettu merkkijono on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"text"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-text"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"Moi kaikki!\\nEsimerkkitiedostomme on kolmerivinen.\\nViimeinen rivi.\""}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedoston-sisallon-lapikaynti","style":"position:relative;"},"children":[{"type":"text","value":"Tiedoston sisällön läpikäynti"},{"type":"element","tagName":"a","properties":{"href":"#tiedoston-sisallon-lapikaynti","ariaLabel":"tiedoston sisallon lapikaynti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" on näppärä, jos halutaan esimerkiksi tulostaa tiedoston sisältö kokonaisuudessaan ruudulle. Usein haluamme kuitenkin käsitellä tiedostoa rivi kerrallaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää tiedoston sisällön lukemiseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa, joka käy läpi tiedoston rivit yksi kerrallaan – siis samaan tapaan kuin esimerkiksi listan läpikäynnissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava esimerkki lukee saman tiedoston nyt käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukkaa, poistaa joka rivin perästä rivinvaihdon ja laskee rivien yhteispituuden:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n yhteispituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" pituus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rivien yhteispituus:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yhteispituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivi 1 Moi kaikki!\nRivi 2 Esimerkkitiedostomme on kolmerivinen.\nRivi 3 Viimeinen rivi.\nRivien yhteispituus: 63"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että rivien läpikäynnissä jokaisen rivin perässä on rivinvaihto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\\n"}]},{"type":"text","value":". Yllä oleva koodi kuitenkin poistaa rivinvaihdot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":"-funktiolla, joka korvaa rivinvaihdot tyhjillä merkkijonoilla. Tämän ansiosta tulostukseen ei tule ylimääräisiä rivivaihtoja ja ohjelma laskee oikein tiedoston rivien yhteispituuden."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Suurin luku","tmcname":"osa06-01_suurin_luku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut.txt"}]},{"type":"text","value":" on tallennettu lukuja, yksi luku per rivi seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"108"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","parameter","variable"]},"children":[{"type":"text","value":"-10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":".jne"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":"."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin"}]},{"type":"text","value":", joka lukee tiedoston ja palauttaa suurimman tiedostosta löytyvän luvun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tiedoston nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"luvut.txt"}]},{"type":"text","value":" eikä funktiolle anneta parametria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa heti tehtävän jälkeen olevaa ohjetta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa","style":"position:relative;"},"children":[{"type":"text","value":"Mitä jos VS code ei löydä tiedostoja koodia suoritettaessa?"},{"type":"element","tagName":"a","properties":{"href":"#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa","ariaLabel":"mita jos vs code ei loyda tiedostoja koodia suoritettaessa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos VS Code ei löydä tiedostoa suorittaessasi koodia (vihreää nappia painamalla) vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Mene asetuksiin valikosta "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"File"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Preferences"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Settings"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Etsi muutettava kohta hakusanalla \"executeinfile\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Valitse välilehti "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Workspace"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Laita raksi kohtaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Python"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Terminal"}]},{"type":"text","value":" -> "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Execute In File Dir"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oikein tehtynä asetus näyttää suunilleen seuraavalta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/6e5d89f76dfd47af6f9ea67b097452e8/e405b/6_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 16.521739130434785%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVQI11XOQQqAMAwEwP5DknRNkNIilaInvXn3/8+RKIoOOe4uCQAQHYDWWq01/xS/UnLO07rP+9HbEEU8DQT+SCmZmZqlB77GRdvGUCa687+yiDAzVH3i8hb9MyZQJ0xv/gSEjBk5LU20dgAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e5d89f76dfd47af6f9ea67b097452e8/a0b58/6_1_1.webp 230w","/static/6e5d89f76dfd47af6f9ea67b097452e8/bc10c/6_1_1.webp 460w","/static/6e5d89f76dfd47af6f9ea67b097452e8/966d8/6_1_1.webp 920w","/static/6e5d89f76dfd47af6f9ea67b097452e8/445df/6_1_1.webp 1380w","/static/6e5d89f76dfd47af6f9ea67b097452e8/9b2c8/6_1_1.webp 1566w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/6e5d89f76dfd47af6f9ea67b097452e8/81c8e/6_1_1.png 230w","/static/6e5d89f76dfd47af6f9ea67b097452e8/08a84/6_1_1.png 460w","/static/6e5d89f76dfd47af6f9ea67b097452e8/c0255/6_1_1.png 920w","/static/6e5d89f76dfd47af6f9ea67b097452e8/b1001/6_1_1.png 1380w","/static/6e5d89f76dfd47af6f9ea67b097452e8/e405b/6_1_1.png 1566w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/6e5d89f76dfd47af6f9ea67b097452e8/c0255/6_1_1.png","alt":"6 1 1","title":"6 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos edellinenkään ei toimi, voit kopioida kansiossa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"src"}]},{"type":"text","value":" olevan testaukseen käytetyn tiedoston sisällön"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/a57483e6084d39a596ee24c41a42de70/6297e/6_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 22.17391304347826%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABYlAAAWJQFJUiTwAAAApklEQVQI123N0QqCQBAFUH/CUVlnt3JnVtcSyx1XikKCHur/PyhQih463KcLl5s87rcQRcLoa98037TO1czsFtba6p/kFESm8+U6HyTuT4FcY11Dtd9WVH4gol7keQ4Aa4OIySBjfxwkyKuLc90P5ImYiHeWtdmYRVmWSqmiKLIsAwCllDFGa50EiW3Xj3F6tjKQr5YlE28tozbrISKmaQoAiPg7fgOYxyLFEKvBSAAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a57483e6084d39a596ee24c41a42de70/a0b58/6_1_2.webp 230w","/static/a57483e6084d39a596ee24c41a42de70/bc10c/6_1_2.webp 460w","/static/a57483e6084d39a596ee24c41a42de70/966d8/6_1_2.webp 920w","/static/a57483e6084d39a596ee24c41a42de70/445df/6_1_2.webp 1380w","/static/a57483e6084d39a596ee24c41a42de70/78de1/6_1_2.webp 1840w","/static/a57483e6084d39a596ee24c41a42de70/4b7c9/6_1_2.webp 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/a57483e6084d39a596ee24c41a42de70/81c8e/6_1_2.png 230w","/static/a57483e6084d39a596ee24c41a42de70/08a84/6_1_2.png 460w","/static/a57483e6084d39a596ee24c41a42de70/c0255/6_1_2.png 920w","/static/a57483e6084d39a596ee24c41a42de70/b1001/6_1_2.png 1380w","/static/a57483e6084d39a596ee24c41a42de70/161ec/6_1_2.png 1840w","/static/a57483e6084d39a596ee24c41a42de70/6297e/6_1_2.png 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/a57483e6084d39a596ee24c41a42de70/c0255/6_1_2.png","alt":"6 1 2","title":"6 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suoraan tehtäväkansion alle"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/bc83b27162a67ce98f825821dc304a7e/6297e/6_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 26.956521739130434%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAt0lEQVQY023P3Q6CMAwFYN6DjqjtNta1MxlDdILGxBvf/4UMGO/4cm5Pf5pa79N0m+eHSBJJMSqzMKv3vaqklPq+995ba51zdkNkPR2COzallJzL8/lalketc86FWWJUIsfMqtq2bdd1sDF/AOaE2AzDUIYyjmPOWUQRiWidjYgxRlU1xnQ7DBGtmyWdy2ViZqL1ul8QSSQyMwDsVI1BxOZ6md65fsYlyTms3/6iznnd7JYBIITwBcyRLmVWTxqEAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/bc83b27162a67ce98f825821dc304a7e/a0b58/6_1_3.webp 230w","/static/bc83b27162a67ce98f825821dc304a7e/bc10c/6_1_3.webp 460w","/static/bc83b27162a67ce98f825821dc304a7e/966d8/6_1_3.webp 920w","/static/bc83b27162a67ce98f825821dc304a7e/445df/6_1_3.webp 1380w","/static/bc83b27162a67ce98f825821dc304a7e/78de1/6_1_3.webp 1840w","/static/bc83b27162a67ce98f825821dc304a7e/4b7c9/6_1_3.webp 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/bc83b27162a67ce98f825821dc304a7e/81c8e/6_1_3.png 230w","/static/bc83b27162a67ce98f825821dc304a7e/08a84/6_1_3.png 460w","/static/bc83b27162a67ce98f825821dc304a7e/c0255/6_1_3.png 920w","/static/bc83b27162a67ce98f825821dc304a7e/b1001/6_1_3.png 1380w","/static/bc83b27162a67ce98f825821dc304a7e/161ec/6_1_3.png 1840w","/static/bc83b27162a67ce98f825821dc304a7e/6297e/6_1_3.png 2044w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/bc83b27162a67ce98f825821dc304a7e/c0255/6_1_3.png","alt":"6 1 3","title":"6 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"tiedostoja-lukevan-koodin-debuggaus","style":"position:relative;"},"children":[{"type":"text","value":"Tiedostoja lukevan koodin debuggaus"},{"type":"element","tagName":"a","properties":{"href":"#tiedostoja-lukevan-koodin-debuggaus","ariaLabel":"tiedostoja lukevan koodin debuggaus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos yrität käyttää VS Coden "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/1-vscode#debuggeri"},"children":[{"type":"text","value":"debuggeria"}]},{"type":"text","value":" tiedostoja lukevan koodin suorittamiseen, törmäät ikävään virheilmoitukseen:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/b0c7745f7a4cc9c485a52d483e0aa290/eff3b/6_1_4.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 31.304347826086953%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAABYlAAAWJQFJUiTwAAABMklEQVQY003PyU7CQACA4d7EBWQpLdDS6XSWzkw702VIIBESgyaYWBZRE60QUIzv/wguB0PyX7/Db2itx5PJcDiKYym4ICFXaSKkZFKGMhUyESKmlAEY+BD5EAGIMA5iThhjRpZlOhsooTjlmFAKgaBgPMSjHOS8kwtHx55itgqt4xIllEqNPM85F4xxSmhAyAziDabbiG8F28voBcGnvrNot+ZmY2E252azMBtFvSZ7XQADQ19dI4QJoX+Y3vXhgcbvcbYL5Z6pHYlKQEpAS0DWrd6yZi3r1uK0Hpm26wND6xxj8o9nrv8Zxl/p4CCSQ5R8cFV6aAPwm4eeLWfd7Dy2OqvzRtS2XQB+n4/x1IOvNHrw8dIBSwcUtlPYzsqF9+3e7dnltFKdVqo3JxfC7v7gb6ThPL16POKXAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b0c7745f7a4cc9c485a52d483e0aa290/a0b58/6_1_4.webp 230w","/static/b0c7745f7a4cc9c485a52d483e0aa290/bc10c/6_1_4.webp 460w","/static/b0c7745f7a4cc9c485a52d483e0aa290/966d8/6_1_4.webp 920w","/static/b0c7745f7a4cc9c485a52d483e0aa290/445df/6_1_4.webp 1380w","/static/b0c7745f7a4cc9c485a52d483e0aa290/78de1/6_1_4.webp 1840w","/static/b0c7745f7a4cc9c485a52d483e0aa290/5340a/6_1_4.webp 2072w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/b0c7745f7a4cc9c485a52d483e0aa290/81c8e/6_1_4.png 230w","/static/b0c7745f7a4cc9c485a52d483e0aa290/08a84/6_1_4.png 460w","/static/b0c7745f7a4cc9c485a52d483e0aa290/c0255/6_1_4.png 920w","/static/b0c7745f7a4cc9c485a52d483e0aa290/b1001/6_1_4.png 1380w","/static/b0c7745f7a4cc9c485a52d483e0aa290/161ec/6_1_4.png 1840w","/static/b0c7745f7a4cc9c485a52d483e0aa290/eff3b/6_1_4.png 2072w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/b0c7745f7a4cc9c485a52d483e0aa290/c0255/6_1_4.png","alt":"6 1 4","title":"6 1 4","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syynä tälle on se, että debuggeri etsii tiedostoja tehtäväkansion juuresta eikä edes "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Execute In File Dir"}]},{"type":"text","value":" -asetus ei asiaa muuta. Helpoin ratkaisu ongelmaan on edellisessä luvussa kuvattu testaukseen käytetyn tiedoston kopioiminen tehtävähakemiston juureen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun olet kopioinut tiedostot tehtävähakemiston juureen, joudut ehkä vielä käynnistämään visual studio coden uudelleen jotta kaikki toimisi."}]},{"type":"element","tagName":"h2","properties":{"id":"csv-tiedoston-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"CSV-tiedoston lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#csv-tiedoston-lukeminen","ariaLabel":"csv tiedoston lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-tiedosto ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Comma Separated Values"}]},{"type":"text","value":") on tekstitiedosto, jonka jokaisella rivillä on tietyllä välimerkillä erotettua tietoa. Välimerkkinä on usein pilkku "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tai puolipiste "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":", mutta mikä tahansa muukin merkki on periaatteessa mahdollinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-tiedostoja käytetään usein erilaisten aineistojen esittämiseen. Myös Excelin ja muiden vastaavien ohjelmien taulukot voidaan tallentaa CSV-muodossa, jolloin niitä on helppo käsitellä muilla ohjelmilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme lukea CSV-tiedoston rivit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":"-silmukalla, mutta miten erottaa rivillä olevat tiedot toisistaan? Helppo tapa on käyttää merkkijonojen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":"-metodia: metodille annetaan haluttu välimerkki, ja se palauttaa tiedot välimerkin mukaan eroteltuna listana merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"teksti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina,banaani,cembalo\""}]},{"type":"text","value":"\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" teksti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\",\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"apina\nbanaani\ncembalo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat.csv"}]},{"type":"text","value":", joka sisältää jokaisella rivillä aluksi opiskelijan nimen ja sen jälkeen tämän eri kursseista saamat arvosanat. Tiedot on erotettu toisistaan puolipisteillä."}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma käy läpi tiedoston rivit, jakaa jokaisen rivin osiin ja näyttää opiskelijan nimen sekä arvosanat."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvosanat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n arvosanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arvosanat:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nimi: Pekka\nArvosanat: ['5', '4', '5', '3', '4', '5', '5', '4', '2', '4']\nNimi: Paula\nArvosanat: ['3', '4', '2', '4', '4', '2', '3', '1', '3', '3']\nNimi: Pirjo\nArvosanat: ['4', '5', '5', '4', '5', '5', '4', '5', '4', '4']"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hedelmäkauppa","tmcname":"osa06-02_hedelmakauppa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hedelmat.csv"}]},{"type":"text","value":" on hedelmiä hintoineen seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"banaani"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6.50"}]},{"type":"text","value":"\nomena"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.95"}]},{"type":"text","value":"\nappelsiini"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":".jne"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":"."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_hedelmat"}]},{"type":"text","value":", joka lukee hedelmätiedoston ja muodostaa siitä sanakirjan, jossa hedelmän nimi on avain ja hinta arvo. Hinnan tulee olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float"}]},{"type":"text","value":"-arvona sanakirjassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tiedoston nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hedelmat.csv"}]},{"type":"text","value":" eikä funktiolle anneta parametria."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopuksi funktio palauttaa tämän sanakirjan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" olevaa ohjetta."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Matriisi","tmcname":"osa06-03_matriisi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"matriisi.txt"}]},{"type":"text","value":" on seuraavan esimerkin kaltainen matriisi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1,0"}]},{"type":"text","value":",2,8,2,1,3,2,5,2,2,2\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9,2"}]},{"type":"text","value":",4,5,2,4,2,4,1,10,4,2\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":".jne"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":".."}]},{"type":"text","value":"."}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"maksimi"}]},{"type":"text","value":", jotka lukevat ja palauttavat nimensä mukaisesti matriisin kaikkien alkioiden summan ja suurimman alkion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita lisäksi funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivisummat"}]},{"type":"text","value":", joka palauttaa listassa kaikkien matriisin rivien summat. Esimerkiksi matriisille"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1,2"}]},{"type":"text","value":",3\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2,3"}]},{"type":"text","value":",4"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"funktio palauttaisi listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[6, 9]"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Voit kirjoittaa ohjelmaan myös muita funktioita – kannattaa siis miettiä, mitä kaikkia yhteisiä toimintoja kolmea funktiota varten vaaditaan. Huomaa, että tiedoston nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"matriisi.txt"}]},{"type":"text","value":" eikä tehtävänannossa määritellyille funktioille anneta parametreja. Itse lisäämäsi funktiot voivat hyödyntää myös parametreja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" olevaa ohjetta."}]}]},{"type":"element","tagName":"h2","properties":{"id":"saman-tiedoston-lukeminen-moneen-kertaan","style":"position:relative;"},"children":[{"type":"text","value":"Saman tiedoston lukeminen moneen kertaan"},{"type":"element","tagName":"a","properties":{"href":"#saman-tiedoston-lukeminen-moneen-kertaan","ariaLabel":"saman tiedoston lukeminen moneen kertaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa ohjelman on tarvetta lukea sama tiedosto useampaan kertaan. Tarkastellaan esimerkkinä seuraavaa ohjelmaa, joka käsittelee henkilötietoja sisältävää tiedostoa:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"text","value":"\nPekka;40;Helsinki\nEmilia;34;Espoo\nErkki;42;Turku\nAntti;100;Helsinki\nLiisa;58;Suonenjoki\n"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan nimet"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# etsitään vanhin"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" vanhimman_ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n vanhin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma aiheuttaa erikoisen virheilmoituksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"Traceback "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"most recent call last"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nUnboundLocalError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" local variable "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'vanhin'"}]},{"type":"text","value":" referenced before assignment"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syynä virheelle on se, että jälkimmäistä for-silmukkaa ei suoriteta ollenkaan, sillä tiedoston voi lukea vain kerran. Tämän jälkeen ollaan päästy \"tiedoston loppuun\", ja vaikka yritetään lukea tiedostosta lisää jälkimmäisessä silmukassa, tietoon ei päästä enää käsiksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto onkin avattava uudelleen komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"open"}]},{"type":"text","value":" toista lukukertaa varten:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan nimet"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# etsitään vanhin"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" vanhimman_ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n vanhin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleensä aina on kuitenkin parasta lukea tiedosto vain kerran ja tallentaa se muotoon, jota ohjelman toiminnallisuudet pystyvät hyödyntämään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luetaan tiedostosta henkilöt listaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tulostetaan nimet"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# etsitään vanhin"}]},{"type":"text","value":"\nvanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" henkilot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" vanhimman_ika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n vanhimman_ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ika\n vanhin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vanhin on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vanhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-csv-tiedoston-kasittelya","style":"position:relative;"},"children":[{"type":"text","value":"Lisää CSV-tiedoston käsittelyä"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-csv-tiedoston-kasittelya","ariaLabel":"lisaa csv tiedoston kasittelya permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jatketaan opiskelijoiden arvosanoja sisältävän tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat.csv"}]},{"type":"text","value":" käsittelyä. Tiedosto näyttää siis seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma luo tiedoston perusteella sanakirjan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat"}]},{"type":"text","value":", jossa jokainen avain on opiskelijan nimi ja vastaava arvo on lista arvosanoista. Ohjelma muuttaa arvosanat kokonaisluvuiksi, jotta niitä on mukavampaa käsitellä myöhemmin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"arvosanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvosanat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"replace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" arvosana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'Pekka': [5, 4, 5, 3, 4, 5, 5, 4, 2, 4], 'Paula': [3, 4, 2, 4, 4, 2, 3, 1, 3, 3], 'Pirjo': [4, 5, 5, 4, 5, 5, 4, 5, 4, 4]}"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen voimme vaikkapa tulostaa analyysin arvosanoista käymällä läpi sanakirjan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosanat"}]},{"type":"text","value":" perusteella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" arvosanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n paras "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n keskiarvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": paras arvosana "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"paras"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", keskiarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":".2f"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka: paras arvosana 5, keskiarvo 4.10\nPaula: paras arvosana 4, keskiarvo 2.90\nPirjo: paras arvosana 5, keskiarvo 4.50"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa tutustua huolella esimerkkikoodiin. Se voi ensisilmäyksellä vaikuttaa monimutkaiselta, mutta ratkaisu on helposti sovellettavissa monenlaisiin datatiedostoihin."}]},{"type":"element","tagName":"h2","properties":{"id":"eroon-turhista-riveista-valilyonneista-ja-rivinvaihdoista","style":"position:relative;"},"children":[{"type":"text","value":"Eroon turhista riveistä, välilyönneistä ja rivinvaihdoista"},{"type":"element","tagName":"a","properties":{"href":"#eroon-turhista-riveista-valilyonneista-ja-rivinvaihdoista","ariaLabel":"eroon turhista riveista valilyonneista ja rivinvaihdoista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tallentaneet Excelistä nimiä taulukon CSV-muodossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" sukunimi\nPekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" Python\nJaana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" Java\nHeikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":" Haskell"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten tyypillistä, Excel on lisännyt sarakkeiden väliin erottimena toimivan puolipisteen lisäksi myös välilyönnin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Haluamme tulostaa listalla olevat sukunimet. Koska ensimmäinen rivi kertoo sarakkeiden otsikot, ohitamme sen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sukunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohitetaan otsikkorivi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"etunimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostus näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[' Python\\n', ' Java\\n', ' Haskell']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikkiin paitsi viimeiseen rivin sukunimeen on jäänyt mukaan rivinvaihtomerkki, ja jokaisen sukunimen alkuun on jäänyt ikävä välilyönti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääsisimme näistä eroon aiempien esimerkkien tapaan käyttämällä metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"replace"}]},{"type":"text","value":", mutta parempi vaihtoehto tässä tilanteessa on käyttää metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"strip"}]},{"type":"text","value":", joka poistaa merkkijonon alusta ja lopusta ns. whitespace-merkit, eli välilyönnit, rivinvaihdot ja muut normaalina merkkinä tulostumattomat merkit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kokeillaan metodin toimintaa konsolissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" koe \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'koe'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\\ntesti\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'testi'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarvittava muutos ohjelmaan on helppo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sukunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"henkilot.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"etunimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä oli otsikkorivi, ei huomioida!"}]},{"type":"text","value":"\n sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän jälkeen tulostus on halutunlainen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Python', 'Java', 'Haskell']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonoilla on myös metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lstrip"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rstrip"}]},{"type":"text","value":", jotka poistavat ainoastaan merkkijonon vasemmalla tai oikealla puolella olevia merkkejä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" testimerkkijono \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rstrip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"' testimerkkijono'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">>"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" testimerkkijono \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lstrip"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'testimerkkijono '"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"eri-tiedostoissa-olevien-tietojen-yhdistely","style":"position:relative;"},"children":[{"type":"text","value":"Eri tiedostoissa olevien tietojen yhdistely"},{"type":"element","tagName":"a","properties":{"href":"#eri-tiedostoissa-olevien-tietojen-yhdistely","ariaLabel":"eri tiedostoissa olevien tietojen yhdistely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On hyvin yleistä, että ohjelmassa tarvittava data on talletettu useaan erilliseen tiedostoon. Tarkastellaan esimerkkinä tilannetta, jossa yrityksen henkilöstön tiedot ovat omassa tiedostossaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tyontekijat.csv"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"hetu;nimi;osoite;kaupunki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"080488-123X;Pekka Mikkola;Vilppulantie 7;00700 Helsinki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"290274-044S;Liisa Marttinen;Mannerheimintie 100 A 10;00100 Helsinki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"010479-007Z;Arto Vihavainen;Pihapolku 4;01010 Kerava"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"010499-345K;Leevi Hellas;Tapiolantie 11 B;02000 Espoo"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Työntekijöiden palkat taas ovat talletettu omaan tiedostoonsa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkat.csv"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"hetu;palkka;bonus"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"080488-123X;3300;0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"290274-044S;4150;200"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"010479-007Z;1300;1200"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molempien tiedostojen riveillä on ensin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"henkilötunnus"}]},{"type":"text","value":", joka kertoo kenen tiedoista on kyse. Käyttämällä henkilötunnusta yhdistävänä tekijänä, on helppo yhdistää henkilöiden nimet ja palkat toisiinsa, ja tehdä esimerkiksi ohjelma, joka tulostaa seuraavanlaisen näkymän henkilöiden ansioihin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"ansiot:\nPekka Mikkola 3300 euroa\nLiisa Marttinen 4350 euroa\nArto Vihavainen 2500 euroa\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käyttää aputietorakenteena kahta saankirjaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimet"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkat"}]},{"type":"text","value":", joissa molemmissa avaimena toimii henkilötunnus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tyontekijat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hetu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\npalkat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"palkat.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"';'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hetu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":"\n palkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ansiot:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" hetu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" nimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" hetu "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" palkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n palkka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" palkat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"hetu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"palkka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" 0 euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma siis muodostaa ensin sanakirjat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimet"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palkat"}]},{"type":"text","value":", joiden sisältö näyttää seuraavilta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'080488-123X'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Pekka Mikkola'"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'290274-044S'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Liisa Marttinen'"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'010479-007Z'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Arto Vihavainen'"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'010499-345K'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'Leevi Hellas'"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'080488-123X'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3300"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'290274-044S'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4350"}]},{"type":"text","value":",\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'010479-007Z'"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lopun for-silmukka yhdistää henkilöiden nimet ja niitä vastaavat palkat sanakirjojen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma huomioi myös tilanteen, jossa henkilön palkkatietoja ei ole olemassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että koska ohjelma käyttää aputietorakenteena sanakirjaa, ei henkilöitä vastaavien rivien järjestyksellä ole merkitystä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 1","tmcname":"osa06-04_kurssin_tulokset_osa1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma käsittelee kahta CSV-muotoista tiedostoa. Toisessa on tieto opiskelijoista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"opnro;etunimi;sukunimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345678;pekka;peloton"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345687;jaana;javanainen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345699;liisa;virtanen"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ja toisessa opiskelijoiden viikoittaisesta tehtävien lukumäärästä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"opnro;v1;v2;v3;v4;v5;v6;v7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345678;4;1;1;4;5;2;4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345687;3;5;3;1;5;4;6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345699;10;2;2;7;10;2;2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molempien CSV-tiedostojen ensimmäinen rivi on otsikkorivi, joka kertoo kunkin kentän sisällön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy tiedostojen nimet ja tämän jälkeen tulostaa kunkin opiskelijan tehtävien yhteenlasketun määrän. Ohjelma toimii seuraavasti, kun tiedostojen sisältö on yllä oleva:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\nTehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\npekka peloton 21\njaana javanainen 27\nliisa virtanen 35"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Ohjelman testaileminen on toivottoman hidasta, jos käyttäjä joutuu kirjoittamaan syötteen aina käsin. Testausvaiheessa syötteet kannattaakin antaa \"kovakoodaamalla\" ne esim. seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne ei tulla"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opiskelijatiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tehtävätiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kovakoodatut syötteet"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelijat1.csv\""}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tehtavat1.csv\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman varsinainen toiminnallisuus on nyt \"piilotettu\" ehdon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"-haaraan, jota ei suoriteta koskaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos taas halutaan nopeasti tarkastaa, toimiiko ohjelma myös käyttäjän kirjoittaessa syötteen, voidaan arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" muuttaa arvoksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opiskelijatiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tehtävätiedot: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tänne ei tulla!"}]},{"type":"text","value":"\n opiskelijatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelijat1.csv\""}]},{"type":"text","value":"\n tehtavatiedot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tehtavat1.csv\""}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun koodi on kunnossa, voi ehtorakenteen poistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Toinen huomio"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 2","tmcname":"osa06-05_kurssin_tulokset_osa2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellinen tehtävä laajenee vielä siten, että myös opiskelijan koepisteet luetaan CSV-tiedostosta. Tiedoston sisältö näyttää seuraavalta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"opnro;k1;k2;k3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345678;4;1;4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345687;3;5;3"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"12345699;10;2;2"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi opiskelija jonka opiskelijanumero on 12345678 on saanut kokeesta 4+1+4 eli yhteensä 9 pistettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma kysyy tiedostojen nimet ja tulostaa jokaisen opiskelijan arvosanan:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\nTehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\nKoepisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koepisteet1.csv"}]},{"type":"text","value":"\npekka peloton 0\njaana javanainen 1\nliisa virtanen 3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtyjen harjoitustehtävien määrästä saa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pisteitä"}]},{"type":"text","value":" siten, että vähintään 10 % tehtävämäärästä tuo 1 pisteen, vähintään 20% tuo 2 pistettä jne., ja 100 % eli 40 harjoitustehtävää tuo 10 pistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssin arvosana määräytyy kokeen ja harjoituspisteiden summan perusteella seuraavan taulukon mukaan:"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"kokeen pisteet + harjoitusten pisteet"}]},{"type":"element","tagName":"th","properties":{"align":"center"},"children":[{"type":"text","value":"arvosana"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0-14"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"0 (eli hylätty)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"15-17"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"18-20"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"2"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"21-23"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"24-27"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"4"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"28-"}]},{"type":"element","tagName":"td","properties":{"align":"center"},"children":[{"type":"text","value":"5"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 3","tmcname":"osa06-06_kurssin_tulokset_osa3"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä muotoillaan edellisen tehtävän tulostus parempaan muotoon:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\nTehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\nKoepisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koepisteet1.csv"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"nimi teht_lkm teht_pist koe_pist yht_pist arvosana\npekka peloton 21 5 9 14 0\njaana javanainen 27 6 11 17 1\nliisa virtanen 35 8 14 22 3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisella rivillä siis tulostetaan opiskelijan tehtävien lukumäärä, tehtävistä saatavat pisteet, kokeen pisteet, yhteispisteet (koe+harjoitukset) sekä arvosana \"siististi\" siten, että tulostus on jaoteltu sarakkeisiin. Nimisarakkeen leveys on 30 merkkiä ja muiden sarakkeiden leveys on tasan 10 merkkiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävässä kannattaa käyttää "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/5-tulostuksen-muotoilu"},"children":[{"type":"text","value":"osassa 4"}]},{"type":"text","value":" käsiteltyjä f-merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kannattaa huomata, että merkkijonojen ja lukujen tulostaminen noudattaa hieman erilaista logiikkaa f-merkkijonoissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"sana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":">10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"python jatkuu\n pythonjatkuu\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvoisesti siis merkkijono sisentyy määritellyn levyisen alueen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"vasempaan"}]},{"type":"text","value":" reunaan. Merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":"voidaan ohjata tulostus sisentymään oikeaan reunaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lukuja tulostettaessa logiikka on päinvastainen"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"42"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","format-spec"]},"children":[{"type":"text","value":"<10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"jatkuu\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":" 42jatkuu\n42 jatkuu\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvo lukujen yhteydessä on tulostuksen sisentyminen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"oikeaan"}]},{"type":"text","value":" reunaan. Merkillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" voidaan ohjata luvun tulostus sisentymään vasempaan reunaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Spell checker","tmcname":"osa06-07_spellchecker"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. Seuraavassa kaksi käyttöesimerkkiä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"We use ptython to make a spell checker"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"We use *ptython* to make a spell checker\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"This is acually a good and usefull program"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"This is *acually* good and *usefull* program\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjainten koolla ei ole merkitystä ohjelman toiminnan kannalta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tunnistaa oikein kirjoitetut sanat käyttämällä tehtäväpohjassa olevaa tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"wordlist.txt"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Toinen huomio"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Reseptihaku","tmcname":"osa06-08_reseptihaku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään ohjelma, joka tarjoaa käyttäjälle mahdollisuuden reseptien hakuun reseptin nimen, valmistusajan tai raaka-aineen nimen perusteella. Ohjelma lukee reseptit käyttäjän antamasta tiedostosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokainen resepti koostuu kolmesta tai useammasta rivistä reseptitiedostossa. Ensimmäisellä rivillä on reseptin nimi, toisella rivillä reseptin valmistusaika (kokonaisluku), ja kolmas ja sitä seuraavat rivit kertovat reseptin raaka-aineet. Reseptin raaka-aineiden kuvaus päättyy tyhjään riviin, poislukien viimeinen resepti. Tiedostossa voi olla useampia reseptejä. Alla kuvattuna esimerkkitiedosto."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"Lettutaikina\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"text","value":"\nmaito\nkananmuna\njauho\nsokeri\nsuola\nvoi\n\nLihapullat\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"text","value":"\njauheliha\nkananmuna\nkorppujauho\n\nTofurullat\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\ntofu\nriisi\nvesi\nporkkana\nkurkku\navokado\nwasabi\n\nPullataikina\n"},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"text","value":"\nmaito\nhiiva\nkananmuna\nsuola\nsokeri\nkardemumma\nvoi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":" tässä tehtävässä lienee järkevintä lukea ensin tiedoston rivit listalle ja käsitellä sitten tätä listaa tehtävän edellyttämällä tavalla."}]},{"type":"element","tagName":"h4","properties":{"id":"reseptien-haku-nimen-perusteella","style":"position:relative;"},"children":[{"type":"text","value":"reseptien haku nimen perusteella"},{"type":"element","tagName":"a","properties":{"href":"#reseptien-haku-nimen-perusteella","ariaLabel":"reseptien haku nimen perusteella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_nimi(tiedosto: str, sana: str)"}]},{"type":"text","value":" joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden nimessä esiintyy toisena parametrina annettu merkkijono. Funktio palauttaa listan, jossa kutakin löydettyä reseptiä vastaa merkkijono, joka kertoo reseptin nimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"loydetyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"reseptit1.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pulla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" resepti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loydetyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lihapullat\nPullataikina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että hakusanojen kirjainten koolla ei ole merkitystä, eli hakusana "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pulla"}]},{"type":"text","value":" löytää myös reseptin "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Pullataikina"}]},{"type":"text","value":", joka alkaa isolla kirjaimella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]},{"type":"element","tagName":"h4","properties":{"id":"reseptien-hakeminen-valmistusajan-perusteella","style":"position:relative;"},"children":[{"type":"text","value":"reseptien hakeminen valmistusajan perusteella"},{"type":"element","tagName":"a","properties":{"href":"#reseptien-hakeminen-valmistusajan-perusteella","ariaLabel":"reseptien hakeminen valmistusajan perusteella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_aika(tiedosto: str, aika: int)"}]},{"type":"text","value":" joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden valmistusaika on korkeintaan parametrina kerrottu minuuttimäärä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana, nyt kerrotaan myös reseptin valmistumisaika. Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"loydetyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"reseptit1.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" resepti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loydetyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lettutaikina, valmistusaika 15 min"}]}]},{"type":"element","tagName":"h4","properties":{"id":"reseptien-hakeminen-raaka-aineen-perusteella","style":"position:relative;"},"children":[{"type":"text","value":"reseptien hakeminen raaka-aineen perusteella"},{"type":"element","tagName":"a","properties":{"href":"#reseptien-hakeminen-raaka-aineen-perusteella","ariaLabel":"reseptien hakeminen raaka aineen perusteella permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Varoitus"}]},{"type":"text","value":" tämä osa on edellisiä selvästi haastavampi. Jos tehtävä ei lähde heti aukenemaan, kannattanee tehdä ensin osan muut tehtävät ja palata lopuksi takaisin tähän. Huomaa, että voit lähettää moniosaisessa tehtävässä palvelimelle myös yksittäiset osat"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_raakaaine(tiedosto: str, aine: str)"}]},{"type":"text","value":" joka hakee parametrina annetun nimisestä tiedostosta reseptit, jotka sisältävät toisena parametrina annetun raaka-aineen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana. Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"loydetyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_raakaaine"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"reseptit1.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"maito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" resepti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loydetyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"resepti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lettutaikina, valmistusaika 15 min\nPullataikina, valmistusaika 60 min"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kaupunkipyörät","tmcname":"osa06-09_kaupunkipyorat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä tehdään muutama funktio, joiden avulla voidaan tarkastella "},{"type":"element","tagName":"a","properties":{"href":"https://kaupunkipyorat.hsl.fi/fi","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"kaupunkipyörien"}]},{"type":"text","value":" asemien sijaintia sisältävää tiedostoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostot näyttävät seuraavilta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Longitude;Latitude;FID;name;total_slot;operative;id"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"24.950292890004903;60.155444793742276;1;Kaivopuisto;30;Yes;001"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"24.956347471358754;60.160959093887129;2;Laivasillankatu;12;Yes;002"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"24.944927399779715;60.158189199971673;3;Kapteeninpuistikko;16;Yes;003"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutakin asemaa kohti tiedostossa on yksi rivi, joka kertoo aseman koordinaatit, aseman nimen ja muuta tunnistetietoa."}]},{"type":"element","tagName":"h4","properties":{"id":"asemien-valinen-etaisyys","style":"position:relative;"},"children":[{"type":"text","value":"asemien välinen etäisyys"},{"type":"element","tagName":"a","properties":{"href":"#asemien-valinen-etaisyys","ariaLabel":"asemien valinen etaisyys permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ensin funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_asematiedot(tiedosto: str)"}]},{"type":"text","value":", joka lukee asematiedot tiedostosta ja palauttaa ne sanakirjana, joka näyttää tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"{\n \"Kaivopuisto: (24.950292890004903, 60.155444793742276),\n \"Laivasillankatu: (24.956347471358754, 60.160959093887129),\n \"Kapteeninpuistikko: (24.944927399779715, 60.158189199971673)\n}\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli sanakirjan avaimena on aseman nimi ja arvona tuple, joka koostuu aseman koordinaateista, ensimmäisenä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Longitude"}]},{"type":"text","value":" ja toisena "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Latitude"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee seuraavaksi funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"etaisyys(asemat: dict, asema1: str, asema2: str)"}]},{"type":"text","value":", joka palauttaa parametrina kerrottujen asemien välisen etäisyyden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Etäisyys lasketaan seuraavalla kaavalla (hyödyntäen Pythagoraan lausetta):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä rivi tarvitaan, jotta saadaan käyttöön metodi sqrt"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\nx_kilometreina "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"longitude1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" longitude2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55.26"}]},{"type":"text","value":"\ny_kilometreina "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"latitude1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" latitude2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"111.2"}]},{"type":"text","value":"\netaisyys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x_kilometreina"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" y_kilometreina"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuorituksia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asemat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_asematiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'stations1.csv'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etaisyys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asemat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Designmuseo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hietalahdentori\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ne "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" etaisyys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asemat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viiskulma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kaivopuisto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"e"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0.9032737292463177\n0.7753594392019532"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom!"}]},{"type":"text","value":" Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#mita-jos-vs-code-ei-loyda-tiedostoja-koodia-suoritettaessa"},"children":[{"type":"text","value":"täällä"}]},{"type":"text","value":" kokeilla olevaa ohjetta."}]},{"type":"element","tagName":"h4","properties":{"id":"pisin-valimatka","style":"position:relative;"},"children":[{"type":"text","value":"pisin välimatka"},{"type":"element","tagName":"a","properties":{"href":"#pisin-valimatka","ariaLabel":"pisin valimatka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin_etaisyys(asemat: dict)"}]},{"type":"text","value":", joka selvittää, mitkä kaksi asemaa ovat kauimpana toisistaan. Funktio palauttaa tuplen, jonka ensimmäiset kaksi arvoa kertovat asemien nimet ja kolmas arvo niiden välisen etäisyyden."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asemat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hae_asematiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'stations1.csv'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nasema1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" asema2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suurin_etaisyys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asemat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" asema2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suurin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laivasillankatu Hietalahdentori 1.478708873076181"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten tiedoston sisällön voi lukea Pythonissa
    • \n
    • Tiedät, mitä ovat tekstitiedosto ja CSV-tiedosto
    • \n
    • Osaat purkaa ja käsitellä CSV-tiedoston sisällön ohjelmassa
    • \n

    Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

    Ei kannata huolestua, vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole pakko tehdä, kuten arvosteluperusteet toteavat, kurssin läpipääsyyn vaaditaan vähintään 25 % jokaisen osan ohjelmointitehtävien pisteistä.

    Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi, jos aikaa vielä jää.

    Lohdutuksen sanana todettakoon, että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä melko helpolta.

    Yksi tavallinen ohjelmoinnin käyttötarkoitus on käsitellä tiedostoissa olevaa tietoa. Ohjelmat voivat lukea tietoa tiedostoista ja tallentaa tuloksia tiedostoihin. Tiedostojen avulla voimme käsitellä suuriakin aineistoja helposti automaattisesti.

    Oletamme tällä kurssilla, että käsiteltävät tiedostot ovat tekstitiedostoja eli ne muodostuvat riveistä, joilla on tekstiä. Esimerkiksi kurssilla käytetty Visual Studio Code -editori käsittelee tekstitiedostoja. Huomaa, että esimerkiksi Word-dokumentti ei ole tekstitiedosto, vaan siinä on tekstin lisäksi muotoilutietoja ja sen käsittely ohjelmallisesti olisi vaikeaa.

    Tiedostosta lukeminen

    Käytetään esimerkkinä tiedostoa esimerkki.txt, jonka sisältönä on:

    Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi.

    Hyvä tapa käsitellä tiedostoja Pythonissa on käyttää with-lausetta, jonka alkurivi avaa tiedoston. Tämän jälkeen tulee lohko, jonka sisällä tiedostoa voi käsitellä. Lohkon jälkeen tiedosto sulkeutuu automaattisesti, eikä sitä voi enää käsitellä.

    Esimerkiksi seuraava koodi lukee ja tulostaa tiedoston sisällön:

    with open(\"esimerkki.txt\") as tiedosto:\n    sisalto = tiedosto.read()\n    print(sisalto)

    Moi kaikki!\nEsimerkkitiedostomme on kolmerivinen.\nViimeinen rivi.

    Koodissa muuttuja tiedosto on tiedostokahva, jonka kautta tiedostoa voi käsitellä avaamisen jälkeen. Tässä tapauksessa käytämme metodia read, joka palauttaa koko tiedoston sisällön yhtenä merkkijonona. Tässä tapauksessa palautettu merkkijono on seuraava:

    \"Moi kaikki!\\nEsimerkkitiedostomme on kolmerivinen.\\nViimeinen rivi.\"

    Tiedoston sisällön läpikäynti

    Metodi read on näppärä, jos halutaan esimerkiksi tulostaa tiedoston sisältö kokonaisuudessaan ruudulle. Usein haluamme kuitenkin käsitellä tiedostoa rivi kerrallaan.

    Voimme käyttää tiedoston sisällön lukemiseen for-silmukkaa, joka käy läpi tiedoston rivit yksi kerrallaan – siis samaan tapaan kuin esimerkiksi listan läpikäynnissä.

    Seuraava esimerkki lukee saman tiedoston nyt käyttäen for-silmukkaa, poistaa joka rivin perästä rivinvaihdon ja laskee rivien yhteispituuden:

    with open(\"esimerkki.txt\") as tiedosto:\n    laskuri = 0\n    yhteispituus = 0\n\n    for rivi in tiedosto:\n        rivi = rivi.replace(\"\\n\", \"\")\n        laskuri += 1\n        print(\"Rivi\", laskuri, rivi)\n        pituus = len(rivi)\n        yhteispituus += pituus\n\nprint(\"Rivien yhteispituus:\", yhteispituus)

    Rivi 1 Moi kaikki!\nRivi 2 Esimerkkitiedostomme on kolmerivinen.\nRivi 3 Viimeinen rivi.\nRivien yhteispituus: 63

    Huomaa, että rivien läpikäynnissä jokaisen rivin perässä on rivinvaihto \\n. Yllä oleva koodi kuitenkin poistaa rivinvaihdot replace-funktiolla, joka korvaa rivinvaihdot tyhjillä merkkijonoilla. Tämän ansiosta tulostukseen ei tule ylimääräisiä rivivaihtoja ja ohjelma laskee oikein tiedoston rivien yhteispituuden.

    Tiedostoon luvut.txt on tallennettu lukuja, yksi luku per rivi seuraavan esimerkin mukaisesti:

    2\n45\n108\n3\n-10\n1100\n...jne...

    Kirjoita funktio suurin, joka lukee tiedoston ja palauttaa suurimman tiedostosta löytyvän luvun.

    Huomaa, että tiedoston nimi on aina luvut.txt eikä funktiolle anneta parametria.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa heti tehtävän jälkeen olevaa ohjetta.

    Mitä jos VS code ei löydä tiedostoja koodia suoritettaessa?

    Jos VS Code ei löydä tiedostoa suorittaessasi koodia (vihreää nappia painamalla) vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla seuraavaa:

      \n
    • Mene asetuksiin valikosta File -> Preferences -> Settings
    • \n
    • Etsi muutettava kohta hakusanalla \"executeinfile\"
    • \n
    • Valitse välilehti Workspace
    • \n
    • Laita raksi kohtaan Python -> Terminal -> Execute In File Dir
    • \n

    Oikein tehtynä asetus näyttää suunilleen seuraavalta:

    \n \n \n \n \n \n \"6\n \n \n

    Jos edellinenkään ei toimi, voit kopioida kansiossa src olevan testaukseen käytetyn tiedoston sisällön

    \n \n \n \n \n \n \"6\n \n \n

    suoraan tehtäväkansion alle

    \n \n \n \n \n \n \"6\n \n \n

    Tiedostoja lukevan koodin debuggaus

    Jos yrität käyttää VS Coden debuggeria tiedostoja lukevan koodin suorittamiseen, törmäät ikävään virheilmoitukseen:

    \n \n \n \n \n \n \"6\n \n \n

    Syynä tälle on se, että debuggeri etsii tiedostoja tehtäväkansion juuresta eikä edes Execute In File Dir -asetus ei asiaa muuta. Helpoin ratkaisu ongelmaan on edellisessä luvussa kuvattu testaukseen käytetyn tiedoston kopioiminen tehtävähakemiston juureen.

    Kun olet kopioinut tiedostot tehtävähakemiston juureen, joudut ehkä vielä käynnistämään visual studio coden uudelleen jotta kaikki toimisi.

    CSV-tiedoston lukeminen

    CSV-tiedosto (Comma Separated Values) on tekstitiedosto, jonka jokaisella rivillä on tietyllä välimerkillä erotettua tietoa. Välimerkkinä on usein pilkku , tai puolipiste ;, mutta mikä tahansa muukin merkki on periaatteessa mahdollinen.

    CSV-tiedostoja käytetään usein erilaisten aineistojen esittämiseen. Myös Excelin ja muiden vastaavien ohjelmien taulukot voidaan tallentaa CSV-muodossa, jolloin niitä on helppo käsitellä muilla ohjelmilla.

    Voimme lukea CSV-tiedoston rivit for-silmukalla, mutta miten erottaa rivillä olevat tiedot toisistaan? Helppo tapa on käyttää merkkijonojen split-metodia: metodille annetaan haluttu välimerkki, ja se palauttaa tiedot välimerkin mukaan eroteltuna listana merkkijonoja.

    Esimerkki metodin käytöstä:

    teksti = \"apina,banaani,cembalo\"\nsanat = teksti.split(\",\")\nfor sana in sanat:\n    print(sana)

    apina\nbanaani\ncembalo

    Tarkastellaan esimerkkinä tiedostoa arvosanat.csv, joka sisältää jokaisella rivillä aluksi opiskelijan nimen ja sen jälkeen tämän eri kursseista saamat arvosanat. Tiedot on erotettu toisistaan puolipisteillä.

    Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4

    Seuraava ohjelma käy läpi tiedoston rivit, jakaa jokaisen rivin osiin ja näyttää opiskelijan nimen sekä arvosanat.

    with open(\"arvosanat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        rivi = rivi.replace(\"\\n\", \"\")\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        arvosanat = osat[1:]\n        print(\"Nimi:\", nimi)\n        print(\"Arvosanat:\", arvosanat)

    Nimi: Pekka\nArvosanat: ['5', '4', '5', '3', '4', '5', '5', '4', '2', '4']\nNimi: Paula\nArvosanat: ['3', '4', '2', '4', '4', '2', '3', '1', '3', '3']\nNimi: Pirjo\nArvosanat: ['4', '5', '5', '4', '5', '5', '4', '5', '4', '4']

    Tiedostossa hedelmat.csv on hedelmiä hintoineen seuraavan esimerkin mukaisesti:

    banaani;6.50\nomena;4.95\nappelsiini;8.0\n...jne...

    Kirjoita funktio lue_hedelmat, joka lukee hedelmätiedoston ja muodostaa siitä sanakirjan, jossa hedelmän nimi on avain ja hinta arvo. Hinnan tulee olla float-arvona sanakirjassa.

    Huomaa, että tiedoston nimi on aina hedelmat.csv eikä funktiolle anneta parametria.

    Lopuksi funktio palauttaa tämän sanakirjan.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla täällä olevaa ohjetta.

    Tiedostossa matriisi.txt on seuraavan esimerkin kaltainen matriisi:

    1,0,2,8,2,1,3,2,5,2,2,2\n9,2,4,5,2,4,2,4,1,10,4,2\n...jne...

    Kirjoita funktiot summa ja maksimi, jotka lukevat ja palauttavat nimensä mukaisesti matriisin kaikkien alkioiden summan ja suurimman alkion.

    Kirjoita lisäksi funktio rivisummat, joka palauttaa listassa kaikkien matriisin rivien summat. Esimerkiksi matriisille

    1,2,3\n2,3,4

    funktio palauttaisi listan [6, 9].

    Vinkki: Voit kirjoittaa ohjelmaan myös muita funktioita – kannattaa siis miettiä, mitä kaikkia yhteisiä toimintoja kolmea funktiota varten vaaditaan. Huomaa, että tiedoston nimi on aina matriisi.txt eikä tehtävänannossa määritellyille funktioille anneta parametreja. Itse lisäämäsi funktiot voivat hyödyntää myös parametreja.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit kokeilla täällä olevaa ohjetta.

    Saman tiedoston lukeminen moneen kertaan

    Joissain tilanteissa ohjelman on tarvetta lukea sama tiedosto useampaan kertaan. Tarkastellaan esimerkkinä seuraavaa ohjelmaa, joka käsittelee henkilötietoja sisältävää tiedostoa:

    \nPekka;40;Helsinki\nEmilia;34;Espoo\nErkki;42;Turku\nAntti;100;Helsinki\nLiisa;58;Suonenjoki\n
    with open(\"henkilot.csv\") as tiedosto:\n    # tulostetaan nimet\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        print(\"Nimi:\", osat[0])\n\n    # etsitään vanhin\n    vanhimman_ika = -1\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        ika = int(osat[1])\n        if ika > vanhimman_ika:\n            vanhimman_ika = ika\n            vanhin = nimi\n    print(\"vanhin on\", vanhin)

    Ohjelma aiheuttaa erikoisen virheilmoituksen:

    Traceback (most recent call last):\n    print(\"vanhin on\"; vanhin)\nUnboundLocalError: local variable 'vanhin' referenced before assignment

    Syynä virheelle on se, että jälkimmäistä for-silmukkaa ei suoriteta ollenkaan, sillä tiedoston voi lukea vain kerran. Tämän jälkeen ollaan päästy \"tiedoston loppuun\", ja vaikka yritetään lukea tiedostosta lisää jälkimmäisessä silmukassa, tietoon ei päästä enää käsiksi.

    Tiedosto onkin avattava uudelleen komennolla open toista lukukertaa varten:

    with open(\"henkilot.csv\") as tiedosto:\n    # tulostetaan nimet\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        print(\"Nimi:\", osat[0])\n\nwith open(\"henkilot.csv\") as tiedosto:\n    # etsitään vanhin\n    vanhimman_ika = -1\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        ika = int(osat[1])\n        if ika > vanhimman_ika:\n            vanhimman_ika = ika\n            vanhin = nimi\n    print(\"vanhin on\", vanhin)

    Yleensä aina on kuitenkin parasta lukea tiedosto vain kerran ja tallentaa se muotoon, jota ohjelman toiminnallisuudet pystyvät hyödyntämään:

    henkilot = []\n# luetaan tiedostosta henkilöt listaan\nwith open(\"henkilot.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        henkilot.append((osat[0], int(osat[1]), osat[2]))\n\n# tulostetaan nimet\nfor henkilo in henkilot:\n    print(\"Nimi:\", henkilo[0])\n\n# etsitään vanhin\nvanhimman_ika = -1\nfor henkilo in henkilot:\n    nimi = henkilo[0]\n    ika = henkilo[1]\n    if ika > vanhimman_ika:\n        vanhimman_ika = ika\n        vanhin = nimi\nprint(\"vanhin on\", vanhin)

    Lisää CSV-tiedoston käsittelyä

    Jatketaan opiskelijoiden arvosanoja sisältävän tiedoston arvosanat.csv käsittelyä. Tiedosto näyttää siis seuraavalta:

    Pekka;5;4;5;3;4;5;5;4;2;4\nPaula;3;4;2;4;4;2;3;1;3;3\nPirjo;4;5;5;4;5;5;4;5;4;4

    Seuraava ohjelma luo tiedoston perusteella sanakirjan arvosanat, jossa jokainen avain on opiskelijan nimi ja vastaava arvo on lista arvosanoista. Ohjelma muuttaa arvosanat kokonaisluvuiksi, jotta niitä on mukavampaa käsitellä myöhemmin.

    arvosanat = {}\nwith open(\"arvosanat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        rivi = rivi.replace(\"\\n\", \"\")\n        osat = rivi.split(\";\")\n        nimi = osat[0]\n        arvosanat[nimi] = []\n        for arvosana in osat[1:]:\n            arvosanat[nimi].append(int(arvosana))\n\nprint(arvosanat)

    {'Pekka': [5, 4, 5, 3, 4, 5, 5, 4, 2, 4], 'Paula': [3, 4, 2, 4, 4, 2, 3, 1, 3, 3], 'Pirjo': [4, 5, 5, 4, 5, 5, 4, 5, 4, 4]}

    Tämän jälkeen voimme vaikkapa tulostaa analyysin arvosanoista käymällä läpi sanakirjan arvosanat perusteella:

    for nimi, lista in arvosanat.items():\n    paras = max(lista)\n    keskiarvo = sum(lista) / len(lista)\n    print(f\"{nimi}: paras arvosana {paras}, keskiarvo {keskiarvo:.2f}\")

    Pekka: paras arvosana 5, keskiarvo 4.10\nPaula: paras arvosana 4, keskiarvo 2.90\nPirjo: paras arvosana 5, keskiarvo 4.50

    Kannattaa tutustua huolella esimerkkikoodiin. Se voi ensisilmäyksellä vaikuttaa monimutkaiselta, mutta ratkaisu on helposti sovellettavissa monenlaisiin datatiedostoihin.

    Eroon turhista riveistä, välilyönneistä ja rivinvaihdoista

    Olemme tallentaneet Excelistä nimiä taulukon CSV-muodossa:

    etunimi; sukunimi\nPekka; Python\nJaana; Java\nHeikki; Haskell

    Kuten tyypillistä, Excel on lisännyt sarakkeiden väliin erottimena toimivan puolipisteen lisäksi myös välilyönnin.

    Haluamme tulostaa listalla olevat sukunimet. Koska ensimmäinen rivi kertoo sarakkeiden otsikot, ohitamme sen:

    sukunimet = []\nwith open(\"henkilot.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(\";\")\n        # ohitetaan otsikkorivi\n        if osat[0] == \"etunimi\":\n            continue\n        sukunimet.append(osat[1])\n\nprint(sukunimet)

    Tulostus näyttää seuraavalta:

    [' Python\\n', ' Java\\n', ' Haskell']

    Kaikkiin paitsi viimeiseen rivin sukunimeen on jäänyt mukaan rivinvaihtomerkki, ja jokaisen sukunimen alkuun on jäänyt ikävä välilyönti.

    Pääsisimme näistä eroon aiempien esimerkkien tapaan käyttämällä metodia replace, mutta parempi vaihtoehto tässä tilanteessa on käyttää metodia strip, joka poistaa merkkijonon alusta ja lopusta ns. whitespace-merkit, eli välilyönnit, rivinvaihdot ja muut normaalina merkkinä tulostumattomat merkit.

    Kokeillaan metodin toimintaa konsolissa:

    >>> \" koe \".strip()\n'koe'\n>>> \"\\n\\ntesti\\n\".strip()\n'testi'\n>>>

    Tarvittava muutos ohjelmaan on helppo:

    sukunimet = []\nwith open(\"henkilot.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(';')\n        if osat[0] == \"etunimi\":\n            continue # tämä oli otsikkorivi, ei huomioida!\n        sukunimet.append(osat[1].strip())\nprint(sukunimet)

    Tämän jälkeen tulostus on halutunlainen:

    ['Python', 'Java', 'Haskell']

    Merkkijonoilla on myös metodit lstrip ja rstrip, jotka poistavat ainoastaan merkkijonon vasemmalla tai oikealla puolella olevia merkkejä.

    >>> \" testimerkkijono  \".rstrip()\n' testimerkkijono'\n>>> \" testimerkkijono  \".lstrip()\n'testimerkkijono  '

    Eri tiedostoissa olevien tietojen yhdistely

    On hyvin yleistä, että ohjelmassa tarvittava data on talletettu useaan erilliseen tiedostoon. Tarkastellaan esimerkkinä tilannetta, jossa yrityksen henkilöstön tiedot ovat omassa tiedostossaan tyontekijat.csv:

    hetu;nimi;osoite;kaupunki\n080488-123X;Pekka Mikkola;Vilppulantie 7;00700 Helsinki\n290274-044S;Liisa Marttinen;Mannerheimintie 100 A 10;00100 Helsinki\n010479-007Z;Arto Vihavainen;Pihapolku 4;01010 Kerava\n010499-345K;Leevi Hellas;Tapiolantie 11 B;02000 Espoo

    Työntekijöiden palkat taas ovat talletettu omaan tiedostoonsa palkat.csv

    hetu;palkka;bonus\n080488-123X;3300;0\n290274-044S;4150;200\n010479-007Z;1300;1200

    Molempien tiedostojen riveillä on ensin henkilötunnus, joka kertoo kenen tiedoista on kyse. Käyttämällä henkilötunnusta yhdistävänä tekijänä, on helppo yhdistää henkilöiden nimet ja palkat toisiinsa, ja tehdä esimerkiksi ohjelma, joka tulostaa seuraavanlaisen näkymän henkilöiden ansioihin:

    \nansiot:\nPekka Mikkola    3300 euroa\nLiisa Marttinen  4350 euroa\nArto Vihavainen  2500 euroa\n

    Ohjelma käyttää aputietorakenteena kahta saankirjaa nimet ja palkat, joissa molemmissa avaimena toimii henkilötunnus:

    nimet = {}\n\nwith open(\"tyontekijat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(';')\n        if osat[0] == \"hetu\":\n            continue\n        nimet[osat[0]] = osat[1]\n\npalkat = {}\n\nwith open(\"palkat.csv\") as tiedosto:\n    for rivi in tiedosto:\n        osat = rivi.split(';')\n        if osat[0] == \"hetu\":\n            continue\n        palkat[osat[0]] = int(osat[1]) +int(osat[2])\n\nprint(\"ansiot:\")\n\nfor hetu, nimi in nimet.items():\n    if hetu in palkat:\n        palkka = palkat[hetu]\n        print(f\"{nimi:16} {palkka} euroa\")\n    else:\n        print(f\"{nimi:16} 0 euroa\")

    Ohjelma siis muodostaa ensin sanakirjat nimet ja palkat, joiden sisältö näyttää seuraavilta:

    {\n    '080488-123X': 'Pekka Mikkola',\n    '290274-044S': 'Liisa Marttinen',\n    '010479-007Z': 'Arto Vihavainen',\n    '010499-345K': 'Leevi Hellas'\n}\n\n{\n    '080488-123X': 3300,\n    '290274-044S': 4350,\n    '010479-007Z': 2500\n}

    Lopun for-silmukka yhdistää henkilöiden nimet ja niitä vastaavat palkat sanakirjojen avulla.

    Ohjelma huomioi myös tilanteen, jossa henkilön palkkatietoja ei ole olemassa.

    Huomaa, että koska ohjelma käyttää aputietorakenteena sanakirjaa, ei henkilöitä vastaavien rivien järjestyksellä ole merkitystä.

    Ohjelma käsittelee kahta CSV-muotoista tiedostoa. Toisessa on tieto opiskelijoista:

    opnro;etunimi;sukunimi\n12345678;pekka;peloton\n12345687;jaana;javanainen\n12345699;liisa;virtanen

    ja toisessa opiskelijoiden viikoittaisesta tehtävien lukumäärästä:

    opnro;v1;v2;v3;v4;v5;v6;v7\n12345678;4;1;1;4;5;2;4\n12345687;3;5;3;1;5;4;6\n12345699;10;2;2;7;10;2;2

    Molempien CSV-tiedostojen ensimmäinen rivi on otsikkorivi, joka kertoo kunkin kentän sisällön.

    Tee ohjelma, joka kysyy tiedostojen nimet ja tämän jälkeen tulostaa kunkin opiskelijan tehtävien yhteenlasketun määrän. Ohjelma toimii seuraavasti, kun tiedostojen sisältö on yllä oleva:

    Opiskelijatiedot: opiskelijat1.csv\nTehtävätiedot: tehtavat1.csv\npekka peloton 21\njaana javanainen 27\nliisa virtanen 35

    Vinkki: Ohjelman testaileminen on toivottoman hidasta, jos käyttäjä joutuu kirjoittamaan syötteen aina käsin. Testausvaiheessa syötteet kannattaakin antaa \"kovakoodaamalla\" ne esim. seuraavasti:

    if False:\n    # tänne ei tulla\n    opiskelijatiedot = input(\"Opiskelijatiedot: \")\n    tehtavatiedot = input(\"Tehtävätiedot: \")\nelse:\n    # kovakoodatut syötteet\n    opiskelijatiedot = \"opiskelijat1.csv\"\n    tehtavatiedot = \"tehtavat1.csv\"

    Ohjelman varsinainen toiminnallisuus on nyt \"piilotettu\" ehdon False-haaraan, jota ei suoriteta koskaan.

    Jos taas halutaan nopeasti tarkastaa, toimiiko ohjelma myös käyttäjän kirjoittaessa syötteen, voidaan arvo False muuttaa arvoksi True:

    \nif True:\n    opiskelijatiedot = input(\"Opiskelijatiedot: \")\n    tehtavatiedot = input(\"Tehtävätiedot: \")\nelse:\n    # tänne ei tulla!\n    opiskelijatiedot = \"opiskelijat1.csv\"\n    tehtavatiedot = \"tehtavat1.csv\"

    Kun koodi on kunnossa, voi ehtorakenteen poistaa.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Toinen huomio Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    Edellinen tehtävä laajenee vielä siten, että myös opiskelijan koepisteet luetaan CSV-tiedostosta. Tiedoston sisältö näyttää seuraavalta:

    opnro;k1;k2;k3\n12345678;4;1;4\n12345687;3;5;3\n12345699;10;2;2

    Esimerkiksi opiskelija jonka opiskelijanumero on 12345678 on saanut kokeesta 4+1+4 eli yhteensä 9 pistettä.

    Ohjelma kysyy tiedostojen nimet ja tulostaa jokaisen opiskelijan arvosanan:

    Opiskelijatiedot: opiskelijat1.csv\nTehtävätiedot: tehtavat1.csv\nKoepisteet: koepisteet1.csv\npekka peloton 0\njaana javanainen 1\nliisa virtanen 3

    Tehtyjen harjoitustehtävien määrästä saa pisteitä siten, että vähintään 10 % tehtävämäärästä tuo 1 pisteen, vähintään 20% tuo 2 pistettä jne., ja 100 % eli 40 harjoitustehtävää tuo 10 pistettä. Harjoitustehtävistä saatava pistemäärä on kokonaisluku.

    Kurssin arvosana määräytyy kokeen ja harjoituspisteiden summan perusteella seuraavan taulukon mukaan:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    kokeen pisteet + harjoitusten pisteetarvosana
    0-140 (eli hylätty)
    15-171
    18-202
    21-233
    24-274
    28-5

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tässä tehtävässä muotoillaan edellisen tehtävän tulostus parempaan muotoon:

    Opiskelijatiedot: opiskelijat1.csv\nTehtävätiedot: tehtavat1.csv\nKoepisteet: koepisteet1.csv

    \nnimi                          teht_lkm  teht_pist koe_pist  yht_pist  arvosana\npekka peloton                 21        5         9         14        0\njaana javanainen              27        6         11        17        1\nliisa virtanen                35        8         14        22        3\n

    Jokaisella rivillä siis tulostetaan opiskelijan tehtävien lukumäärä, tehtävistä saatavat pisteet, kokeen pisteet, yhteispisteet (koe+harjoitukset) sekä arvosana \"siististi\" siten, että tulostus on jaoteltu sarakkeisiin. Nimisarakkeen leveys on 30 merkkiä ja muiden sarakkeiden leveys on tasan 10 merkkiä.

    Tehtävässä kannattaa käyttää osassa 4 käsiteltyjä f-merkkijonoja.

    Kannattaa huomata, että merkkijonojen ja lukujen tulostaminen noudattaa hieman erilaista logiikkaa f-merkkijonoissa:

    sana = \"python\"\nprint(f\"{sana:10}jatkuu\")\nprint(f\"{sana:>10}jatkuu\")
    \npython    jatkuu\n    pythonjatkuu\n

    Oletusarvoisesti siis merkkijono sisentyy määritellyn levyisen alueen vasempaan reunaan. Merkillä >voidaan ohjata tulostus sisentymään oikeaan reunaan.

    Lukuja tulostettaessa logiikka on päinvastainen

    luku = 42\nprint(f\"{luku:10}jatkuu\")\nprint(f\"{luku:<10}jatkuu\")
    \n        42jatkuu\n42        jatkuu\n

    Oletusarvo lukujen yhteydessä on tulostuksen sisentyminen oikeaan reunaan. Merkillä < voidaan ohjata luvun tulostus sisentymään vasempaan reunaan.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tee ohjelma, joka pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. Seuraavassa kaksi käyttöesimerkkiä:

    Write text: We use ptython to make a spell checker

    \nWe use *ptython* to make a spell checker\n

    Write text: This is acually a good and usefull program

    \nThis is *acually* good and *usefull* program\n

    Kirjainten koolla ei ole merkitystä ohjelman toiminnan kannalta.

    Ohjelma tunnistaa oikein kirjoitetut sanat käyttämällä tehtäväpohjassa olevaa tiedostoa wordlist.txt.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Toinen huomio Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    Tässä tehtävässä tehdään ohjelma, joka tarjoaa käyttäjälle mahdollisuuden reseptien hakuun reseptin nimen, valmistusajan tai raaka-aineen nimen perusteella. Ohjelma lukee reseptit käyttäjän antamasta tiedostosta.

    Jokainen resepti koostuu kolmesta tai useammasta rivistä reseptitiedostossa. Ensimmäisellä rivillä on reseptin nimi, toisella rivillä reseptin valmistusaika (kokonaisluku), ja kolmas ja sitä seuraavat rivit kertovat reseptin raaka-aineet. Reseptin raaka-aineiden kuvaus päättyy tyhjään riviin, poislukien viimeinen resepti. Tiedostossa voi olla useampia reseptejä. Alla kuvattuna esimerkkitiedosto.

    Lettutaikina\n15\nmaito\nkananmuna\njauho\nsokeri\nsuola\nvoi\n\nLihapullat\n45\njauheliha\nkananmuna\nkorppujauho\n\nTofurullat\n30\ntofu\nriisi\nvesi\nporkkana\nkurkku\navokado\nwasabi\n\nPullataikina\n60\nmaito\nhiiva\nkananmuna\nsuola\nsokeri\nkardemumma\nvoi

    Vihje tässä tehtävässä lienee järkevintä lukea ensin tiedoston rivit listalle ja käsitellä sitten tätä listaa tehtävän edellyttämällä tavalla.

    reseptien haku nimen perusteella

    Tee funktio hae_nimi(tiedosto: str, sana: str) joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden nimessä esiintyy toisena parametrina annettu merkkijono. Funktio palauttaa listan, jossa kutakin löydettyä reseptiä vastaa merkkijono, joka kertoo reseptin nimen.

    Esimerkki funktion käytöstä:

    loydetyt = hae_nimi(\"reseptit1.txt\", \"pulla\")\n\nfor resepti in loydetyt:\n    print(resepti)

    Lihapullat\nPullataikina

    Huomaa, että hakusanojen kirjainten koolla ei ole merkitystä, eli hakusana pulla löytää myös reseptin Pullataikina, joka alkaa isolla kirjaimella.

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    reseptien hakeminen valmistusajan perusteella

    Tee funktio hae_aika(tiedosto: str, aika: int) joka hakee parametrina annetun nimisestä tiedostosta reseptit, joiden valmistusaika on korkeintaan parametrina kerrottu minuuttimäärä.

    Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana, nyt kerrotaan myös reseptin valmistumisaika. Esimerkki funktion käytöstä:

    loydetyt = hae_aika(\"reseptit1.txt\", 20)\n\nfor resepti in loydetyt:\n    print(resepti)

    Lettutaikina, valmistusaika 15 min

    reseptien hakeminen raaka-aineen perusteella

    Varoitus tämä osa on edellisiä selvästi haastavampi. Jos tehtävä ei lähde heti aukenemaan, kannattanee tehdä ensin osan muut tehtävät ja palata lopuksi takaisin tähän. Huomaa, että voit lähettää moniosaisessa tehtävässä palvelimelle myös yksittäiset osat

    Tee funktio hae_raakaaine(tiedosto: str, aine: str) joka hakee parametrina annetun nimisestä tiedostosta reseptit, jotka sisältävät toisena parametrina annetun raaka-aineen.

    Kriteerin täyttävät reseptit palautetaan edellisen tehtävän tapaan listana. Esimerkki funktion käytöstä:

    loydetyt = hae_raakaaine(\"reseptit1.txt\", \"maito\")\n\nfor resepti in loydetyt:\n    print(resepti)

    Lettutaikina, valmistusaika 15 min\nPullataikina, valmistusaika 60 min

    Tässä tehtävässä tehdään muutama funktio, joiden avulla voidaan tarkastella kaupunkipyörien asemien sijaintia sisältävää tiedostoa.

    Tiedostot näyttävät seuraavilta:

    Longitude;Latitude;FID;name;total_slot;operative;id\n24.950292890004903;60.155444793742276;1;Kaivopuisto;30;Yes;001\n24.956347471358754;60.160959093887129;2;Laivasillankatu;12;Yes;002\n24.944927399779715;60.158189199971673;3;Kapteeninpuistikko;16;Yes;003

    Kutakin asemaa kohti tiedostossa on yksi rivi, joka kertoo aseman koordinaatit, aseman nimen ja muuta tunnistetietoa.

    asemien välinen etäisyys

    Tee ensin funktio hae_asematiedot(tiedosto: str), joka lukee asematiedot tiedostosta ja palauttaa ne sanakirjana, joka näyttää tältä:

    \n{\n  \"Kaivopuisto: (24.950292890004903, 60.155444793742276),\n  \"Laivasillankatu: (24.956347471358754, 60.160959093887129),\n  \"Kapteeninpuistikko: (24.944927399779715, 60.158189199971673)\n}\n

    Eli sanakirjan avaimena on aseman nimi ja arvona tuple, joka koostuu aseman koordinaateista, ensimmäisenä Longitude ja toisena Latitude.

    Tee seuraavaksi funktio etaisyys(asemat: dict, asema1: str, asema2: str), joka palauttaa parametrina kerrottujen asemien välisen etäisyyden.

    Etäisyys lasketaan seuraavalla kaavalla (hyödyntäen Pythagoraan lausetta):

    # tämä rivi tarvitaan, jotta saadaan käyttöön metodi sqrt\nimport math\n\nx_kilometreina = (longitude1 - longitude2) * 55.26\ny_kilometreina = (latitude1 - latitude2) * 111.2\netaisyys = math.sqrt(x_kilometreina**2 + y_kilometreina**2)

    Esimerkkisuorituksia:

    asemat = hae_asematiedot('stations1.csv')\ne = etaisyys(asemat, \"Designmuseo\", \"Hietalahdentori\")\nprint(e)\ne = etaisyys(asemat, \"Viiskulma\", \"Kaivopuisto\")\nprint(e)

    0.9032737292463177\n0.7753594392019532

    Huom! Jos VS Code ei löydä tiedostoa vaikka olet tarkastanut tiedoston nimen kirjoitusasun, voit täällä kokeilla olevaa ohjetta.

    pisin välimatka

    Tee funktio suurin_etaisyys(asemat: dict), joka selvittää, mitkä kaksi asemaa ovat kauimpana toisistaan. Funktio palauttaa tuplen, jonka ensimmäiset kaksi arvoa kertovat asemien nimet ja kolmas arvo niiden välisen etäisyyden.

    asemat = hae_asematiedot('stations1.csv')\nasema1, asema2, suurin = suurin_etaisyys(asemat)\nprint(asema1, asema2, suurin)

    Laivasillankatu Hietalahdentori 1.478708873076181

    ","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/1-tiedostojen-lukeminen.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-6/2-tiedostojen-kirjoittaminen/page-data.json b/page-data/osa-6/2-tiedostojen-kirjoittaminen/page-data.json index cbbb9fb53..161bec213 100644 --- a/page-data/osa-6/2-tiedostojen-kirjoittaminen/page-data.json +++ b/page-data/osa-6/2-tiedostojen-kirjoittaminen/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-6/2-tiedostojen-kirjoittaminen", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda itse tiedoston Pythonilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa tekstimuotoista tietoa tiedostoon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa CSV-muotoisen tiedoston omasta datastasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston lukemisen lisäksi voimme luonnollisesti myös kirjoittaa tiedostoon tietoa. Tyypillinen esimerkki on ohjelman tulosten tallentaminen tiedostoon, jotta niitä voidaan käyttää myös myöhemmin tai muokata edelleen jollain toisella ohjelmalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston kirjoittamisessa voimme joko luoda uuden tiedoston tai lisätä tietoa olemassa olevan tiedoston vanhan tiedon perään. Molemmissa tapauksissa käytetään edellisestä osasta tuttua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"open"}]},{"type":"text","value":"-funktiota, mutta kirjoittamista varten funktiolle annetaan toinen parametri."}]},{"type":"element","tagName":"h2","properties":{"id":"uuden-tiedoston-luominen","style":"position:relative;"},"children":[{"type":"text","value":"Uuden tiedoston luominen"},{"type":"element","tagName":"a","properties":{"href":"#uuden-tiedoston-luominen","ariaLabel":"uuden tiedoston luominen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi tiedosto luodaan antamalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"open"}]},{"type":"text","value":"-funktiolle tiedoston nimen lisäksi avaustilaksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"w"}]},{"type":"text","value":" (tulee sanasta \"write\"). Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tiedostoon kirjoittaminen"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"mikäli tiedosto on jo olemassa, kaikki sen sisältö ylikirjoitetaan"}]},{"type":"text","value":". Ole siis erittäin huolellinen uusia tiedostoja luodessasi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun tiedosto on avattu, sinne voidaan kirjoittaa tietoa. Kirjoittaminen tapahtuu metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"write"}]},{"type":"text","value":", joka saa parametrikseen kirjoitettavan merkkijonon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suorittamisen jälkeen samaan hakemistoon ilmestyy tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_tiedosto.txt"}]},{"type":"text","value":", jonka sisältö näyttää tältä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jos tiedostoon halutaan rivinvaihtoja, ne täytyy lisätä tekstiin itse. Esimerkiksi ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tuottaa seuraavanlaisen tiedoston:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!Toinen riviViimeinen rivi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostukset saadaan omille riveilleen lisäämällä rivien loppuun rivivaihtomerkki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\\n"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen rivi\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen rivi\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_tiedosto.txt"}]},{"type":"text","value":" näyttää tältä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nToinen rivi\nViimeinen rivi"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Omistuskirjoitus","tmcname":"osa06-10_omistuskirjoitus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy nimeä ja luo \"omistuskirjoituksen\" käyttäjän haluamaan tiedostoon. Seuraavassa ohjelman esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kenelle teos omistetaan: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Arto"}]},{"type":"text","value":"\nMihin kirjoitetaan: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"omistettu.txt"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"omistettu.txt"}]},{"type":"text","value":" sisällöksi tulee"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Arto, toivomme viihtyisiä hetkiä python-kurssimateriaalin parissa! Terveisin mooc.fi-tiimi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-lisaaminen-olemassaolevaan-tiedostoon","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon lisääminen olemassaolevaan tiedostoon"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-lisaaminen-olemassaolevaan-tiedostoon","ariaLabel":"tiedon lisaaminen olemassaolevaan tiedostoon permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluamme lisätä tietoa olemassa olevaan tiedostoon, voimme avata tiedoston tilassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" (lyhenne sanasta \"append\"). Tällöin tiedoston nykyistä sisältöä ei pyyhitä, vaan uusi tieto kirjoitetaan tiedoston loppuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tiedostoa ei ole olemassa, tila "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" toimii samalla tavalla kuin tila "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"w"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma avaa edellisen esimerkin tuottaman tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_tiedosto.txt"}]},{"type":"text","value":" ja lisää sen perään pari riviä tekstiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rivi numero 4\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ja taas yksi.\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suorituksen jälkeen tiedosto näyttää tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nToinen rivi\nViimeinen rivi\nRivi numero 4\nJa taas yksi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedon lisääminen tiedostoon on kuitenkin suhteellisen harvoin tarvittava operaatio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostoon lisäämisen sijaan on usein yksinkertaisinta kirjoittaa tiedosto kokonaan uudelleen. Näin joudutaan useimmiten tekemään jos esimerkiksi tiedoston sisältö muuttuu keskeltä tiedostoa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Päiväkirja","tmcname":"osa06-11_paivakirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka mallintaa yksinkertaista päiväkirjaa. Ohjelman tulee tallentaa päiväkirjamerkinnät tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paivakirja.txt"}]},{"type":"text","value":". Kun ohjelma käynnistetään, se lukee merkinnät tiedostosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Paikalliset testit voivat muuttaa tiedoston sisältöä - kopioi siis tiedosto talteen ennen testien ajamista, jos haluat säilyttää sen sisällön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna merkintä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tänään söin puuroa"}]},{"type":"text","value":"\nPäiväkirja tallennettu"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nMerkinnät:\nTänään söin puuroa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna merkintä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Illalla kävin saunassa"}]},{"type":"text","value":"\nPäiväkirja tallennettu"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nHeippa!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi käynnistys:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nHeippa!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"csv-tiedoston-kirjoittaminen","style":"position:relative;"},"children":[{"type":"text","value":"CSV-tiedoston kirjoittaminen"},{"type":"element","tagName":"a","properties":{"href":"#csv-tiedoston-kirjoittaminen","ariaLabel":"csv tiedoston kirjoittaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-tiedoston voi kirjoittaa rivi riviltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"write"}]},{"type":"text","value":"-metodilla. Esimerkiksi seuraava esimerkki luo tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"koodarit.csv"}]},{"type":"text","value":", jonka jokaisella rivillä on koodarin nimi, työympäristö, lempikieli ja kokemus vuosissa. Tiedot on erotettu puolipisteillä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodarit.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki;Windows;Pascal;10\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti;Linux;PHP;2\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti;Linux;Java;17\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia;Mac;Cobol;9\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän tuloksena on seuraava tiedosto:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erkki;Windows;Pascal;10\nMatti;Linux;PHP;2\nAntti;Linux;Java;17\nEmilia;Mac;Cobol;9"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan sitten tilannetta, jossa tiedostoon kirjoitettavat tiedot ovatkin muistissa listoina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"koodarit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Windows\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pascal\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Linux\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PHP\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Linux\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mac\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Cobol\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt voimme kirjoittaa koodarien tiedot CSV-tiedostoon näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodarit.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koodari "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos koodaria kuvaavissa listoissa olisi suuri määrä alkioita, olisi csv-tiedostoon kirjoitetavien rivien muodostaminen yllä olevalla tekniikalla työläähköä, ja rivit kannattaisikin koota silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodarit.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koodari "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";\""}]}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedoston-tyhjentaminen-ja-poisto","style":"position:relative;"},"children":[{"type":"text","value":"Tiedoston tyhjentäminen ja poisto"},{"type":"element","tagName":"a","properties":{"href":"#tiedoston-tyhjentaminen-ja-poisto","ariaLabel":"tiedoston tyhjentaminen ja poisto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa ohjelmassa on tarvetta tyhjentää olemassaolevan tiedoston sisältö. Tämä onnistuu avaamalla tiedosto kirjoitustilassa \"w\" ja sulkemalla tiedosto välittömästi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tyhjennettava_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":"-lohkossa on ainoastaan komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":", joka ei tee mitään. Komento tarvitaan, sillä Python ei salli sellaisia lohkoja missä ei ole mitään komentoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston tyhjennys on mahdollista tehdä myös ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":"-lohkokon käyttöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'tyhjennettava_tiedosto.txt'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'w'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"close"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Tiedoston poistaminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto voidaan myös poistaa kokonaan. Poisto tapahtuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# poisto-komento tuodaan koodin käyttöön import-lauseella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" os\n\nos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tarpeeton_tiedosto.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei kuitenkaan teknisten rajoitteiden takia toimi palvelimella suoritettavissa testeissä, joten käytä ylläolevia tapoja jos joudut tehtävissä tyhjentämään tiedoston."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Aineiston suodatus","tmcname":"osa06-12_aineiston_suodatus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa laskut.csv on tehtävien ratkaisuja seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Arto;2+5;7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Pekka;3-2;1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Erkki;9+3;11"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Arto;8-3;4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Pekka;5+5;10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"...jne..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisella rivin muoto on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oppilaan_nimi;lasku;lopputulos"}]},{"type":"text","value":". Laskut ovat kaikki esimerkin mukaisesti joko yhteen- tai vähennyslaskuja, ja kaikissa on kaksi operandia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suodata_laskut()"}]},{"type":"text","value":", joka"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Lukee tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laskut.csv"}]},{"type":"text","value":" sisällön ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kirjoittaa tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oikeat.csv"}]},{"type":"text","value":" ne rivit, joilla laskutoimituksen lopputulos on oikein sekä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kirjoittaa tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaarat.csv"}]},{"type":"text","value":" ne rivit, joilla laskutoimituksen lopputulos on väärin."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisestä esimerkistä tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oikeat.csv"}]},{"type":"text","value":" olisi siis kirjoitettu rivit"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"Arto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"+5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nPekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"-2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nPekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"+5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi muuta riviä olisi kirjoitettu tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaarat.csv"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita rivit samassa järjestyksessä kuin ne esiintyvät alkuperäisessä tiedostossa. Älä muuta alkuperäistä tiedostoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":" että funktion tulee toimia oikein siinäkin tapauksessa että funktiota kutsutaan monta kertaa perkkäin. Eli riippumatta siitä suoritatko funktion vain kerran"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tai useita kertoja peräkkän"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedostojen sisältöjen tulee lopulta olla samat."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Henkilöt talteen","tmcname":"osa06-13_henkilot_talteen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tallenna_henkilo(henkilo: tuple)"}]},{"type":"text","value":" joka saa parametrikseen henkilöä kuvaavan tuplen. Tuplessa on seuraavat tiedot tässä järjestyksessä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nimi (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ikä (kokonaisluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pituus (liukuluku)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallenna henkilön tiedot tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilot.csv"}]},{"type":"text","value":" olemassa olevien tietojen perään. Tiedot tulee tallentaa muodosssa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"nimi;ikä;pituus"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eli yhden henkilön tiedot tulevat yhdelle riville. Jos funktiota esim. kutsuttaisiin parametrien arvoilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(\"Kimmo Kimmonen\", 37, 175.5)"}]},{"type":"text","value":", ohjelma kirjoittaisi tiedoston loppuun rivin"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kimmo Kimmonen;37;175.5"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-kasittely-csvna","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon käsittely CSV:nä"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-kasittely-csvna","ariaLabel":"tiedon kasittely csvna permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä lopuksi ohjelma, joka lukee CSV-tiedostosta opiskelijoiden viikoittaiset kurssipistemäärät ja laskee näiden avulla kurssin arvosanan. Lopuksi ohjelma luo CSV-tiedoston, josta selviää opiskelijan yhteispistemäärä sekä arvosana"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman lukema CSV-tiedosto näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;4;2;3;5;4;0;0\nPaula;7;2;8;3;5;4;5\nPirjo;3;4;3;5;3;4;4\nEmilia;6;6;5;5;0;4;8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman logiikka on jaettu kolmeen funktioon. Tiedoston lukeminen tapahtuu samaan tapaan kuin edellisessä aliluvussa: tiedot talletetaan sanakirjaan, jossa avaimena on opiskelijan nimi ja arvona lista viikkopisteistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_viikkopisteet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n viikkopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" viikkopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvosanojen laskemista varten on tehty oma funktionsa, jota tiedostoon kirjoittava funktio hyödyntää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"arvosana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tallenna_tulokset"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\\n\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse \"pääohjelma\" on nyt hyvin yksinkertainen. Huomaa, että luettavan ja kirjoitettavan tiedoston nimet annetaan funktioille parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viikkopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"viikkopisteet.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntallenna_tulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulokset.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suorituksen tuloksena oleva CSV-tiedosto näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;18;0\nPaula;34;3\nPirjo;26;2\nEmilia;41;5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, miten ohjelma on koostettu suhteellisen yksinkertaisista, vain yhteen asiaan keskittyvistä funktioista. Tämä on yleisesti ottaen suositeltava tapa ohjelmoinnissa, se helpottaa ohjelman toiminnallisuuden varmistamista sekä myöhemmin ohjelmaan tehtävien muutosten sekä laajennusten tekemistä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos esimerkiksi haluaisimme ohjelmaan toiminnallisuuden, joka tulostaa yhden opiskelijan arvosanan, olisi toiminnallisuus helppo koostaa käyttäen apuna jo valmiina olevaa arvosanan laskevaa funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_arvosana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"haettava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" haettava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\nviikkopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"viikkopisteet.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hae_arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paula\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelmasta halutaan muuttaa tai korjata \"yhtä asiaa\", esimerkiksi arvosanojen pisterajoja, kohdistuu muokkaus hyvin rakennetussa ohjelmassa ainoastaan yhteen tai muutamaan funktioon. Jos sama logiikka, esimerkiksi arvosanan laskeminen, olisi kopioitu useaan paikkaan, kasvaisi riski, että muutoksia ei muistettaisi tehdä kaikkiin oikeisiin paikkoihin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 4","tmcname":"osa06-14_kurssin_tulokset_osa4"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan vielä hieman aiemmin kurssien tulokset generoivaa sovellusta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä hetkellä tiedostosta luetaan opiskelijoiden nimet, tehtäväpisteet sekä koepisteet. Laajennetaan ohjelmaa siten, että myös kurssin nimi ja laajuus luetaan tiedostosta, jonka muoto on seuraava (tiedosto on kirjoitettu ilman ääkkösiä, jotta se ei aiheuttaisi ongelmia Windowsissa):"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"\nnimi: Ohjelmoinnin perusteet\nlaajuus opintopisteina: 5\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma luo kaksi tiedostoa. Tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos.txt"}]},{"type":"text","value":" muoto on seuraava:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteet, 5 opintopistettä\n========================================\nnimi teht_lkm teht_pist koe_pist yht_pist arvosana\npekka peloton 21 5 9 14 0\njaana javanainen 27 6 11 17 1\nliisa virtanen 35 8 14 22 3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulokset kertova osa on siis samanlainen kuin tehtävän edellisen osan tulostus."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän lisäksi luodaan tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos.csv"}]},{"type":"text","value":", jonka muoto on seuraava:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"12345678;pekka peloton;0\n12345687;jaana javanainen;1\n12345699;liisa virtanen;3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\ntehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\nkoepisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koepisteet1.csv"}]},{"type":"text","value":"\nkurssin tiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kurssi1.txt"}]},{"type":"text","value":"\nTulokset talletettu tiedostoihin tulos.txt ja tulos.csv"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma siis ainoastaan kyselee tiedostojen nimet ja varsinaiset tulokset tallennetaan vain tiedostoihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sanahaku","tmcname":"osa06-15_sanahaku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.txt"}]},{"type":"text","value":", joka sisältää englanninkielisiä sanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväsi on kirjoittaa funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_sanat(hakusana: str)"}]},{"type":"text","value":", joka palauttaa listana annetun hakusanan mukaiset sanat tiedostosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hakusanassa voi käyttää pienten kirjainten lisäksi seuraavia erikoismerkkejä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Piste "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" tarkoittaa, että mikä tahansa merkki käy (esim "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ca."}]},{"type":"text","value":" vastaa vaikkapa sanoja cat ja car, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"p.ng"}]},{"type":"text","value":" sanoja ping ja pong ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":".a.e"}]},{"type":"text","value":" sanoja sane, care tai late."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Asteriski "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tarkoittaa, että sanan alku- tai loppuosaksi käy mikä tahansa jono, esim. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ca*"}]},{"type":"text","value":" vastaa vaikkapa sanoja california, cat, caring tai catapult. Vastaavasti hakusana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*ane"}]},{"type":"text","value":" vastaa vaikkapa sanoja crane, insane tai aeroplane. Voit olettaa, että asteriski on aina joko hakusanan alussa tai lopussa, ja että hakusanassa esiintyy korkeintaan yksi asteriski."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos hakusanassa ei ole erikoismerkkejä, haetaan vain täsmälleen hakusanaa vastaava sana."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovitaan, että samassa hakusanassa ei voi käyttää molempia erikoismerkkejä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanat ovat tiedostossa kokonaan pienillä kirjaimilla kirjoitettuna. Voit myös olettaa, että funktion parametri on annettu kokonaan pienillä kirjaimilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos yhtään tulosta ei löydy, funktio palauttaa tyhjän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Pythonin merkkijonometodeista startswith() ja endswith() saattaa olla hyötyä tehtävässä, googlaa niiden toiminta tarvittaessa tarkemmin!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hae_sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*vokes\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['convokes', 'equivokes', 'evokes', 'invokes', 'provokes', 'reinvokes', 'revokes']"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Muistava sanakirja","tmcname":"osa06-16_muistava_sanakirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee sanakirjaa mallintava ohjelma, johon voi syöttää uusia sanoja tai josta voi hakea syötettyjä sanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna sana suomeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"auto"}]},{"type":"text","value":"\nAnna sana englanniksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"car"}]},{"type":"text","value":"\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna sana suomeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"roska"}]},{"type":"text","value":"\nAnna sana englanniksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"garbage"}]},{"type":"text","value":"\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna sana suomeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"laukku"}]},{"type":"text","value":"\nAnna sana englanniksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"bag"}]},{"type":"text","value":"\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"bag"}]},{"type":"text","value":"\nroska - garbage\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"car"}]},{"type":"text","value":"\nauto - car\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"laukku"}]},{"type":"text","value":"\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nMoi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanat tallennetaan tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanakirja.txt"}]},{"type":"text","value":". Ohjelma lukee tiedoston sisällön kun se käynnistetään. Uudet sanaparit lisätään tiedostoon aina tallennuksen yhteydessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit itse päättää tiedostoon tallennettavan tiedon muodon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että paikallisten TMC-testien ajaminen voi tyhjentää sanakirja-tiedoston."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda itse tiedoston Pythonilla
    • \n
    • Osaat kirjoittaa tekstimuotoista tietoa tiedostoon
    • \n
    • Osaat kirjoittaa CSV-muotoisen tiedoston omasta datastasi
    • \n

    Tiedoston lukemisen lisäksi voimme luonnollisesti myös kirjoittaa tiedostoon tietoa. Tyypillinen esimerkki on ohjelman tulosten tallentaminen tiedostoon, jotta niitä voidaan käyttää myös myöhemmin tai muokata edelleen jollain toisella ohjelmalla.

    Tiedoston kirjoittamisessa voimme joko luoda uuden tiedoston tai lisätä tietoa olemassa olevan tiedoston vanhan tiedon perään. Molemmissa tapauksissa käytetään edellisestä osasta tuttua open-funktiota, mutta kirjoittamista varten funktiolle annetaan toinen parametri.

    Uuden tiedoston luominen

    Uusi tiedosto luodaan antamalla open-funktiolle tiedoston nimen lisäksi avaustilaksi w (tulee sanasta \"write\"). Esimerkiksi

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    # tiedostoon kirjoittaminen

    Huomaa, että mikäli tiedosto on jo olemassa, kaikki sen sisältö ylikirjoitetaan. Ole siis erittäin huolellinen uusia tiedostoja luodessasi.

    Kun tiedosto on avattu, sinne voidaan kirjoittaa tietoa. Kirjoittaminen tapahtuu metodilla write, joka saa parametrikseen kirjoitettavan merkkijonon.

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    tiedosto.write(\"Moi kaikki!\")

    Ohjelman suorittamisen jälkeen samaan hakemistoon ilmestyy tiedosto uusi_tiedosto.txt, jonka sisältö näyttää tältä:

    Moi kaikki!

    Huomaa, että jos tiedostoon halutaan rivinvaihtoja, ne täytyy lisätä tekstiin itse. Esimerkiksi ohjelma

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    tiedosto.write(\"Moi kaikki!\")\n    tiedosto.write(\"Toinen rivi\")\n    tiedosto.write(\"Viimeinen rivi\")

    tuottaa seuraavanlaisen tiedoston:

    Moi kaikki!Toinen riviViimeinen rivi

    Tulostukset saadaan omille riveilleen lisäämällä rivien loppuun rivivaihtomerkki \\n:

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    tiedosto.write(\"Moi kaikki!\\n\")\n    tiedosto.write(\"Toinen rivi\\n\")\n    tiedosto.write(\"Viimeinen rivi\\n\")

    Nyt tiedosto uusi_tiedosto.txt näyttää tältä:

    Moi kaikki!\nToinen rivi\nViimeinen rivi

    Tee ohjelma, joka kysyy nimeä ja luo \"omistuskirjoituksen\" käyttäjän haluamaan tiedostoon. Seuraavassa ohjelman esimerkkisuoritus:

    Kenelle teos omistetaan: Arto\nMihin kirjoitetaan: omistettu.txt

    Tiedoston omistettu.txt sisällöksi tulee

    Hei Arto, toivomme viihtyisiä hetkiä python-kurssimateriaalin parissa! Terveisin mooc.fi-tiimi

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tiedon lisääminen olemassaolevaan tiedostoon

    Jos haluamme lisätä tietoa olemassa olevaan tiedostoon, voimme avata tiedoston tilassa a (lyhenne sanasta \"append\"). Tällöin tiedoston nykyistä sisältöä ei pyyhitä, vaan uusi tieto kirjoitetaan tiedoston loppuun.

    Jos tiedostoa ei ole olemassa, tila a toimii samalla tavalla kuin tila w.

    Seuraava ohjelma avaa edellisen esimerkin tuottaman tiedoston uusi_tiedosto.txt ja lisää sen perään pari riviä tekstiä:

    with open(\"uusi_tiedosto.txt\", \"a\") as tiedosto:\n    tiedosto.write(\"Rivi numero 4\\n\")\n    tiedosto.write(\"Ja taas yksi.\\n\")

    Ohjelman suorituksen jälkeen tiedosto näyttää tältä:

    Moi kaikki!\nToinen rivi\nViimeinen rivi\nRivi numero 4\nJa taas yksi.

    Tiedon lisääminen tiedostoon on kuitenkin suhteellisen harvoin tarvittava operaatio.

    Tiedostoon lisäämisen sijaan on usein yksinkertaisinta kirjoittaa tiedosto kokonaan uudelleen. Näin joudutaan useimmiten tekemään jos esimerkiksi tiedoston sisältö muuttuu keskeltä tiedostoa.

    Tee ohjelma, joka mallintaa yksinkertaista päiväkirjaa. Ohjelman tulee tallentaa päiväkirjamerkinnät tiedostoon paivakirja.txt. Kun ohjelma käynnistetään, se lukee merkinnät tiedostosta.

    Huom! Paikalliset testit voivat muuttaa tiedoston sisältöä - kopioi siis tiedosto talteen ennen testien ajamista, jos haluat säilyttää sen sisällön.

    Ohjelman tulee toimia seuraavan esimerkin mukaisesti:

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 1\nAnna merkintä: Tänään söin puuroa\nPäiväkirja tallennettu

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 2\nMerkinnät:\nTänään söin puuroa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 1\nAnna merkintä: Illalla kävin saunassa\nPäiväkirja tallennettu

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 2\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 0\nHeippa!

    Uusi käynnistys:

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 2\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 0\nHeippa!

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    CSV-tiedoston kirjoittaminen

    CSV-tiedoston voi kirjoittaa rivi riviltä write-metodilla. Esimerkiksi seuraava esimerkki luo tiedoston koodarit.csv, jonka jokaisella rivillä on koodarin nimi, työympäristö, lempikieli ja kokemus vuosissa. Tiedot on erotettu puolipisteillä.

    with open(\"koodarit.csv\", \"w\") as tiedosto:\n    tiedosto.write(\"Erkki;Windows;Pascal;10\\n\")\n    tiedosto.write(\"Matti;Linux;PHP;2\\n\")\n    tiedosto.write(\"Antti;Linux;Java;17\\n\")\n    tiedosto.write(\"Emilia;Mac;Cobol;9\\n\")

    Tämän tuloksena on seuraava tiedosto:

    Erkki;Windows;Pascal;10\nMatti;Linux;PHP;2\nAntti;Linux;Java;17\nEmilia;Mac;Cobol;9

    Tarkastellaan sitten tilannetta, jossa tiedostoon kirjoitettavat tiedot ovatkin muistissa listoina:

    koodarit = []\nkoodarit.append([\"Erkki\", \"Windows\", \"Pascal\", 10])\nkoodarit.append([\"Matti\", \"Linux\", \"PHP\", 2])\nkoodarit.append([\"Antti\", \"Linux\", \"Java\", 17])\nkoodarit.append([\"Emilia\", \"Mac\", \"Cobol\", 9])

    Nyt voimme kirjoittaa koodarien tiedot CSV-tiedostoon näin:

    with open(\"koodarit.csv\", \"w\") as tiedosto:\n    for koodari in koodarit:\n        rivi = f\"{koodari[0]};{koodari[1]};{koodari[2]};{koodari[3]}\"\n        tiedosto.write(rivi+\"\\n\")

    Jos koodaria kuvaavissa listoissa olisi suuri määrä alkioita, olisi csv-tiedostoon kirjoitetavien rivien muodostaminen yllä olevalla tekniikalla työläähköä, ja rivit kannattaisikin koota silmukan avulla:

    with open(\"koodarit.csv\", \"w\") as tiedosto:\n    for koodari in koodarit:\n        rivi = \"\"\n        for arvo in koodari:\n            rivi += f\"{arvo};\"\n        rivi = rivi[:-1]\n        tiedosto.write(rivi+\"\\n\")

    Tiedoston tyhjentäminen ja poisto

    Joissain tilanteissa ohjelmassa on tarvetta tyhjentää olemassaolevan tiedoston sisältö. Tämä onnistuu avaamalla tiedosto kirjoitustilassa \"w\" ja sulkemalla tiedosto välittömästi:

    with open(\"tyhjennettava_tiedosto.txt\", \"w\") as tiedosto:\n    pass

    Nyt with-lohkossa on ainoastaan komento pass, joka ei tee mitään. Komento tarvitaan, sillä Python ei salli sellaisia lohkoja missä ei ole mitään komentoja.

    Tiedoston tyhjennys on mahdollista tehdä myös ilman with-lohkokon käyttöä:

    open('tyhjennettava_tiedosto.txt', 'w').close()

    Tiedosto voidaan myös poistaa kokonaan. Poisto tapahtuu seuraavasti:

    # poisto-komento tuodaan koodin käyttöön import-lauseella\nimport os\n\nos.remove(\"tarpeeton_tiedosto.csv\")

    Tämä ei kuitenkaan teknisten rajoitteiden takia toimi palvelimella suoritettavissa testeissä, joten käytä ylläolevia tapoja jos joudut tehtävissä tyhjentämään tiedoston.

    Tiedostossa laskut.csv on tehtävien ratkaisuja seuraavan esimerkin mukaisesti:

    Arto;2+5;7\nPekka;3-2;1\nErkki;9+3;11\nArto;8-3;4\nPekka;5+5;10\n...jne...

    Jokaisella rivin muoto on siis oppilaan_nimi;lasku;lopputulos. Laskut ovat kaikki esimerkin mukaisesti joko yhteen- tai vähennyslaskuja, ja kaikissa on kaksi operandia.

    Kirjoita funktio suodata_laskut(), joka

      \n
    • Lukee tiedoston laskut.csv sisällön ja
    • \n
    • kirjoittaa tiedostoon oikeat.csv ne rivit, joilla laskutoimituksen lopputulos on oikein sekä
    • \n
    • kirjoittaa tiedostoon vaarat.csv ne rivit, joilla laskutoimituksen lopputulos on väärin.
    • \n

    Edellisestä esimerkistä tiedostoon oikeat.csv olisi siis kirjoitettu rivit

    Arto;2+5;7\nPekka;3-2;1\nPekka;5+5;10

    Kaksi muuta riviä olisi kirjoitettu tiedostoon vaarat.csv.

    Kirjoita rivit samassa järjestyksessä kuin ne esiintyvät alkuperäisessä tiedostossa. Älä muuta alkuperäistä tiedostoa.

    Huomaa että funktion tulee toimia oikein siinäkin tapauksessa että funktiota kutsutaan monta kertaa perkkäin. Eli riippumatta siitä suoritatko funktion vain kerran

    suodata_laskut()

    tai useita kertoja peräkkän

    suodata_laskut()\nsuodata_laskut()\nsuodata_laskut()\nsuodata_laskut()

    tiedostojen sisältöjen tulee lopulta olla samat.

    Kirjoita funktio tallenna_henkilo(henkilo: tuple) joka saa parametrikseen henkilöä kuvaavan tuplen. Tuplessa on seuraavat tiedot tässä järjestyksessä:

      \n
    • Nimi (merkkijono)
    • \n
    • Ikä (kokonaisluku)
    • \n
    • Pituus (liukuluku)
    • \n

    Tallenna henkilön tiedot tiedostoon henkilot.csv olemassa olevien tietojen perään. Tiedot tulee tallentaa muodosssa

    nimi;ikä;pituus

    eli yhden henkilön tiedot tulevat yhdelle riville. Jos funktiota esim. kutsuttaisiin parametrien arvoilla (\"Kimmo Kimmonen\", 37, 175.5), ohjelma kirjoittaisi tiedoston loppuun rivin

    Kimmo Kimmonen;37;175.5

    Tiedon käsittely CSV:nä

    Tehdään vielä lopuksi ohjelma, joka lukee CSV-tiedostosta opiskelijoiden viikoittaiset kurssipistemäärät ja laskee näiden avulla kurssin arvosanan. Lopuksi ohjelma luo CSV-tiedoston, josta selviää opiskelijan yhteispistemäärä sekä arvosana

    Ohjelman lukema CSV-tiedosto näyttää seuraavalta:

    Pekka;4;2;3;5;4;0;0\nPaula;7;2;8;3;5;4;5\nPirjo;3;4;3;5;3;4;4\nEmilia;6;6;5;5;0;4;8

    Ohjelman logiikka on jaettu kolmeen funktioon. Tiedoston lukeminen tapahtuu samaan tapaan kuin edellisessä aliluvussa: tiedot talletetaan sanakirjaan, jossa avaimena on opiskelijan nimi ja arvona lista viikkopisteistä:

    def lue_viikkopisteet(tiedostonimi):\n    viikkopisteet = {}\n    with open(tiedostonimi) as tiedosto:\n        for rivi in tiedosto:\n            osat = rivi.split(\";\")\n            lista = []\n            for pisteet in osat[1:]:\n                lista.append(int(pisteet))\n            viikkopisteet[osat[0]] = lista\n\n    return viikkopisteet

    Arvosanojen laskemista varten on tehty oma funktionsa, jota tiedostoon kirjoittava funktio hyödyntää:

    def arvosana(pisteet):\n    if pisteet < 20:\n        return 0\n    elif pisteet < 25:\n        return 1\n    elif pisteet < 30:\n        return 2\n    elif pisteet < 35:\n        return 3\n    elif pisteet < 40:\n        return 4\n    else:\n        return 5\n\ndef tallenna_tulokset(tiedostonimi, viikkopisteet):\n    with open(tiedostonimi, \"w\") as tiedosto:\n        for nimi, lista in viikkopisteet.items():\n            summa = sum(lista)\n            tiedosto.write(f\"{nimi};{summa};{arvosana(summa)}\\n\")

    Itse \"pääohjelma\" on nyt hyvin yksinkertainen. Huomaa, että luettavan ja kirjoitettavan tiedoston nimet annetaan funktioille parametrina:

    viikkopisteet = lue_viikkopisteet(\"viikkopisteet.csv\")\ntallenna_tulokset(\"tulokset.csv\", viikkopisteet)

    Suorituksen tuloksena oleva CSV-tiedosto näyttää seuraavalta:

    Pekka;18;0\nPaula;34;3\nPirjo;26;2\nEmilia;41;5

    Huomaa, miten ohjelma on koostettu suhteellisen yksinkertaisista, vain yhteen asiaan keskittyvistä funktioista. Tämä on yleisesti ottaen suositeltava tapa ohjelmoinnissa, se helpottaa ohjelman toiminnallisuuden varmistamista sekä myöhemmin ohjelmaan tehtävien muutosten sekä laajennusten tekemistä.

    Jos esimerkiksi haluaisimme ohjelmaan toiminnallisuuden, joka tulostaa yhden opiskelijan arvosanan, olisi toiminnallisuus helppo koostaa käyttäen apuna jo valmiina olevaa arvosanan laskevaa funktiota:

    def hae_arvosana(haettava, viikkopisteet):\n    for nimi, lista in viikkopisteet.items():\n        if nimi == haettava:\n            return arvosana(sum(lista))\n\n\nviikkopisteet = lue_viikkopisteet(\"viikkopisteet.csv\")\nprint(hae_arvosana(\"Paula\", viikkopisteet))\n

    3

    Jos ohjelmasta halutaan muuttaa tai korjata \"yhtä asiaa\", esimerkiksi arvosanojen pisterajoja, kohdistuu muokkaus hyvin rakennetussa ohjelmassa ainoastaan yhteen tai muutamaan funktioon. Jos sama logiikka, esimerkiksi arvosanan laskeminen, olisi kopioitu useaan paikkaan, kasvaisi riski, että muutoksia ei muistettaisi tehdä kaikkiin oikeisiin paikkoihin.

    Laajennetaan vielä hieman aiemmin kurssien tulokset generoivaa sovellusta.

    Tällä hetkellä tiedostosta luetaan opiskelijoiden nimet, tehtäväpisteet sekä koepisteet. Laajennetaan ohjelmaa siten, että myös kurssin nimi ja laajuus luetaan tiedostosta, jonka muoto on seuraava (tiedosto on kirjoitettu ilman ääkkösiä, jotta se ei aiheuttaisi ongelmia Windowsissa):

    \n\nnimi: Ohjelmoinnin perusteet\nlaajuus opintopisteina: 5\n

    Ohjelma luo kaksi tiedostoa. Tiedoston tulos.txt muoto on seuraava:

    \nOhjelmoinnin perusteet, 5 opintopistettä\n========================================\nnimi                          teht_lkm  teht_pist koe_pist  yht_pist  arvosana\npekka peloton                 21        5         9         14        0\njaana javanainen              27        6         11        17        1\nliisa virtanen                35        8         14        22        3\n

    Tulokset kertova osa on siis samanlainen kuin tehtävän edellisen osan tulostus.

    Tämän lisäksi luodaan tiedosto tulos.csv, jonka muoto on seuraava:

    \n12345678;pekka peloton;0\n12345687;jaana javanainen;1\n12345699;liisa virtanen;3\n

    Ohjelman suoritus näyttää seuraavalta:

    opiskelijatiedot: opiskelijat1.csv\ntehtävätiedot: tehtavat1.csv\nkoepisteet: koepisteet1.csv\nkurssin tiedot: kurssi1.txt\nTulokset talletettu tiedostoihin tulos.txt ja tulos.csv

    Ohjelma siis ainoastaan kyselee tiedostojen nimet ja varsinaiset tulokset tallennetaan vain tiedostoihin.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tehtäväpohjasta löytyy tiedosto sanat.txt, joka sisältää englanninkielisiä sanoja.

    Tehtäväsi on kirjoittaa funktio hae_sanat(hakusana: str), joka palauttaa listana annetun hakusanan mukaiset sanat tiedostosta.

    Hakusanassa voi käyttää pienten kirjainten lisäksi seuraavia erikoismerkkejä:

      \n
    • Piste . tarkoittaa, että mikä tahansa merkki käy (esim ca. vastaa vaikkapa sanoja cat ja car, p.ng sanoja ping ja pong ja .a.e sanoja sane, care tai late.
    • \n
    • Asteriski * tarkoittaa, että sanan alku- tai loppuosaksi käy mikä tahansa jono, esim. ca* vastaa vaikkapa sanoja california, cat, caring tai catapult. Vastaavasti hakusana *ane vastaa vaikkapa sanoja crane, insane tai aeroplane. Voit olettaa, että asteriski on aina joko hakusanan alussa tai lopussa, ja että hakusanassa esiintyy korkeintaan yksi asteriski.
    • \n
    • Jos hakusanassa ei ole erikoismerkkejä, haetaan vain täsmälleen hakusanaa vastaava sana.
    • \n

    Sovitaan, että samassa hakusanassa ei voi käyttää molempia erikoismerkkejä.

    Sanat ovat tiedostossa kokonaan pienillä kirjaimilla kirjoitettuna. Voit myös olettaa, että funktion parametri on annettu kokonaan pienillä kirjaimilla.

    Jos yhtään tulosta ei löydy, funktio palauttaa tyhjän listan.

    Vinkki: Pythonin merkkijonometodeista startswith() ja endswith() saattaa olla hyötyä tehtävässä, googlaa niiden toiminta tarvittaessa tarkemmin!

    Esimerkki funktion kutsumisesta:

    \nprint(hae_sanat(\"*vokes\"))\n

    ['convokes', 'equivokes', 'evokes', 'invokes', 'provokes', 'reinvokes', 'revokes']

    Tee sanakirjaa mallintava ohjelma, johon voi syöttää uusia sanoja tai josta voi hakea syötettyjä sanoja.

    Ohjelman tulee toimia näin:

    1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 1\nAnna sana suomeksi: auto\nAnna sana englanniksi: car\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 1\nAnna sana suomeksi: roska\nAnna sana englanniksi: garbage\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 1\nAnna sana suomeksi: laukku\nAnna sana englanniksi: bag\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 2\nAnna sana: bag\nroska - garbage\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 2\nAnna sana: car\nauto - car\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 2\nAnna sana: laukku\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 3\nMoi!

    Sanat tallennetaan tiedostoon sanakirja.txt. Ohjelma lukee tiedoston sisällön kun se käynnistetään. Uudet sanaparit lisätään tiedostoon aina tallennuksen yhteydessä.

    Voit itse päättää tiedostoon tallennettavan tiedon muodon.

    Huomaa, että paikallisten TMC-testien ajaminen voi tyhjentää sanakirja-tiedoston.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    ","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/2-tiedostojen-kirjoittaminen.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda itse tiedoston Pythonilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa tekstimuotoista tietoa tiedostoon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa CSV-muotoisen tiedoston omasta datastasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston lukemisen lisäksi voimme luonnollisesti myös kirjoittaa tiedostoon tietoa. Tyypillinen esimerkki on ohjelman tulosten tallentaminen tiedostoon, jotta niitä voidaan käyttää myös myöhemmin tai muokata edelleen jollain toisella ohjelmalla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston kirjoittamisessa voimme joko luoda uuden tiedoston tai lisätä tietoa olemassa olevan tiedoston vanhan tiedon perään. Molemmissa tapauksissa käytetään edellisestä osasta tuttua "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"open"}]},{"type":"text","value":"-funktiota, mutta kirjoittamista varten funktiolle annetaan toinen parametri."}]},{"type":"element","tagName":"h2","properties":{"id":"uuden-tiedoston-luominen","style":"position:relative;"},"children":[{"type":"text","value":"Uuden tiedoston luominen"},{"type":"element","tagName":"a","properties":{"href":"#uuden-tiedoston-luominen","ariaLabel":"uuden tiedoston luominen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi tiedosto luodaan antamalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"open"}]},{"type":"text","value":"-funktiolle tiedoston nimen lisäksi avaustilaksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"w"}]},{"type":"text","value":" (tulee sanasta \"write\"). Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tiedostoon kirjoittaminen"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"mikäli tiedosto on jo olemassa, kaikki sen sisältö ylikirjoitetaan"}]},{"type":"text","value":". Ole siis erittäin huolellinen uusia tiedostoja luodessasi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun tiedosto on avattu, sinne voidaan kirjoittaa tietoa. Kirjoittaminen tapahtuu metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"write"}]},{"type":"text","value":", joka saa parametrikseen kirjoitettavan merkkijonon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suorittamisen jälkeen samaan hakemistoon ilmestyy tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_tiedosto.txt"}]},{"type":"text","value":", jonka sisältö näyttää tältä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että jos tiedostoon halutaan rivinvaihtoja, ne täytyy lisätä tekstiin itse. Esimerkiksi ohjelma"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen rivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tuottaa seuraavanlaisen tiedoston:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!Toinen riviViimeinen rivi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostukset saadaan omille riveilleen lisäämällä rivien loppuun rivivaihtomerkki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\\n"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Toinen rivi\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen rivi\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_tiedosto.txt"}]},{"type":"text","value":" näyttää tältä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nToinen rivi\nViimeinen rivi"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Omistuskirjoitus","tmcname":"osa06-10_omistuskirjoitus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy nimeä ja luo \"omistuskirjoituksen\" käyttäjän haluamaan tiedostoon. Seuraavassa ohjelman esimerkkisuoritus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kenelle teos omistetaan: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Arto"}]},{"type":"text","value":"\nMihin kirjoitetaan: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"omistettu.txt"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"omistettu.txt"}]},{"type":"text","value":" sisällöksi tulee"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hei Arto, toivomme viihtyisiä hetkiä python-kurssimateriaalin parissa! Terveisin mooc.fi-tiimi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-lisaaminen-olemassaolevaan-tiedostoon","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon lisääminen olemassaolevaan tiedostoon"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-lisaaminen-olemassaolevaan-tiedostoon","ariaLabel":"tiedon lisaaminen olemassaolevaan tiedostoon permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluamme lisätä tietoa olemassa olevaan tiedostoon, voimme avata tiedoston tilassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" (lyhenne sanasta \"append\"). Tällöin tiedoston nykyistä sisältöä ei pyyhitä, vaan uusi tieto kirjoitetaan tiedoston loppuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tiedostoa ei ole olemassa, tila "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" toimii samalla tavalla kuin tila "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"w"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma avaa edellisen esimerkin tuottaman tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_tiedosto.txt"}]},{"type":"text","value":" ja lisää sen perään pari riviä tekstiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"a\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rivi numero 4\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ja taas yksi.\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suorituksen jälkeen tiedosto näyttää tältä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moi kaikki!\nToinen rivi\nViimeinen rivi\nRivi numero 4\nJa taas yksi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedon lisääminen tiedostoon on kuitenkin suhteellisen harvoin tarvittava operaatio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostoon lisäämisen sijaan on usein yksinkertaisinta kirjoittaa tiedosto kokonaan uudelleen. Näin joudutaan useimmiten tekemään jos esimerkiksi tiedoston sisältö muuttuu keskeltä tiedostoa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Päiväkirja","tmcname":"osa06-11_paivakirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka mallintaa yksinkertaista päiväkirjaa. Ohjelman tulee tallentaa päiväkirjamerkinnät tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paivakirja.txt"}]},{"type":"text","value":". Kun ohjelma käynnistetään, se lukee merkinnät tiedostosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huom! Paikalliset testit voivat muuttaa tiedoston sisältöä - kopioi siis tiedosto talteen ennen testien ajamista, jos haluat säilyttää sen sisällön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna merkintä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tänään söin puuroa"}]},{"type":"text","value":"\nPäiväkirja tallennettu"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nMerkinnät:\nTänään söin puuroa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna merkintä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Illalla kävin saunassa"}]},{"type":"text","value":"\nPäiväkirja tallennettu"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nHeippa!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uusi käynnistys:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\nHeippa!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"csv-tiedoston-kirjoittaminen","style":"position:relative;"},"children":[{"type":"text","value":"CSV-tiedoston kirjoittaminen"},{"type":"element","tagName":"a","properties":{"href":"#csv-tiedoston-kirjoittaminen","ariaLabel":"csv tiedoston kirjoittaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-tiedoston voi kirjoittaa rivi riviltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"write"}]},{"type":"text","value":"-metodilla. Esimerkiksi seuraava esimerkki luo tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"koodarit.csv"}]},{"type":"text","value":", jonka jokaisella rivillä on koodarin nimi, työympäristö, lempikieli ja kokemus vuosissa. Tiedot on erotettu puolipisteillä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodarit.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki;Windows;Pascal;10\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti;Linux;PHP;2\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti;Linux;Java;17\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia;Mac;Cobol;9\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän tuloksena on seuraava tiedosto:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Erkki;Windows;Pascal;10\nMatti;Linux;PHP;2\nAntti;Linux;Java;17\nEmilia;Mac;Cobol;9"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan sitten tilannetta, jossa tiedostoon kirjoitettavat tiedot ovatkin muistissa listoina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"koodarit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Windows\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pascal\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Linux\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PHP\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Linux\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Java\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mac\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Cobol\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt voimme kirjoittaa koodarien tiedot CSV-tiedostoon näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodarit.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koodari "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos koodaria kuvaavissa listoissa olisi suuri määrä alkioita, olisi csv-tiedostoon kirjoitetavien rivien muodostaminen yllä olevalla tekniikalla työläähköä, ja rivit kannattaisikin koota silmukan avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodarit.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koodari "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koodarit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koodari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";\""}]}]},{"type":"text","value":"\n rivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\\n\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedoston-tyhjentaminen-ja-poisto","style":"position:relative;"},"children":[{"type":"text","value":"Tiedoston tyhjentäminen ja poisto"},{"type":"element","tagName":"a","properties":{"href":"#tiedoston-tyhjentaminen-ja-poisto","ariaLabel":"tiedoston tyhjentaminen ja poisto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa ohjelmassa on tarvetta tyhjentää olemassaolevan tiedoston sisältö. Tämä onnistuu avaamalla tiedosto kirjoitustilassa \"w\" ja sulkemalla tiedosto välittömästi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tyhjennettava_tiedosto.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":"-lohkossa on ainoastaan komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":", joka ei tee mitään. Komento tarvitaan, sillä Python ei salli sellaisia lohkoja missä ei ole mitään komentoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedoston tyhjennys on mahdollista tehdä myös ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":"-lohkokon käyttöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'tyhjennettava_tiedosto.txt'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"'w'"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"close"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"text-box","properties":{"variant":"hint","name":"Tiedoston poistaminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto voidaan myös poistaa kokonaan. Poisto tapahtuu seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# poisto-komento tuodaan koodin käyttöön import-lauseella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" os\n\nos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"remove"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tarpeeton_tiedosto.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei kuitenkaan teknisten rajoitteiden takia toimi palvelimella suoritettavissa testeissä, joten käytä ylläolevia tapoja jos joudut tehtävissä tyhjentämään tiedoston."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Aineiston suodatus","tmcname":"osa06-12_aineiston_suodatus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa laskut.csv on tehtävien ratkaisuja seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Arto;2+5;7"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Pekka;3-2;1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Erkki;9+3;11"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Arto;8-3;4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"Pekka;5+5;10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"...jne..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisella rivin muoto on siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oppilaan_nimi;lasku;lopputulos"}]},{"type":"text","value":". Laskut ovat kaikki esimerkin mukaisesti joko yhteen- tai vähennyslaskuja, ja kaikissa on kaksi operandia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suodata_laskut()"}]},{"type":"text","value":", joka"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Lukee tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laskut.csv"}]},{"type":"text","value":" sisällön ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kirjoittaa tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oikeat.csv"}]},{"type":"text","value":" ne rivit, joilla laskutoimituksen lopputulos on oikein sekä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kirjoittaa tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaarat.csv"}]},{"type":"text","value":" ne rivit, joilla laskutoimituksen lopputulos on väärin."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisestä esimerkistä tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"oikeat.csv"}]},{"type":"text","value":" olisi siis kirjoitettu rivit"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"Arto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"+5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"text","value":"\nPekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"-2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nPekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"+5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaksi muuta riviä olisi kirjoitettu tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaarat.csv"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita rivit samassa järjestyksessä kuin ne esiintyvät alkuperäisessä tiedostossa. Älä muuta alkuperäistä tiedostoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":" että funktion tulee toimia oikein siinäkin tapauksessa että funktiota kutsutaan monta kertaa perkkäin. Eli riippumatta siitä suoritatko funktion vain kerran"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tai useita kertoja peräkkän"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsuodata_laskut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tiedostojen sisältöjen tulee lopulta olla samat."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Henkilöt talteen","tmcname":"osa06-13_henkilot_talteen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tallenna_henkilo(henkilo: tuple)"}]},{"type":"text","value":" joka saa parametrikseen henkilöä kuvaavan tuplen. Tuplessa on seuraavat tiedot tässä järjestyksessä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nimi (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ikä (kokonaisluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pituus (liukuluku)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tallenna henkilön tiedot tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilot.csv"}]},{"type":"text","value":" olemassa olevien tietojen perään. Tiedot tulee tallentaa muodosssa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"nimi;ikä;pituus"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"eli yhden henkilön tiedot tulevat yhdelle riville. Jos funktiota esim. kutsuttaisiin parametrien arvoilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"(\"Kimmo Kimmonen\", 37, 175.5)"}]},{"type":"text","value":", ohjelma kirjoittaisi tiedoston loppuun rivin"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kimmo Kimmonen;37;175.5"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-kasittely-csvna","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon käsittely CSV:nä"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-kasittely-csvna","ariaLabel":"tiedon kasittely csvna permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään vielä lopuksi ohjelma, joka lukee CSV-tiedostosta opiskelijoiden viikoittaiset kurssipistemäärät ja laskee näiden avulla kurssin arvosanan. Lopuksi ohjelma luo CSV-tiedoston, josta selviää opiskelijan yhteispistemäärä sekä arvosana"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman lukema CSV-tiedosto näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;4;2;3;5;4;0;0\nPaula;7;2;8;3;5;4;5\nPirjo;3;4;3;5;3;4;4\nEmilia;6;6;5;5;0;4;8"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman logiikka on jaettu kolmeen funktioon. Tiedoston lukeminen tapahtuu samaan tapaan kuin edellisessä aliluvussa: tiedot talletetaan sanakirjaan, jossa avaimena on opiskelijan nimi ja arvona lista viikkopisteistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_viikkopisteet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n viikkopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" viikkopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Arvosanojen laskemista varten on tehty oma funktionsa, jota tiedostoon kirjoittava funktio hyödyntää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"arvosana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"35"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tallenna_tulokset"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedostonimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"w\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"write"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":";"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\\n\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse \"pääohjelma\" on nyt hyvin yksinkertainen. Huomaa, että luettavan ja kirjoitettavan tiedoston nimet annetaan funktioille parametrina:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viikkopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"viikkopisteet.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntallenna_tulokset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulokset.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Suorituksen tuloksena oleva CSV-tiedosto näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka;18;0\nPaula;34;3\nPirjo;26;2\nEmilia;41;5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, miten ohjelma on koostettu suhteellisen yksinkertaisista, vain yhteen asiaan keskittyvistä funktioista. Tämä on yleisesti ottaen suositeltava tapa ohjelmoinnissa, se helpottaa ohjelman toiminnallisuuden varmistamista sekä myöhemmin ohjelmaan tehtävien muutosten sekä laajennusten tekemistä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos esimerkiksi haluaisimme ohjelmaan toiminnallisuuden, joka tulostaa yhden opiskelijan arvosanan, olisi toiminnallisuus helppo koostaa käyttäen apuna jo valmiina olevaa arvosanan laskevaa funktiota:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_arvosana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"haettava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lista "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"items"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" haettava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n\nviikkopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"viikkopisteet.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hae_arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paula\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikkopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelmasta halutaan muuttaa tai korjata \"yhtä asiaa\", esimerkiksi arvosanojen pisterajoja, kohdistuu muokkaus hyvin rakennetussa ohjelmassa ainoastaan yhteen tai muutamaan funktioon. Jos sama logiikka, esimerkiksi arvosanan laskeminen, olisi kopioitu useaan paikkaan, kasvaisi riski, että muutoksia ei muistettaisi tehdä kaikkiin oikeisiin paikkoihin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssin tulokset, osa 4","tmcname":"osa06-14_kurssin_tulokset_osa4"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan vielä hieman aiemmin kurssien tulokset generoivaa sovellusta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällä hetkellä tiedostosta luetaan opiskelijoiden nimet, tehtäväpisteet sekä koepisteet. Laajennetaan ohjelmaa siten, että myös kurssin nimi ja laajuus luetaan tiedostosta, jonka muoto on seuraava (tiedosto on kirjoitettu ilman ääkkösiä, jotta se ei aiheuttaisi ongelmia Windowsissa):"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"\nnimi: Ohjelmoinnin perusteet\nlaajuus opintopisteina: 5\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma luo kaksi tiedostoa. Tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos.txt"}]},{"type":"text","value":" muoto on seuraava:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteet, 5 opintopistettä\n========================================\nnimi teht_lkm teht_pist koe_pist yht_pist arvosana\npekka peloton 21 5 9 14 0\njaana javanainen 27 6 11 17 1\nliisa virtanen 35 8 14 22 3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulokset kertova osa on siis samanlainen kuin tehtävän edellisen osan tulostus."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän lisäksi luodaan tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulos.csv"}]},{"type":"text","value":", jonka muoto on seuraava:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"12345678;pekka peloton;0\n12345687;jaana javanainen;1\n12345699;liisa virtanen;3\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suoritus näyttää seuraavalta:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"opiskelijatiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"opiskelijat1.csv"}]},{"type":"text","value":"\ntehtävätiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"tehtavat1.csv"}]},{"type":"text","value":"\nkoepisteet: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"koepisteet1.csv"}]},{"type":"text","value":"\nkurssin tiedot: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kurssi1.txt"}]},{"type":"text","value":"\nTulokset talletettu tiedostoihin tulos.txt ja tulos.csv"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma siis ainoastaan kyselee tiedostojen nimet ja varsinaiset tulokset tallennetaan vain tiedostoihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sanahaku","tmcname":"osa06-15_sanahaku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.txt"}]},{"type":"text","value":", joka sisältää englanninkielisiä sanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväsi on kirjoittaa funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_sanat(hakusana: str)"}]},{"type":"text","value":", joka palauttaa listana annetun hakusanan mukaiset sanat tiedostosta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Hakusanassa voi käyttää pienten kirjainten lisäksi seuraavia erikoismerkkejä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Piste "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":" tarkoittaa, että mikä tahansa merkki käy (esim "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ca."}]},{"type":"text","value":" vastaa vaikkapa sanoja cat ja car, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"p.ng"}]},{"type":"text","value":" sanoja ping ja pong ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":".a.e"}]},{"type":"text","value":" sanoja sane, care tai late."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Asteriski "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" tarkoittaa, että sanan alku- tai loppuosaksi käy mikä tahansa jono, esim. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ca*"}]},{"type":"text","value":" vastaa vaikkapa sanoja california, cat, caring tai catapult. Vastaavasti hakusana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"*ane"}]},{"type":"text","value":" vastaa vaikkapa sanoja crane, insane tai aeroplane. Voit olettaa, että asteriski on aina joko hakusanan alussa tai lopussa, ja että hakusanassa esiintyy korkeintaan yksi asteriski."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos hakusanassa ei ole erikoismerkkejä, haetaan vain täsmälleen hakusanaa vastaava sana."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sovitaan, että samassa hakusanassa ei voi käyttää molempia erikoismerkkejä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanat ovat tiedostossa kokonaan pienillä kirjaimilla kirjoitettuna. Voit myös olettaa, että funktion parametri on annettu kokonaan pienillä kirjaimilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos yhtään tulosta ei löydy, funktio palauttaa tyhjän listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: Pythonin merkkijonometodeista startswith() ja endswith() saattaa olla hyötyä tehtävässä, googlaa niiden toiminta tarvittaessa tarkemmin!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hae_sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"*vokes\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['convokes', 'equivokes', 'evokes', 'invokes', 'provokes', 'reinvokes', 'revokes']"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Muistava sanakirja","tmcname":"osa06-16_muistava_sanakirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee sanakirjaa mallintava ohjelma, johon voi syöttää uusia sanoja tai josta voi hakea syötettyjä sanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia näin:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna sana suomeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"auto"}]},{"type":"text","value":"\nAnna sana englanniksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"car"}]},{"type":"text","value":"\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna sana suomeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"roska"}]},{"type":"text","value":"\nAnna sana englanniksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"garbage"}]},{"type":"text","value":"\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\nAnna sana suomeksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"laukku"}]},{"type":"text","value":"\nAnna sana englanniksi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"bag"}]},{"type":"text","value":"\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"bag"}]},{"type":"text","value":"\nroska - garbage\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"car"}]},{"type":"text","value":"\nauto - car\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\nAnna sana: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"laukku"}]},{"type":"text","value":"\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nMoi!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanat tallennetaan tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanakirja.txt"}]},{"type":"text","value":". Ohjelma lukee tiedoston sisällön kun se käynnistetään. Uudet sanaparit lisätään tiedostoon aina tallennuksen yhteydessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit itse päättää tiedostoon tallennettavan tiedon muodon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että paikallisten TMC-testien ajaminen voi tyhjentää sanakirja-tiedoston."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" tässä tehtävässä (eikä missään muussakaan tehtävissä missä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei"}]},{"type":"text","value":" erikseen pyydetä funktioiden toteuttamista) mitään koodia "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ei tule sijoittaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkoon!"}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda itse tiedoston Pythonilla
    • \n
    • Osaat kirjoittaa tekstimuotoista tietoa tiedostoon
    • \n
    • Osaat kirjoittaa CSV-muotoisen tiedoston omasta datastasi
    • \n

    Tiedoston lukemisen lisäksi voimme luonnollisesti myös kirjoittaa tiedostoon tietoa. Tyypillinen esimerkki on ohjelman tulosten tallentaminen tiedostoon, jotta niitä voidaan käyttää myös myöhemmin tai muokata edelleen jollain toisella ohjelmalla.

    Tiedoston kirjoittamisessa voimme joko luoda uuden tiedoston tai lisätä tietoa olemassa olevan tiedoston vanhan tiedon perään. Molemmissa tapauksissa käytetään edellisestä osasta tuttua open-funktiota, mutta kirjoittamista varten funktiolle annetaan toinen parametri.

    Uuden tiedoston luominen

    Uusi tiedosto luodaan antamalla open-funktiolle tiedoston nimen lisäksi avaustilaksi w (tulee sanasta \"write\"). Esimerkiksi

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    # tiedostoon kirjoittaminen

    Huomaa, että mikäli tiedosto on jo olemassa, kaikki sen sisältö ylikirjoitetaan. Ole siis erittäin huolellinen uusia tiedostoja luodessasi.

    Kun tiedosto on avattu, sinne voidaan kirjoittaa tietoa. Kirjoittaminen tapahtuu metodilla write, joka saa parametrikseen kirjoitettavan merkkijonon.

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    tiedosto.write(\"Moi kaikki!\")

    Ohjelman suorittamisen jälkeen samaan hakemistoon ilmestyy tiedosto uusi_tiedosto.txt, jonka sisältö näyttää tältä:

    Moi kaikki!

    Huomaa, että jos tiedostoon halutaan rivinvaihtoja, ne täytyy lisätä tekstiin itse. Esimerkiksi ohjelma

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    tiedosto.write(\"Moi kaikki!\")\n    tiedosto.write(\"Toinen rivi\")\n    tiedosto.write(\"Viimeinen rivi\")

    tuottaa seuraavanlaisen tiedoston:

    Moi kaikki!Toinen riviViimeinen rivi

    Tulostukset saadaan omille riveilleen lisäämällä rivien loppuun rivivaihtomerkki \\n:

    with open(\"uusi_tiedosto.txt\", \"w\") as tiedosto:\n    tiedosto.write(\"Moi kaikki!\\n\")\n    tiedosto.write(\"Toinen rivi\\n\")\n    tiedosto.write(\"Viimeinen rivi\\n\")

    Nyt tiedosto uusi_tiedosto.txt näyttää tältä:

    Moi kaikki!\nToinen rivi\nViimeinen rivi

    Tee ohjelma, joka kysyy nimeä ja luo \"omistuskirjoituksen\" käyttäjän haluamaan tiedostoon. Seuraavassa ohjelman esimerkkisuoritus:

    Kenelle teos omistetaan: Arto\nMihin kirjoitetaan: omistettu.txt

    Tiedoston omistettu.txt sisällöksi tulee

    Hei Arto, toivomme viihtyisiä hetkiä python-kurssimateriaalin parissa! Terveisin mooc.fi-tiimi

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tiedon lisääminen olemassaolevaan tiedostoon

    Jos haluamme lisätä tietoa olemassa olevaan tiedostoon, voimme avata tiedoston tilassa a (lyhenne sanasta \"append\"). Tällöin tiedoston nykyistä sisältöä ei pyyhitä, vaan uusi tieto kirjoitetaan tiedoston loppuun.

    Jos tiedostoa ei ole olemassa, tila a toimii samalla tavalla kuin tila w.

    Seuraava ohjelma avaa edellisen esimerkin tuottaman tiedoston uusi_tiedosto.txt ja lisää sen perään pari riviä tekstiä:

    with open(\"uusi_tiedosto.txt\", \"a\") as tiedosto:\n    tiedosto.write(\"Rivi numero 4\\n\")\n    tiedosto.write(\"Ja taas yksi.\\n\")

    Ohjelman suorituksen jälkeen tiedosto näyttää tältä:

    Moi kaikki!\nToinen rivi\nViimeinen rivi\nRivi numero 4\nJa taas yksi.

    Tiedon lisääminen tiedostoon on kuitenkin suhteellisen harvoin tarvittava operaatio.

    Tiedostoon lisäämisen sijaan on usein yksinkertaisinta kirjoittaa tiedosto kokonaan uudelleen. Näin joudutaan useimmiten tekemään jos esimerkiksi tiedoston sisältö muuttuu keskeltä tiedostoa.

    Tee ohjelma, joka mallintaa yksinkertaista päiväkirjaa. Ohjelman tulee tallentaa päiväkirjamerkinnät tiedostoon paivakirja.txt. Kun ohjelma käynnistetään, se lukee merkinnät tiedostosta.

    Huom! Paikalliset testit voivat muuttaa tiedoston sisältöä - kopioi siis tiedosto talteen ennen testien ajamista, jos haluat säilyttää sen sisällön.

    Ohjelman tulee toimia seuraavan esimerkin mukaisesti:

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 1\nAnna merkintä: Tänään söin puuroa\nPäiväkirja tallennettu

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 2\nMerkinnät:\nTänään söin puuroa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 1\nAnna merkintä: Illalla kävin saunassa\nPäiväkirja tallennettu

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 2\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 0\nHeippa!

    Uusi käynnistys:

    1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 2\nMerkinnät:\nTänään söin puuroa\nIllalla kävin saunassa\n1 - lisää merkintä, 2 - lue merkinnät, 0 - lopeta\nValinta: 0\nHeippa!

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    CSV-tiedoston kirjoittaminen

    CSV-tiedoston voi kirjoittaa rivi riviltä write-metodilla. Esimerkiksi seuraava esimerkki luo tiedoston koodarit.csv, jonka jokaisella rivillä on koodarin nimi, työympäristö, lempikieli ja kokemus vuosissa. Tiedot on erotettu puolipisteillä.

    with open(\"koodarit.csv\", \"w\") as tiedosto:\n    tiedosto.write(\"Erkki;Windows;Pascal;10\\n\")\n    tiedosto.write(\"Matti;Linux;PHP;2\\n\")\n    tiedosto.write(\"Antti;Linux;Java;17\\n\")\n    tiedosto.write(\"Emilia;Mac;Cobol;9\\n\")

    Tämän tuloksena on seuraava tiedosto:

    Erkki;Windows;Pascal;10\nMatti;Linux;PHP;2\nAntti;Linux;Java;17\nEmilia;Mac;Cobol;9

    Tarkastellaan sitten tilannetta, jossa tiedostoon kirjoitettavat tiedot ovatkin muistissa listoina:

    koodarit = []\nkoodarit.append([\"Erkki\", \"Windows\", \"Pascal\", 10])\nkoodarit.append([\"Matti\", \"Linux\", \"PHP\", 2])\nkoodarit.append([\"Antti\", \"Linux\", \"Java\", 17])\nkoodarit.append([\"Emilia\", \"Mac\", \"Cobol\", 9])

    Nyt voimme kirjoittaa koodarien tiedot CSV-tiedostoon näin:

    with open(\"koodarit.csv\", \"w\") as tiedosto:\n    for koodari in koodarit:\n        rivi = f\"{koodari[0]};{koodari[1]};{koodari[2]};{koodari[3]}\"\n        tiedosto.write(rivi+\"\\n\")

    Jos koodaria kuvaavissa listoissa olisi suuri määrä alkioita, olisi csv-tiedostoon kirjoitetavien rivien muodostaminen yllä olevalla tekniikalla työläähköä, ja rivit kannattaisikin koota silmukan avulla:

    with open(\"koodarit.csv\", \"w\") as tiedosto:\n    for koodari in koodarit:\n        rivi = \"\"\n        for arvo in koodari:\n            rivi += f\"{arvo};\"\n        rivi = rivi[:-1]\n        tiedosto.write(rivi+\"\\n\")

    Tiedoston tyhjentäminen ja poisto

    Joissain tilanteissa ohjelmassa on tarvetta tyhjentää olemassaolevan tiedoston sisältö. Tämä onnistuu avaamalla tiedosto kirjoitustilassa \"w\" ja sulkemalla tiedosto välittömästi:

    with open(\"tyhjennettava_tiedosto.txt\", \"w\") as tiedosto:\n    pass

    Nyt with-lohkossa on ainoastaan komento pass, joka ei tee mitään. Komento tarvitaan, sillä Python ei salli sellaisia lohkoja missä ei ole mitään komentoja.

    Tiedoston tyhjennys on mahdollista tehdä myös ilman with-lohkokon käyttöä:

    open('tyhjennettava_tiedosto.txt', 'w').close()

    Tiedosto voidaan myös poistaa kokonaan. Poisto tapahtuu seuraavasti:

    # poisto-komento tuodaan koodin käyttöön import-lauseella\nimport os\n\nos.remove(\"tarpeeton_tiedosto.csv\")

    Tämä ei kuitenkaan teknisten rajoitteiden takia toimi palvelimella suoritettavissa testeissä, joten käytä ylläolevia tapoja jos joudut tehtävissä tyhjentämään tiedoston.

    Tiedostossa laskut.csv on tehtävien ratkaisuja seuraavan esimerkin mukaisesti:

    Arto;2+5;7\nPekka;3-2;1\nErkki;9+3;11\nArto;8-3;4\nPekka;5+5;10\n...jne...

    Jokaisella rivin muoto on siis oppilaan_nimi;lasku;lopputulos. Laskut ovat kaikki esimerkin mukaisesti joko yhteen- tai vähennyslaskuja, ja kaikissa on kaksi operandia.

    Kirjoita funktio suodata_laskut(), joka

      \n
    • Lukee tiedoston laskut.csv sisällön ja
    • \n
    • kirjoittaa tiedostoon oikeat.csv ne rivit, joilla laskutoimituksen lopputulos on oikein sekä
    • \n
    • kirjoittaa tiedostoon vaarat.csv ne rivit, joilla laskutoimituksen lopputulos on väärin.
    • \n

    Edellisestä esimerkistä tiedostoon oikeat.csv olisi siis kirjoitettu rivit

    Arto;2+5;7\nPekka;3-2;1\nPekka;5+5;10

    Kaksi muuta riviä olisi kirjoitettu tiedostoon vaarat.csv.

    Kirjoita rivit samassa järjestyksessä kuin ne esiintyvät alkuperäisessä tiedostossa. Älä muuta alkuperäistä tiedostoa.

    Huomaa että funktion tulee toimia oikein siinäkin tapauksessa että funktiota kutsutaan monta kertaa perkkäin. Eli riippumatta siitä suoritatko funktion vain kerran

    suodata_laskut()

    tai useita kertoja peräkkän

    suodata_laskut()\nsuodata_laskut()\nsuodata_laskut()\nsuodata_laskut()

    tiedostojen sisältöjen tulee lopulta olla samat.

    Kirjoita funktio tallenna_henkilo(henkilo: tuple) joka saa parametrikseen henkilöä kuvaavan tuplen. Tuplessa on seuraavat tiedot tässä järjestyksessä:

      \n
    • Nimi (merkkijono)
    • \n
    • Ikä (kokonaisluku)
    • \n
    • Pituus (liukuluku)
    • \n

    Tallenna henkilön tiedot tiedostoon henkilot.csv olemassa olevien tietojen perään. Tiedot tulee tallentaa muodosssa

    nimi;ikä;pituus

    eli yhden henkilön tiedot tulevat yhdelle riville. Jos funktiota esim. kutsuttaisiin parametrien arvoilla (\"Kimmo Kimmonen\", 37, 175.5), ohjelma kirjoittaisi tiedoston loppuun rivin

    Kimmo Kimmonen;37;175.5

    Tiedon käsittely CSV:nä

    Tehdään vielä lopuksi ohjelma, joka lukee CSV-tiedostosta opiskelijoiden viikoittaiset kurssipistemäärät ja laskee näiden avulla kurssin arvosanan. Lopuksi ohjelma luo CSV-tiedoston, josta selviää opiskelijan yhteispistemäärä sekä arvosana

    Ohjelman lukema CSV-tiedosto näyttää seuraavalta:

    Pekka;4;2;3;5;4;0;0\nPaula;7;2;8;3;5;4;5\nPirjo;3;4;3;5;3;4;4\nEmilia;6;6;5;5;0;4;8

    Ohjelman logiikka on jaettu kolmeen funktioon. Tiedoston lukeminen tapahtuu samaan tapaan kuin edellisessä aliluvussa: tiedot talletetaan sanakirjaan, jossa avaimena on opiskelijan nimi ja arvona lista viikkopisteistä:

    def lue_viikkopisteet(tiedostonimi):\n    viikkopisteet = {}\n    with open(tiedostonimi) as tiedosto:\n        for rivi in tiedosto:\n            osat = rivi.split(\";\")\n            lista = []\n            for pisteet in osat[1:]:\n                lista.append(int(pisteet))\n            viikkopisteet[osat[0]] = lista\n\n    return viikkopisteet

    Arvosanojen laskemista varten on tehty oma funktionsa, jota tiedostoon kirjoittava funktio hyödyntää:

    def arvosana(pisteet):\n    if pisteet < 20:\n        return 0\n    elif pisteet < 25:\n        return 1\n    elif pisteet < 30:\n        return 2\n    elif pisteet < 35:\n        return 3\n    elif pisteet < 40:\n        return 4\n    else:\n        return 5\n\ndef tallenna_tulokset(tiedostonimi, viikkopisteet):\n    with open(tiedostonimi, \"w\") as tiedosto:\n        for nimi, lista in viikkopisteet.items():\n            summa = sum(lista)\n            tiedosto.write(f\"{nimi};{summa};{arvosana(summa)}\\n\")

    Itse \"pääohjelma\" on nyt hyvin yksinkertainen. Huomaa, että luettavan ja kirjoitettavan tiedoston nimet annetaan funktioille parametrina:

    viikkopisteet = lue_viikkopisteet(\"viikkopisteet.csv\")\ntallenna_tulokset(\"tulokset.csv\", viikkopisteet)

    Suorituksen tuloksena oleva CSV-tiedosto näyttää seuraavalta:

    Pekka;18;0\nPaula;34;3\nPirjo;26;2\nEmilia;41;5

    Huomaa, miten ohjelma on koostettu suhteellisen yksinkertaisista, vain yhteen asiaan keskittyvistä funktioista. Tämä on yleisesti ottaen suositeltava tapa ohjelmoinnissa, se helpottaa ohjelman toiminnallisuuden varmistamista sekä myöhemmin ohjelmaan tehtävien muutosten sekä laajennusten tekemistä.

    Jos esimerkiksi haluaisimme ohjelmaan toiminnallisuuden, joka tulostaa yhden opiskelijan arvosanan, olisi toiminnallisuus helppo koostaa käyttäen apuna jo valmiina olevaa arvosanan laskevaa funktiota:

    def hae_arvosana(haettava, viikkopisteet):\n    for nimi, lista in viikkopisteet.items():\n        if nimi == haettava:\n            return arvosana(sum(lista))\n\n\nviikkopisteet = lue_viikkopisteet(\"viikkopisteet.csv\")\nprint(hae_arvosana(\"Paula\", viikkopisteet))\n

    3

    Jos ohjelmasta halutaan muuttaa tai korjata \"yhtä asiaa\", esimerkiksi arvosanojen pisterajoja, kohdistuu muokkaus hyvin rakennetussa ohjelmassa ainoastaan yhteen tai muutamaan funktioon. Jos sama logiikka, esimerkiksi arvosanan laskeminen, olisi kopioitu useaan paikkaan, kasvaisi riski, että muutoksia ei muistettaisi tehdä kaikkiin oikeisiin paikkoihin.

    Laajennetaan vielä hieman aiemmin kurssien tulokset generoivaa sovellusta.

    Tällä hetkellä tiedostosta luetaan opiskelijoiden nimet, tehtäväpisteet sekä koepisteet. Laajennetaan ohjelmaa siten, että myös kurssin nimi ja laajuus luetaan tiedostosta, jonka muoto on seuraava (tiedosto on kirjoitettu ilman ääkkösiä, jotta se ei aiheuttaisi ongelmia Windowsissa):

    \n\nnimi: Ohjelmoinnin perusteet\nlaajuus opintopisteina: 5\n

    Ohjelma luo kaksi tiedostoa. Tiedoston tulos.txt muoto on seuraava:

    \nOhjelmoinnin perusteet, 5 opintopistettä\n========================================\nnimi                          teht_lkm  teht_pist koe_pist  yht_pist  arvosana\npekka peloton                 21        5         9         14        0\njaana javanainen              27        6         11        17        1\nliisa virtanen                35        8         14        22        3\n

    Tulokset kertova osa on siis samanlainen kuin tehtävän edellisen osan tulostus.

    Tämän lisäksi luodaan tiedosto tulos.csv, jonka muoto on seuraava:

    \n12345678;pekka peloton;0\n12345687;jaana javanainen;1\n12345699;liisa virtanen;3\n

    Ohjelman suoritus näyttää seuraavalta:

    opiskelijatiedot: opiskelijat1.csv\ntehtävätiedot: tehtavat1.csv\nkoepisteet: koepisteet1.csv\nkurssin tiedot: kurssi1.txt\nTulokset talletettu tiedostoihin tulos.txt ja tulos.csv

    Ohjelma siis ainoastaan kyselee tiedostojen nimet ja varsinaiset tulokset tallennetaan vain tiedostoihin.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    Tehtäväpohjasta löytyy tiedosto sanat.txt, joka sisältää englanninkielisiä sanoja.

    Tehtäväsi on kirjoittaa funktio hae_sanat(hakusana: str), joka palauttaa listana annetun hakusanan mukaiset sanat tiedostosta.

    Hakusanassa voi käyttää pienten kirjainten lisäksi seuraavia erikoismerkkejä:

      \n
    • Piste . tarkoittaa, että mikä tahansa merkki käy (esim ca. vastaa vaikkapa sanoja cat ja car, p.ng sanoja ping ja pong ja .a.e sanoja sane, care tai late.
    • \n
    • Asteriski * tarkoittaa, että sanan alku- tai loppuosaksi käy mikä tahansa jono, esim. ca* vastaa vaikkapa sanoja california, cat, caring tai catapult. Vastaavasti hakusana *ane vastaa vaikkapa sanoja crane, insane tai aeroplane. Voit olettaa, että asteriski on aina joko hakusanan alussa tai lopussa, ja että hakusanassa esiintyy korkeintaan yksi asteriski.
    • \n
    • Jos hakusanassa ei ole erikoismerkkejä, haetaan vain täsmälleen hakusanaa vastaava sana.
    • \n

    Sovitaan, että samassa hakusanassa ei voi käyttää molempia erikoismerkkejä.

    Sanat ovat tiedostossa kokonaan pienillä kirjaimilla kirjoitettuna. Voit myös olettaa, että funktion parametri on annettu kokonaan pienillä kirjaimilla.

    Jos yhtään tulosta ei löydy, funktio palauttaa tyhjän listan.

    Vinkki: Pythonin merkkijonometodeista startswith() ja endswith() saattaa olla hyötyä tehtävässä, googlaa niiden toiminta tarvittaessa tarkemmin!

    Esimerkki funktion kutsumisesta:

    \nprint(hae_sanat(\"*vokes\"))\n

    ['convokes', 'equivokes', 'evokes', 'invokes', 'provokes', 'reinvokes', 'revokes']

    Tee sanakirjaa mallintava ohjelma, johon voi syöttää uusia sanoja tai josta voi hakea syötettyjä sanoja.

    Ohjelman tulee toimia näin:

    1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 1\nAnna sana suomeksi: auto\nAnna sana englanniksi: car\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 1\nAnna sana suomeksi: roska\nAnna sana englanniksi: garbage\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 1\nAnna sana suomeksi: laukku\nAnna sana englanniksi: bag\nSanapari lisätty\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 2\nAnna sana: bag\nroska - garbage\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 2\nAnna sana: car\nauto - car\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 2\nAnna sana: laukku\nlaukku - bag\n1 - Lisää sana, 2 - Hae sanaa, 3 - Poistu\nValinta: 3\nMoi!

    Sanat tallennetaan tiedostoon sanakirja.txt. Ohjelma lukee tiedoston sisällön kun se käynnistetään. Uudet sanaparit lisätään tiedostoon aina tallennuksen yhteydessä.

    Voit itse päättää tiedostoon tallennettavan tiedon muodon.

    Huomaa, että paikallisten TMC-testien ajaminen voi tyhjentää sanakirja-tiedoston.

    Huom: tässä tehtävässä (eikä missään muussakaan tehtävissä missä ei erikseen pyydetä funktioiden toteuttamista) mitään koodia ei tule sijoittaa\nif __name__ == \"__main__\"-lohkoon!

    ","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/2-tiedostojen-kirjoittaminen.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-6/3-virheet/page-data.json b/page-data/osa-6/3-virheet/page-data.json index 781382b65..983163746 100644 --- a/page-data/osa-6/3-virheet/page-data.json +++ b/page-data/osa-6/3-virheet/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-6/3-virheet", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten virheellisiä syötteitä voidaan käsitellä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan poikkeuksella ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnistat tyypillisiä poikkeuksia Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käsitellä poikkeuksia omissa ohjelmissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointiin liittyvät virheet voidaan jakaa kahteen ryhmään:"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Syntaksivirheet, jotka estävät ohjelman suorittamisen kokonaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Suorituksen aikaiset virheet, jotka keskeyttävät ohjelman suorituksen"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ryhmän 1 virheet on yleensä helppoa korjata, koska Python-tulkki huomauttaa niistä, kun ohjelmaa yritetään suorittaa. Tällaisia virheitä ovat esimerkiksi puuttuva kaksoispiste silmukan alussa tai puuttuva lainausmerkki merkkijonon lopussa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ryhmän 2 virheet voivat olla hankalampia havaita, koska virhe voi tapahtua jossain vaiheessa ohjelman suorituksen aikana ja vain tietyissä tilanteissa. Ohjelma saattaa toimia yleensä hyvin mutta keskeytyä virheen takia jossain reunatapauksessa. Keskitymme seuraavaksi tällaisten virheiden käsittelyyn."}]},{"type":"element","tagName":"h2","properties":{"id":"syotteiden-tarkastaminen","style":"position:relative;"},"children":[{"type":"text","value":"Syötteiden tarkastaminen"},{"type":"element","tagName":"a","properties":{"href":"#syotteiden-tarkastaminen","ariaLabel":"syotteiden tarkastaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein virhetilanteet ohjelmien suorituksen aikana liittyvät jotenkin virheelliseen syötteeseen. Esimerkkejä virheellisistä syötteistä ovat"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"puuttuvat tai tyhjät arvot: esimerkiksi pituus nolla tai tyhjä merkkijono nimenä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"negatiiviset arvot: esimerkiksi –15 reseptin aineosan painona"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"puuttuva tai väärän niminen tiedosto"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"liian pienet tai liian suuret arvot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"väärä indeksi (esim. viittaaminen indeksiin 3 merkkijonossa \"moi\")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"väärän tyyppiset arvot, esimerkiksi merkkijono luvun sijasta"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Useimpiin virheistä voidaan onneksi varautua ohjelmallisesti. Tarkastellaan esimerkkinä ohjelmaa, joka lukee käyttäjältä syötteenä tämän iän ja testaa, että se on sallituissa rajoissa (vähintään 0 ja korkeintaan 150):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna ikäsi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"150"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ikä kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\nIkä kelpaa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nVirheellinen ikä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötteen tarkastamisessa (eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"validoinnissa"}]},{"type":"text","value":") ilmenee kuitenkin puutteita, jos syötteeksi annetaan esimerkiksi merkkijono:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kakskytkolme"}]},{"type":"text","value":"\nValueError: invalid literal for int() with base 10: 'kakskytkolme'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virhe johtuu siitä, että funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" ei pysty muuttamaan merkkijonoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kakskytkolme"}]},{"type":"text","value":" kokonaisluvuksi. Tämän seurauksena ohjelman suoritus keskeytyy yllä olevaan virheilmoitukseen."}]},{"type":"element","tagName":"h2","properties":{"id":"poikkeukset","style":"position:relative;"},"children":[{"type":"text","value":"Poikkeukset"},{"type":"element","tagName":"a","properties":{"href":"#poikkeukset","ariaLabel":"poikkeukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suorituksen aikaisia virheitä kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"poikkeuksiksi"}]},{"type":"text","value":" (exception). Ohjelman koodissa on mahdollista varautua poikkeuksiin ja käsitellä ne ilman, että ohjelman suoritus keskeytyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa poikkeukset käsitellään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseilla. Ideana on, että mikäli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lohkossa tapahtuu jokin poikkeus, Python tarkistaa, onko tälle poikkeukselle määritelty "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lohkoa. Mikäli on, suoritetaan tämä lohko ja suoritus jatkuu sen jälkeen normaalisti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutetaan edellä esitettyä esimerkkiä siten, että ohjelma varautuu poikkeukseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna ikäsi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"150"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ikä kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kakskytkolme"}]},{"type":"text","value":"\nVirheellinen ikä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa voidaan siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lauseella ilmoittaa, että seuraavan lohkon sisällä tapahtuva toiminta voi aiheuttaa virheen. Välittömästi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lohkoa seuraavassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseessa ilmoitetaan, mihin virheeseen varaudutaan. Edellisessä esimerkissä varauduttiin ainoastaan virheeseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":" - jokin muu virhe olisi edelleen katkaissut ohjelman suorituksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa virhetilanteessa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ika"}]},{"type":"text","value":" saa arvon -1, jolloin ohjelma tunnistaa oikein virheellisen iän, koska ehtona on, että ikä on vähintään 0."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_kokonaisluku"}]},{"type":"text","value":" lukee käyttäjältä kokonaisluvun varautuen siihen, että käyttäjä antaa virheellisen syötteen. Funktio kysyy lukua uudestaan niin kauan, kunnes käyttäjä lopulta antaa kelvollisen luvun."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kokonaisluku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syötä kokonaisluku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen syöte\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kokonaisluku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"potenssiin kolme on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kolme"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aybabtu"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nKiitos!\n5 potenssiin kolme on 125"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa saattaa olla tarvetta varautua poikkeukseen, mutta poikkeuksen tapahtuessa riittää \"ignoorata\" se, eli jättää koko asia huomiomatta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lohkossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos muuttaisimme edellistä esimerkkiä siten, että funktio hyväksyisi ainoastaan lukua 100 pienemmät kokonaisluvut, voisimme muuttaa toteutusta seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_pieni_kokonaisluku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syötä kokonaisluku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luku\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä komento ei tee mitään"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen syöte\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_pieni_kokonaisluku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"potenssiin kolme on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kolme"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1000"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nKiitos!\n5 potenssiin kolme on 125"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis poikkeuksen käsittelevässä lohkossa on ainoastaan komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":", joka ei tee mitään. Komento tarvitaan, sillä Python ei salli tyhjiä lohkoja."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Syötteen luku","tmcname":"osa06-17_syotteen_luku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue"}]},{"type":"text","value":", joka kysyy käyttäjältä syötettä, kunnes se on parametrien määrittelemällä välillä oleva kokonaisluku. Funktio palauttaa käyttäjän antaman syötteen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"syötä luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"syötit luvun:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"syötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"seitsemän"}]},{"type":"text","value":"\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nsyötit luvun: 8"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tyypillisia-virheita","style":"position:relative;"},"children":[{"type":"text","value":"Tyypillisiä virheitä"},{"type":"element","tagName":"a","properties":{"href":"#tyypillisia-virheita","ariaLabel":"tyypillisia virheita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on listattu joitakin yleisiä virheitä ja syitä niiden ilmenemiselle:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ValueError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus voi johtua siitä, että funktion parametri on vääränlainen. Esimerkiksi kutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float(\"1,23\")"}]},{"type":"text","value":" tuottaa tämän poikkeuksen, koska Pythonissa desimaalierottimen tulee olla piste eikä pilkku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"TypeError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus tapahtuu, kun arvo on väärän tyyppinen. Esimerkiksi kutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(10)"}]},{"type":"text","value":" saa aikaan tämän poikkeuksen, koska funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" haluaa parametrin, jolle voidaan laskea pituus (kuten merkkijonon tai listan)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"IndexError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus tapahtuu, jos yritetään viitata indeksiin, jota ei ole olemassa. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"abc\"[5]"}]},{"type":"text","value":" aiheuttaa tämän poikkeuksen, koska merkkijonossa ei ole indeksiä 5."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ZeroDivisionError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus tapahtuu, jos yritetään jakaa nollalla. Yksi esimerkki on tilanne, jossa yritetään laskea listan arvojen keskiarvo kaavalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum(lista) / len(lista)"}]},{"type":"text","value":", mutta listan pituus on nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tiedostojen poikkeukset"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostojen käsittelyssä voi tulla vastaan esimerkiksi poikkeukset "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"FileNotFoundError"}]},{"type":"text","value":" (koetetaan lukea tiedostoa, jota ei ole olemassa), "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"io.UnsupportedOperation"}]},{"type":"text","value":" (tiedosto on avattu tilassa, joka ei salli operaatiota) tai "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"PermissionError"}]},{"type":"text","value":" (ohjelmalla ei ole oikeutta käsitellä tiedostoa)."}]},{"type":"element","tagName":"h2","properties":{"id":"useamman-poikkeuksen-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Useamman poikkeuksen käsittely"},{"type":"element","tagName":"a","properties":{"href":"#useamman-poikkeuksen-kasittely","ariaLabel":"useamman poikkeuksen kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhtä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lohkoa kohti voi olla useampia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseita. Esimerkiksi seuraavassa ohjelmassa varaudutaan sekä poikkeukseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"FileNotFoundException"}]},{"type":"text","value":" että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PermissionError"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" FileNotFoundError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiedostoa esimerkki.txt ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" PermissionError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei oikeutta avata tiedostoa esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aina ei ole tarpeen eritellä tapahtuneita virheitä. Esimerkiksi juuri tiedostoa avatessa saattaa riittää, että tiedetään virheen tapahtuneen, muttei ole niin tärkeää tietää, miksi virhe tapahtui. Kaikki mahdolliset virheet voi käsitellä käyttämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lausetta määrittelemättä poikkeuksen tyyppiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tapahtui virhe tiedoston lukemisessa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tällaisessa tapauksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lause käsittelee kaikki mahdolliset virheet, myös ohjelmoijan tekemät virheet lukuun ottamatta syntaksivirheitä, jotka estävät ohjelman suorittamisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma heittää aina poikkeuksen, koska muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tiedosto"}]},{"type":"text","value":" nimi on kirjoitettu toisessa kohdassa väärin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tiedotso"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedotso"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tapahtui virhe tiedoston lukemisessa.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tästä näkee, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" voi peittää varsinaisen virheen: tässä tapauksessa virheen syynä ei ole tiedoston käsittely vaan väärin kirjoitettu muuttuja."}]},{"type":"element","tagName":"h2","properties":{"id":"poikkeusten-valittyminen","style":"position:relative;"},"children":[{"type":"text","value":"Poikkeusten välittyminen"},{"type":"element","tagName":"a","properties":{"href":"#poikkeusten-valittyminen","ariaLabel":"poikkeusten valittyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion sisällä tapahtuu poikkeus, jota ei käsitellä, poikkeus välitetään funktion kutsujalle. Tätä jatketaan, kunnes ollaan pääohjelman tasolla. Jos poikkeusta ei tässäkään käsitellä sopivalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseella, ohjelman suoritus katkeaa ja poikkeus yleensä tulostetaan ruudulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa ohjelmassa funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" tapahtuva poikkeus käsitellään vasta pääohjelmassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n testi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jotain meni pieleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kolme"}]},{"type":"text","value":"\nJotain meni pieleen"}]}]},{"type":"element","tagName":"h2","properties":{"id":"poikkeusten-tuottaminen","style":"position:relative;"},"children":[{"type":"text","value":"Poikkeusten tuottaminen"},{"type":"element","tagName":"a","properties":{"href":"#poikkeusten-tuottaminen","ariaLabel":"poikkeusten tuottaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös tarvittaessa tuottaa poikkeuksen itse komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":". Vaikka virheiden tuottaminen varta vasten voi aluksi tuntua oudolta ajatukselta, mekanismi on itse asiassa hyvinkin hyödyllinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi jos teemme funktion, jolle annetaan virheellinen parametri, voimme ilmaista tämän poikkeuksen avulla. Tämä voi olla parempi tapa kuin esimerkiksi palauttaa jokin virhearvo tai tulostaa viesti ruudulle, koska funktion käyttäjä ei välttämättä huomaisi asiaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"text","value":" laskee parametrina annetun luvun kertoman (esimerkiksi luvun 5 kertoma on 1 * 2 * 3 * 4 * 5). Kuitenkin jos annettu luku on negatiivinen, funktio tuottaa poikkeuksen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Negatiivinen syöte: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" i\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"6\n720\nTraceback (most recent call last):\nFile \"testi.py\", line 11, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nprint(kertoma(-1))\nFile \"testi.py\", line 3, in kertoma\nraise ValueError(\"Negatiivinen syöte: \" + str(n))\nValueError: Negatiivinen syöte: -1"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Parametrien validointi ","tmcname":"osa06-18_parametrien_validointi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_henkilo(nimi: str, ika: int)"}]},{"type":"text","value":", joka luo ja palauttaa uuden henkilö-tuplen. Tuplessa ensimmäinen alkio on nimi ja jälkimmäinen ikä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion parametrit ovat virheelliset, sen tulee tuplen palauttamisen sijasta tuottaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"-poikkeus."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virheellisiä parametreja tässä tapauksessa ovat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi on tyhjä merkkijono"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi ei koostu vähintään kahdesta sanasta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimen pituus on yli 40 merkkiä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ikä on negatiivinen luku"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ikä on suurempi kuin 150"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Virheelliset lottonumerot","tmcname":"osa06-19_virheelliset_lottonumerot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lottonumerot.csv"}]},{"type":"text","value":" on tallennettu lottonumeroita seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 1;5,7,11,13,23,24,30\nviikko 2;9,13,14,24,34,35,37\n...jne..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aluksi pitäisi olla siis otsikko "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viikko x"}]},{"type":"text","value":", ja sen jälkeen seitsemän numeroa väliltä 1...39."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto on kuitenkin osittain korruptoitunut. Seuraavat rivit ovat esimerkkejä virheellisistä riveistä (huomaa, että tehtäväpohjassa olevassa tiedostossa ei ole juuri näitä virheitä):"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viikkonumero pielessä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko zzc;1,5,13,22,24,25,26"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Numero tai numeroita pielessä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 22;1,**,5,6,13,2b,34"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Liian vähän numeroita:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 13;4,6,17,19,24,33"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Liian pieniä tai suuria numeroita:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 39;5,9,15,35,39,41,105"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivissä esiintyy sama numero kahdesti:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 41;5,12,3,35,12,14,36"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suodata_virheelliset()"}]},{"type":"text","value":", joka luo tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"korjatut_numerot.csv"}]},{"type":"text","value":". Tiedostoon on kopioitu kelvolliset rivit alkuperäisestä tiedostosta."}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten virheellisiä syötteitä voidaan käsitellä
    • \n
    • Tiedät, mitä tarkoitetaan poikkeuksella ohjelmoinnissa
    • \n
    • Tunnistat tyypillisiä poikkeuksia Pythonissa
    • \n
    • Osaat käsitellä poikkeuksia omissa ohjelmissa
    • \n

    Ohjelmointiin liittyvät virheet voidaan jakaa kahteen ryhmään:

      \n
    1. Syntaksivirheet, jotka estävät ohjelman suorittamisen kokonaan
    2. \n
    3. Suorituksen aikaiset virheet, jotka keskeyttävät ohjelman suorituksen
    4. \n

    Ryhmän 1 virheet on yleensä helppoa korjata, koska Python-tulkki huomauttaa niistä, kun ohjelmaa yritetään suorittaa. Tällaisia virheitä ovat esimerkiksi puuttuva kaksoispiste silmukan alussa tai puuttuva lainausmerkki merkkijonon lopussa.

    Ryhmän 2 virheet voivat olla hankalampia havaita, koska virhe voi tapahtua jossain vaiheessa ohjelman suorituksen aikana ja vain tietyissä tilanteissa. Ohjelma saattaa toimia yleensä hyvin mutta keskeytyä virheen takia jossain reunatapauksessa. Keskitymme seuraavaksi tällaisten virheiden käsittelyyn.

    Syötteiden tarkastaminen

    Usein virhetilanteet ohjelmien suorituksen aikana liittyvät jotenkin virheelliseen syötteeseen. Esimerkkejä virheellisistä syötteistä ovat

      \n
    • puuttuvat tai tyhjät arvot: esimerkiksi pituus nolla tai tyhjä merkkijono nimenä
    • \n
    • negatiiviset arvot: esimerkiksi –15 reseptin aineosan painona
    • \n
    • puuttuva tai väärän niminen tiedosto
    • \n
    • liian pienet tai liian suuret arvot
    • \n
    • väärä indeksi (esim. viittaaminen indeksiin 3 merkkijonossa \"moi\")
    • \n
    • väärän tyyppiset arvot, esimerkiksi merkkijono luvun sijasta
    • \n

    Useimpiin virheistä voidaan onneksi varautua ohjelmallisesti. Tarkastellaan esimerkkinä ohjelmaa, joka lukee käyttäjältä syötteenä tämän iän ja testaa, että se on sallituissa rajoissa (vähintään 0 ja korkeintaan 150):

    ika = int(input(\"Anna ikäsi: \"))\nif ika >= 0 and ika <= 150:\n    print(\"Ikä kelpaa\")\nelse:\n    print(\"Virheellinen ikä\")

    Anna ikäsi: 25\nIkä kelpaa

    Anna ikäsi: -3\nVirheellinen ikä

    Syötteen tarkastamisessa (eli validoinnissa) ilmenee kuitenkin puutteita, jos syötteeksi annetaan esimerkiksi merkkijono:

    Anna ikäsi: kakskytkolme\nValueError: invalid literal for int() with base 10: 'kakskytkolme'

    Virhe johtuu siitä, että funktio int ei pysty muuttamaan merkkijonoa kakskytkolme kokonaisluvuksi. Tämän seurauksena ohjelman suoritus keskeytyy yllä olevaan virheilmoitukseen.

    Poikkeukset

    Ohjelman suorituksen aikaisia virheitä kutsutaan poikkeuksiksi (exception). Ohjelman koodissa on mahdollista varautua poikkeuksiin ja käsitellä ne ilman, että ohjelman suoritus keskeytyy.

    Pythonissa poikkeukset käsitellään try- ja except-lauseilla. Ideana on, että mikäli try-lohkossa tapahtuu jokin poikkeus, Python tarkistaa, onko tälle poikkeukselle määritelty except-lohkoa. Mikäli on, suoritetaan tämä lohko ja suoritus jatkuu sen jälkeen normaalisti.

    Muutetaan edellä esitettyä esimerkkiä siten, että ohjelma varautuu poikkeukseen ValueError:

    try:\n    ika = int(input(\"Anna ikäsi: \"))\nexcept ValueError:\n    ika = -1\n\nif ika >= 0 and ika <= 150:\n    print(\"Ikä kelpaa\")\nelse:\n    print(\"Virheellinen ikä\")

    Anna ikäsi: kakskytkolme\nVirheellinen ikä

    Ohjelmassa voidaan siis try-lauseella ilmoittaa, että seuraavan lohkon sisällä tapahtuva toiminta voi aiheuttaa virheen. Välittömästi try-lohkoa seuraavassa except-lauseessa ilmoitetaan, mihin virheeseen varaudutaan. Edellisessä esimerkissä varauduttiin ainoastaan virheeseen ValueError - jokin muu virhe olisi edelleen katkaissut ohjelman suorituksen.

    Tässä tapauksessa virhetilanteessa muuttuja ika saa arvon -1, jolloin ohjelma tunnistaa oikein virheellisen iän, koska ehtona on, että ikä on vähintään 0.

    Seuraava funktio lue_kokonaisluku lukee käyttäjältä kokonaisluvun varautuen siihen, että käyttäjä antaa virheellisen syötteen. Funktio kysyy lukua uudestaan niin kauan, kunnes käyttäjä lopulta antaa kelvollisen luvun.

    def lue_kokonaisluku():\n    while True:\n        try:\n            syote = input(\"Syötä kokonaisluku: \")\n            return int(syote)\n        except ValueError:\n            print(\"Virheellinen syöte\")\n\nluku = lue_kokonaisluku()\nprint(\"Kiitos!\")\nprint(luku, \"potenssiin kolme on\", luku**3)

    Syötä kokonaisluku: kolme\nVirheellinen syöte\nSyötä kokonaisluku: aybabtu\nVirheellinen syöte\nSyötä kokonaisluku: 5\nKiitos!\n5 potenssiin kolme on 125

    Joissain tilanteissa saattaa olla tarvetta varautua poikkeukseen, mutta poikkeuksen tapahtuessa riittää \"ignoorata\" se, eli jättää koko asia huomiomatta except-lohkossa.

    Jos muuttaisimme edellistä esimerkkiä siten, että funktio hyväksyisi ainoastaan lukua 100 pienemmät kokonaisluvut, voisimme muuttaa toteutusta seuraavasti:

    def lue_pieni_kokonaisluku():\n    while True:\n        try:\n            syote = input(\"Syötä kokonaisluku: \")\n            luku = int(syote)\n            if luku < 100:\n                return luku\n        except ValueError:\n            pass # tämä komento ei tee mitään\n\n        print(\"Virheellinen syöte\")\n\nluku = lue_pieni_kokonaisluku()\nprint(luku, \"potenssiin kolme on\", luku**3)

    Syötä kokonaisluku: kolme\nVirheellinen syöte\nSyötä kokonaisluku: 1000\nVirheellinen syöte\nSyötä kokonaisluku: 5\nKiitos!\n5 potenssiin kolme on 125

    Nyt siis poikkeuksen käsittelevässä lohkossa on ainoastaan komento pass, joka ei tee mitään. Komento tarvitaan, sillä Python ei salli tyhjiä lohkoja.

    Tee funktio lue, joka kysyy käyttäjältä syötettä, kunnes se on parametrien määrittelemällä välillä oleva kokonaisluku. Funktio palauttaa käyttäjän antaman syötteen.

    Funktio toimii seuraavasti:

    luku = lue(\"syötä luku: \", 5, 10)\nprint(\"syötit luvun:\", luku)

    syötä luku: seitsemän\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: -3\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: 8\nsyötit luvun: 8

    Tyypillisiä virheitä

    Seuraavassa on listattu joitakin yleisiä virheitä ja syitä niiden ilmenemiselle:

    ValueError

    Tämä poikkeus voi johtua siitä, että funktion parametri on vääränlainen. Esimerkiksi kutsu float(\"1,23\") tuottaa tämän poikkeuksen, koska Pythonissa desimaalierottimen tulee olla piste eikä pilkku.

    TypeError

    Tämä poikkeus tapahtuu, kun arvo on väärän tyyppinen. Esimerkiksi kutsu len(10) saa aikaan tämän poikkeuksen, koska funktio len haluaa parametrin, jolle voidaan laskea pituus (kuten merkkijonon tai listan).

    IndexError

    Tämä poikkeus tapahtuu, jos yritetään viitata indeksiin, jota ei ole olemassa. Esimerkiksi \"abc\"[5] aiheuttaa tämän poikkeuksen, koska merkkijonossa ei ole indeksiä 5.

    ZeroDivisionError

    Tämä poikkeus tapahtuu, jos yritetään jakaa nollalla. Yksi esimerkki on tilanne, jossa yritetään laskea listan arvojen keskiarvo kaavalla sum(lista) / len(lista), mutta listan pituus on nolla.

    Tiedostojen poikkeukset

    Tiedostojen käsittelyssä voi tulla vastaan esimerkiksi poikkeukset FileNotFoundError (koetetaan lukea tiedostoa, jota ei ole olemassa), io.UnsupportedOperation (tiedosto on avattu tilassa, joka ei salli operaatiota) tai PermissionError (ohjelmalla ei ole oikeutta käsitellä tiedostoa).

    Useamman poikkeuksen käsittely

    Yhtä try-lohkoa kohti voi olla useampia except-lauseita. Esimerkiksi seuraavassa ohjelmassa varaudutaan sekä poikkeukseen FileNotFoundException että PermissionError:

    try:\n    with open(\"esimerkki.txt\") as tiedosto:\n        for rivi in tiedosto:\n            print(rivi)\nexcept FileNotFoundError:\n    print(\"Tiedostoa esimerkki.txt ei löytynyt\")\nexcept PermissionError:\n    print(\"Ei oikeutta avata tiedostoa esimerkki.txt\")

    Aina ei ole tarpeen eritellä tapahtuneita virheitä. Esimerkiksi juuri tiedostoa avatessa saattaa riittää, että tiedetään virheen tapahtuneen, muttei ole niin tärkeää tietää, miksi virhe tapahtui. Kaikki mahdolliset virheet voi käsitellä käyttämällä except-lausetta määrittelemättä poikkeuksen tyyppiä:

    \ntry:\n    with open(\"esimerkki.txt\") as tiedosto:\n        for rivi in tiedosto:\n            print(rivi)\nexcept:\n    print(\"Tapahtui virhe tiedoston lukemisessa\")\n

    Huomaa, että tällaisessa tapauksessa except-lause käsittelee kaikki mahdolliset virheet, myös ohjelmoijan tekemät virheet lukuun ottamatta syntaksivirheitä, jotka estävät ohjelman suorittamisen.

    Esimerkiksi seuraava ohjelma heittää aina poikkeuksen, koska muuttujan tiedosto nimi on kirjoitettu toisessa kohdassa väärin tiedotso.

    try:\n    with open(\"esimerkki.txt\") as tiedosto:\n        for rivi in tiedotso:\n            print(rivi)\nexcept:\n    print(\"Tapahtui virhe tiedoston lukemisessa.\")

    Tästä näkee, että except voi peittää varsinaisen virheen: tässä tapauksessa virheen syynä ei ole tiedoston käsittely vaan väärin kirjoitettu muuttuja.

    Poikkeusten välittyminen

    Jos funktion sisällä tapahtuu poikkeus, jota ei käsitellä, poikkeus välitetään funktion kutsujalle. Tätä jatketaan, kunnes ollaan pääohjelman tasolla. Jos poikkeusta ei tässäkään käsitellä sopivalla except-lauseella, ohjelman suoritus katkeaa ja poikkeus yleensä tulostetaan ruudulle.

    Esimerkiksi seuraavassa ohjelmassa funktiossa testi tapahtuva poikkeus käsitellään vasta pääohjelmassa:

    def testi(x):\n    print(int(x) + 1)\n\ntry:\n    luku = input(\"Anna luku: \")\n    testi(luku)\nexcept:\n    print(\"Jotain meni pieleen\")

    Anna luku: kolme\nJotain meni pieleen

    Poikkeusten tuottaminen

    Voimme myös tarvittaessa tuottaa poikkeuksen itse komennolla raise. Vaikka virheiden tuottaminen varta vasten voi aluksi tuntua oudolta ajatukselta, mekanismi on itse asiassa hyvinkin hyödyllinen.

    Esimerkiksi jos teemme funktion, jolle annetaan virheellinen parametri, voimme ilmaista tämän poikkeuksen avulla. Tämä voi olla parempi tapa kuin esimerkiksi palauttaa jokin virhearvo tai tulostaa viesti ruudulle, koska funktion käyttäjä ei välttämättä huomaisi asiaa.

    Seuraavassa esimerkissä funktio kertoma laskee parametrina annetun luvun kertoman (esimerkiksi luvun 5 kertoma on 1 * 2 * 3 * 4 * 5). Kuitenkin jos annettu luku on negatiivinen, funktio tuottaa poikkeuksen.

    def kertoma(n):\n    if n < 0:\n        raise ValueError(\"Negatiivinen syöte: \" + str(n))\n    k = 1\n    for i in range(2, n + 1):\n        k *= i\n    return k\n\nprint(kertoma(3))\nprint(kertoma(6))\nprint(kertoma(-1))
    6\n720\nTraceback (most recent call last):\nFile \"testi.py\", line 11, in \nprint(kertoma(-1))\nFile \"testi.py\", line 3, in kertoma\nraise ValueError(\"Negatiivinen syöte: \" + str(n))\nValueError: Negatiivinen syöte: -1

    Kirjoita funktio uusi_henkilo(nimi: str, ika: int), joka luo ja palauttaa uuden henkilö-tuplen. Tuplessa ensimmäinen alkio on nimi ja jälkimmäinen ikä.

    Jos funktion parametrit ovat virheelliset, sen tulee tuplen palauttamisen sijasta tuottaa ValueError-poikkeus.

    Virheellisiä parametreja tässä tapauksessa ovat:

      \n
    • nimi on tyhjä merkkijono
    • \n
    • nimi ei koostu vähintään kahdesta sanasta
    • \n
    • nimen pituus on yli 40 merkkiä
    • \n
    • ikä on negatiivinen luku
    • \n
    • ikä on suurempi kuin 150
    • \n

    Tiedostoon lottonumerot.csv on tallennettu lottonumeroita seuraavan esimerkin mukaisesti:

    viikko 1;5,7,11,13,23,24,30\nviikko 2;9,13,14,24,34,35,37\n...jne...

    Aluksi pitäisi olla siis otsikko viikko x, ja sen jälkeen seitsemän numeroa väliltä 1...39.

    Tiedosto on kuitenkin osittain korruptoitunut. Seuraavat rivit ovat esimerkkejä virheellisistä riveistä (huomaa, että tehtäväpohjassa olevassa tiedostossa ei ole juuri näitä virheitä):

    Viikkonumero pielessä:

    viikko zzc;1,5,13,22,24,25,26

    Numero tai numeroita pielessä:

    viikko 22;1,**,5,6,13,2b,34

    Liian vähän numeroita:

    viikko 13;4,6,17,19,24,33

    Liian pieniä tai suuria numeroita:

    viikko 39;5,9,15,35,39,41,105

    Rivissä esiintyy sama numero kahdesti:

    viikko 41;5,12,3,35,12,14,36

    Kirjoita funktio suodata_virheelliset(), joka luo tiedoston korjatut_numerot.csv. Tiedostoon on kopioitu kelvolliset rivit alkuperäisestä tiedostosta.

    ","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/3-virheet.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten virheellisiä syötteitä voidaan käsitellä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan poikkeuksella ohjelmoinnissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnistat tyypillisiä poikkeuksia Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käsitellä poikkeuksia omissa ohjelmissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmointiin liittyvät virheet voidaan jakaa kahteen ryhmään:"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Syntaksivirheet, jotka estävät ohjelman suorittamisen kokonaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Suorituksen aikaiset virheet, jotka keskeyttävät ohjelman suorituksen"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ryhmän 1 virheet on yleensä helppoa korjata, koska Python-tulkki huomauttaa niistä, kun ohjelmaa yritetään suorittaa. Tällaisia virheitä ovat esimerkiksi puuttuva kaksoispiste silmukan alussa tai puuttuva lainausmerkki merkkijonon lopussa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ryhmän 2 virheet voivat olla hankalampia havaita, koska virhe voi tapahtua jossain vaiheessa ohjelman suorituksen aikana ja vain tietyissä tilanteissa. Ohjelma saattaa toimia yleensä hyvin mutta keskeytyä virheen takia jossain reunatapauksessa. Keskitymme seuraavaksi tällaisten virheiden käsittelyyn."}]},{"type":"element","tagName":"h2","properties":{"id":"syotteiden-tarkastaminen","style":"position:relative;"},"children":[{"type":"text","value":"Syötteiden tarkastaminen"},{"type":"element","tagName":"a","properties":{"href":"#syotteiden-tarkastaminen","ariaLabel":"syotteiden tarkastaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Usein virhetilanteet ohjelmien suorituksen aikana liittyvät jotenkin virheelliseen syötteeseen. Esimerkkejä virheellisistä syötteistä ovat"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"puuttuvat tai tyhjät arvot: esimerkiksi pituus nolla tai tyhjä merkkijono nimenä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"negatiiviset arvot: esimerkiksi –15 reseptin aineosan painona"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"puuttuva tai väärän niminen tiedosto"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"liian pienet tai liian suuret arvot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"väärä indeksi (esim. viittaaminen indeksiin 3 merkkijonossa \"moi\")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"väärän tyyppiset arvot, esimerkiksi merkkijono luvun sijasta"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Useimpiin virheistä voidaan onneksi varautua ohjelmallisesti. Tarkastellaan esimerkkinä ohjelmaa, joka lukee käyttäjältä syötteenä tämän iän ja testaa, että se on sallituissa rajoissa (vähintään 0 ja korkeintaan 150):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna ikäsi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"150"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ikä kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"25"}]},{"type":"text","value":"\nIkä kelpaa"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nVirheellinen ikä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötteen tarkastamisessa (eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"validoinnissa"}]},{"type":"text","value":") ilmenee kuitenkin puutteita, jos syötteeksi annetaan esimerkiksi merkkijono:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kakskytkolme"}]},{"type":"text","value":"\nValueError: invalid literal for int() with base 10: 'kakskytkolme'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virhe johtuu siitä, että funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" ei pysty muuttamaan merkkijonoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kakskytkolme"}]},{"type":"text","value":" kokonaisluvuksi. Tämän seurauksena ohjelman suoritus keskeytyy yllä olevaan virheilmoitukseen."}]},{"type":"element","tagName":"h2","properties":{"id":"poikkeukset","style":"position:relative;"},"children":[{"type":"text","value":"Poikkeukset"},{"type":"element","tagName":"a","properties":{"href":"#poikkeukset","ariaLabel":"poikkeukset permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman suorituksen aikaisia virheitä kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"poikkeuksiksi"}]},{"type":"text","value":" (exception). Ohjelman koodissa on mahdollista varautua poikkeuksiin ja käsitellä ne ilman, että ohjelman suoritus keskeytyy."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa poikkeukset käsitellään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"- ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseilla. Ideana on, että mikäli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lohkossa tapahtuu jokin poikkeus, Python tarkistaa, onko tälle poikkeukselle määritelty "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lohkoa. Mikäli on, suoritetaan tämä lohko ja suoritus jatkuu sen jälkeen normaalisti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muutetaan edellä esitettyä esimerkkiä siten, että ohjelma varautuu poikkeukseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna ikäsi: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" ika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"150"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ikä kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen ikä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna ikäsi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kakskytkolme"}]},{"type":"text","value":"\nVirheellinen ikä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa voidaan siis "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lauseella ilmoittaa, että seuraavan lohkon sisällä tapahtuva toiminta voi aiheuttaa virheen. Välittömästi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lohkoa seuraavassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseessa ilmoitetaan, mihin virheeseen varaudutaan. Edellisessä esimerkissä varauduttiin ainoastaan virheeseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":" - jokin muu virhe olisi edelleen katkaissut ohjelman suorituksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa virhetilanteessa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ika"}]},{"type":"text","value":" saa arvon -1, jolloin ohjelma tunnistaa oikein virheellisen iän, koska ehtona on, että ikä on vähintään 0."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_kokonaisluku"}]},{"type":"text","value":" lukee käyttäjältä kokonaisluvun varautuen siihen, että käyttäjä antaa virheellisen syötteen. Funktio kysyy lukua uudestaan niin kauan, kunnes käyttäjä lopulta antaa kelvollisen luvun."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kokonaisluku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syötä kokonaisluku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen syöte\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kokonaisluku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kiitos!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"potenssiin kolme on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kolme"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"aybabtu"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nKiitos!\n5 potenssiin kolme on 125"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joissain tilanteissa saattaa olla tarvetta varautua poikkeukseen, mutta poikkeuksen tapahtuessa riittää \"ignoorata\" se, eli jättää koko asia huomiomatta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lohkossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos muuttaisimme edellistä esimerkkiä siten, että funktio hyväksyisi ainoastaan lukua 100 pienemmät kokonaisluvut, voisimme muuttaa toteutusta seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_pieni_kokonaisluku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Syötä kokonaisluku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luku\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä komento ei tee mitään"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virheellinen syöte\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_pieni_kokonaisluku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"potenssiin kolme on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Syötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kolme"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1000"}]},{"type":"text","value":"\nVirheellinen syöte\nSyötä kokonaisluku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nKiitos!\n5 potenssiin kolme on 125"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis poikkeuksen käsittelevässä lohkossa on ainoastaan komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":", joka ei tee mitään. Komento tarvitaan, sillä Python ei salli tyhjiä lohkoja."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Syötteen luku","tmcname":"osa06-17_syotteen_luku"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue"}]},{"type":"text","value":", joka kysyy käyttäjältä syötettä, kunnes se on parametrien määrittelemällä välillä oleva kokonaisluku. Funktio palauttaa käyttäjän antaman syötteen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"syötä luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"syötit luvun:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"syötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"seitsemän"}]},{"type":"text","value":"\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-3"}]},{"type":"text","value":"\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"8"}]},{"type":"text","value":"\nsyötit luvun: 8"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tyypillisia-virheita","style":"position:relative;"},"children":[{"type":"text","value":"Tyypillisiä virheitä"},{"type":"element","tagName":"a","properties":{"href":"#tyypillisia-virheita","ariaLabel":"tyypillisia virheita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on listattu joitakin yleisiä virheitä ja syitä niiden ilmenemiselle:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ValueError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus voi johtua siitä, että funktion parametri on vääränlainen. Esimerkiksi kutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"float(\"1,23\")"}]},{"type":"text","value":" tuottaa tämän poikkeuksen, koska Pythonissa desimaalierottimen tulee olla piste eikä pilkku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"TypeError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus tapahtuu, kun arvo on väärän tyyppinen. Esimerkiksi kutsu "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len(10)"}]},{"type":"text","value":" saa aikaan tämän poikkeuksen, koska funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" haluaa parametrin, jolle voidaan laskea pituus (kuten merkkijonon tai listan)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"IndexError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus tapahtuu, jos yritetään viitata indeksiin, jota ei ole olemassa. Esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"abc\"[5]"}]},{"type":"text","value":" aiheuttaa tämän poikkeuksen, koska merkkijonossa ei ole indeksiä 5."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"ZeroDivisionError"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä poikkeus tapahtuu, jos yritetään jakaa nollalla. Yksi esimerkki on tilanne, jossa yritetään laskea listan arvojen keskiarvo kaavalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum(lista) / len(lista)"}]},{"type":"text","value":", mutta listan pituus on nolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Tiedostojen poikkeukset"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostojen käsittelyssä voi tulla vastaan esimerkiksi poikkeukset "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"FileNotFoundError"}]},{"type":"text","value":" (koetetaan lukea tiedostoa, jota ei ole olemassa), "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"io.UnsupportedOperation"}]},{"type":"text","value":" (tiedosto on avattu tilassa, joka ei salli operaatiota) tai "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"PermissionError"}]},{"type":"text","value":" (ohjelmalla ei ole oikeutta käsitellä tiedostoa)."}]},{"type":"element","tagName":"h2","properties":{"id":"useamman-poikkeuksen-kasittely","style":"position:relative;"},"children":[{"type":"text","value":"Useamman poikkeuksen käsittely"},{"type":"element","tagName":"a","properties":{"href":"#useamman-poikkeuksen-kasittely","ariaLabel":"useamman poikkeuksen kasittely permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhtä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"try"}]},{"type":"text","value":"-lohkoa kohti voi olla useampia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseita. Esimerkiksi seuraavassa ohjelmassa varaudutaan sekä poikkeukseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"FileNotFoundException"}]},{"type":"text","value":" että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PermissionError"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" FileNotFoundError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiedostoa esimerkki.txt ei löytynyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" PermissionError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei oikeutta avata tiedostoa esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aina ei ole tarpeen eritellä tapahtuneita virheitä. Esimerkiksi juuri tiedostoa avatessa saattaa riittää, että tiedetään virheen tapahtuneen, muttei ole niin tärkeää tietää, miksi virhe tapahtui. Kaikki mahdolliset virheet voi käsitellä käyttämällä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lausetta määrittelemättä poikkeuksen tyyppiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tapahtui virhe tiedoston lukemisessa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että tällaisessa tapauksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lause käsittelee kaikki mahdolliset virheet, myös ohjelmoijan tekemät virheet lukuun ottamatta syntaksivirheitä, jotka estävät ohjelman suorittamisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava ohjelma heittää aina poikkeuksen, koska muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tiedosto"}]},{"type":"text","value":" nimi on kirjoitettu toisessa kohdassa väärin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tiedotso"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"esimerkki.txt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tiedotso"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tapahtui virhe tiedoston lukemisessa.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tästä näkee, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":" voi peittää varsinaisen virheen: tässä tapauksessa virheen syynä ei ole tiedoston käsittely vaan väärin kirjoitettu muuttuja."}]},{"type":"element","tagName":"h2","properties":{"id":"poikkeusten-valittyminen","style":"position:relative;"},"children":[{"type":"text","value":"Poikkeusten välittyminen"},{"type":"element","tagName":"a","properties":{"href":"#poikkeusten-valittyminen","ariaLabel":"poikkeusten valittyminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion sisällä tapahtuu poikkeus, jota ei käsitellä, poikkeus välitetään funktion kutsujalle. Tätä jatketaan, kunnes ollaan pääohjelman tasolla. Jos poikkeusta ei tässäkään käsitellä sopivalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"except"}]},{"type":"text","value":"-lauseella, ohjelman suoritus katkeaa ja poikkeus yleensä tulostetaan ruudulle."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa ohjelmassa funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" tapahtuva poikkeus käsitellään vasta pääohjelmassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n testi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jotain meni pieleen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kolme"}]},{"type":"text","value":"\nJotain meni pieleen"}]}]},{"type":"element","tagName":"h2","properties":{"id":"poikkeusten-tuottaminen","style":"position:relative;"},"children":[{"type":"text","value":"Poikkeusten tuottaminen"},{"type":"element","tagName":"a","properties":{"href":"#poikkeusten-tuottaminen","ariaLabel":"poikkeusten tuottaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös tarvittaessa tuottaa poikkeuksen itse komennolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":". Vaikka virheiden tuottaminen varta vasten voi aluksi tuntua oudolta ajatukselta, mekanismi on itse asiassa hyvinkin hyödyllinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi jos teemme funktion, jolle annetaan virheellinen parametri, voimme ilmaista tämän poikkeuksen avulla. Tämä voi olla parempi tapa kuin esimerkiksi palauttaa jokin virhearvo tai tulostaa viesti ruudulle, koska funktion käyttäjä ei välttämättä huomaisi asiaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa esimerkissä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"text","value":" laskee parametrina annetun luvun kertoman (esimerkiksi luvun 5 kertoma on 1 * 2 * 3 * 4 * 5). Kuitenkin jos annettu luku on negatiivinen, funktio tuottaa poikkeuksen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kertoma"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Negatiivinen syöte: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" n "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n k "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*="}]},{"type":"text","value":" i\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" k\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kertoma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"6\n720\nTraceback (most recent call last):\nFile \"testi.py\", line 11, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nprint(kertoma(-1))\nFile \"testi.py\", line 3, in kertoma\nraise ValueError(\"Negatiivinen syöte: \" + str(n))\nValueError: Negatiivinen syöte: -1"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Parametrien validointi ","tmcname":"osa06-18_parametrien_validointi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_henkilo(nimi: str, ika: int)"}]},{"type":"text","value":", joka luo ja palauttaa uuden henkilö-tuplen. Tuplessa ensimmäinen alkio on nimi ja jälkimmäinen ikä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktion parametrit ovat virheelliset, sen tulee tuplen palauttamisen sijasta tuottaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"-poikkeus."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Virheellisiä parametreja tässä tapauksessa ovat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi on tyhjä merkkijono"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi ei koostu vähintään kahdesta sanasta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimen pituus on yli 40 merkkiä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ikä on negatiivinen luku"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"ikä on suurempi kuin 150"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Virheelliset lottonumerot","tmcname":"osa06-19_virheelliset_lottonumerot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lottonumerot.csv"}]},{"type":"text","value":" on tallennettu lottonumeroita seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 1;5,7,11,13,23,24,30\nviikko 2;9,13,14,24,34,35,37\n...jne..."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aluksi pitäisi olla siis otsikko "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viikko x"}]},{"type":"text","value":", ja sen jälkeen seitsemän numeroa väliltä 1...39."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto on kuitenkin osittain korruptoitunut. Seuraavat rivit ovat esimerkkejä virheellisistä riveistä (huomaa, että tehtäväpohjassa olevassa tiedostossa ei ole juuri näitä virheitä):"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viikkonumero pielessä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko zzc;1,5,13,22,24,25,26"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Numero tai numeroita pielessä:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 22;1,**,5,6,13,2b,34"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Liian vähän numeroita:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 13;4,6,17,19,24,33"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Liian pieniä tai suuria numeroita:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 39;5,9,15,35,39,41,105"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rivissä esiintyy sama numero kahdesti:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"viikko 41;5,12,3,35,12,14,36"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suodata_virheelliset()"}]},{"type":"text","value":", joka luo tiedoston "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"korjatut_numerot.csv"}]},{"type":"text","value":". Tiedostoon on kopioitu kelvolliset rivit alkuperäisestä tiedostosta."}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten virheellisiä syötteitä voidaan käsitellä
    • \n
    • Tiedät, mitä tarkoitetaan poikkeuksella ohjelmoinnissa
    • \n
    • Tunnistat tyypillisiä poikkeuksia Pythonissa
    • \n
    • Osaat käsitellä poikkeuksia omissa ohjelmissa
    • \n

    Ohjelmointiin liittyvät virheet voidaan jakaa kahteen ryhmään:

      \n
    1. Syntaksivirheet, jotka estävät ohjelman suorittamisen kokonaan
    2. \n
    3. Suorituksen aikaiset virheet, jotka keskeyttävät ohjelman suorituksen
    4. \n

    Ryhmän 1 virheet on yleensä helppoa korjata, koska Python-tulkki huomauttaa niistä, kun ohjelmaa yritetään suorittaa. Tällaisia virheitä ovat esimerkiksi puuttuva kaksoispiste silmukan alussa tai puuttuva lainausmerkki merkkijonon lopussa.

    Ryhmän 2 virheet voivat olla hankalampia havaita, koska virhe voi tapahtua jossain vaiheessa ohjelman suorituksen aikana ja vain tietyissä tilanteissa. Ohjelma saattaa toimia yleensä hyvin mutta keskeytyä virheen takia jossain reunatapauksessa. Keskitymme seuraavaksi tällaisten virheiden käsittelyyn.

    Syötteiden tarkastaminen

    Usein virhetilanteet ohjelmien suorituksen aikana liittyvät jotenkin virheelliseen syötteeseen. Esimerkkejä virheellisistä syötteistä ovat

      \n
    • puuttuvat tai tyhjät arvot: esimerkiksi pituus nolla tai tyhjä merkkijono nimenä
    • \n
    • negatiiviset arvot: esimerkiksi –15 reseptin aineosan painona
    • \n
    • puuttuva tai väärän niminen tiedosto
    • \n
    • liian pienet tai liian suuret arvot
    • \n
    • väärä indeksi (esim. viittaaminen indeksiin 3 merkkijonossa \"moi\")
    • \n
    • väärän tyyppiset arvot, esimerkiksi merkkijono luvun sijasta
    • \n

    Useimpiin virheistä voidaan onneksi varautua ohjelmallisesti. Tarkastellaan esimerkkinä ohjelmaa, joka lukee käyttäjältä syötteenä tämän iän ja testaa, että se on sallituissa rajoissa (vähintään 0 ja korkeintaan 150):

    ika = int(input(\"Anna ikäsi: \"))\nif ika >= 0 and ika <= 150:\n    print(\"Ikä kelpaa\")\nelse:\n    print(\"Virheellinen ikä\")

    Anna ikäsi: 25\nIkä kelpaa

    Anna ikäsi: -3\nVirheellinen ikä

    Syötteen tarkastamisessa (eli validoinnissa) ilmenee kuitenkin puutteita, jos syötteeksi annetaan esimerkiksi merkkijono:

    Anna ikäsi: kakskytkolme\nValueError: invalid literal for int() with base 10: 'kakskytkolme'

    Virhe johtuu siitä, että funktio int ei pysty muuttamaan merkkijonoa kakskytkolme kokonaisluvuksi. Tämän seurauksena ohjelman suoritus keskeytyy yllä olevaan virheilmoitukseen.

    Poikkeukset

    Ohjelman suorituksen aikaisia virheitä kutsutaan poikkeuksiksi (exception). Ohjelman koodissa on mahdollista varautua poikkeuksiin ja käsitellä ne ilman, että ohjelman suoritus keskeytyy.

    Pythonissa poikkeukset käsitellään try- ja except-lauseilla. Ideana on, että mikäli try-lohkossa tapahtuu jokin poikkeus, Python tarkistaa, onko tälle poikkeukselle määritelty except-lohkoa. Mikäli on, suoritetaan tämä lohko ja suoritus jatkuu sen jälkeen normaalisti.

    Muutetaan edellä esitettyä esimerkkiä siten, että ohjelma varautuu poikkeukseen ValueError:

    try:\n    ika = int(input(\"Anna ikäsi: \"))\nexcept ValueError:\n    ika = -1\n\nif ika >= 0 and ika <= 150:\n    print(\"Ikä kelpaa\")\nelse:\n    print(\"Virheellinen ikä\")

    Anna ikäsi: kakskytkolme\nVirheellinen ikä

    Ohjelmassa voidaan siis try-lauseella ilmoittaa, että seuraavan lohkon sisällä tapahtuva toiminta voi aiheuttaa virheen. Välittömästi try-lohkoa seuraavassa except-lauseessa ilmoitetaan, mihin virheeseen varaudutaan. Edellisessä esimerkissä varauduttiin ainoastaan virheeseen ValueError - jokin muu virhe olisi edelleen katkaissut ohjelman suorituksen.

    Tässä tapauksessa virhetilanteessa muuttuja ika saa arvon -1, jolloin ohjelma tunnistaa oikein virheellisen iän, koska ehtona on, että ikä on vähintään 0.

    Seuraava funktio lue_kokonaisluku lukee käyttäjältä kokonaisluvun varautuen siihen, että käyttäjä antaa virheellisen syötteen. Funktio kysyy lukua uudestaan niin kauan, kunnes käyttäjä lopulta antaa kelvollisen luvun.

    def lue_kokonaisluku():\n    while True:\n        try:\n            syote = input(\"Syötä kokonaisluku: \")\n            return int(syote)\n        except ValueError:\n            print(\"Virheellinen syöte\")\n\nluku = lue_kokonaisluku()\nprint(\"Kiitos!\")\nprint(luku, \"potenssiin kolme on\", luku**3)

    Syötä kokonaisluku: kolme\nVirheellinen syöte\nSyötä kokonaisluku: aybabtu\nVirheellinen syöte\nSyötä kokonaisluku: 5\nKiitos!\n5 potenssiin kolme on 125

    Joissain tilanteissa saattaa olla tarvetta varautua poikkeukseen, mutta poikkeuksen tapahtuessa riittää \"ignoorata\" se, eli jättää koko asia huomiomatta except-lohkossa.

    Jos muuttaisimme edellistä esimerkkiä siten, että funktio hyväksyisi ainoastaan lukua 100 pienemmät kokonaisluvut, voisimme muuttaa toteutusta seuraavasti:

    def lue_pieni_kokonaisluku():\n    while True:\n        try:\n            syote = input(\"Syötä kokonaisluku: \")\n            luku = int(syote)\n            if luku < 100:\n                return luku\n        except ValueError:\n            pass # tämä komento ei tee mitään\n\n        print(\"Virheellinen syöte\")\n\nluku = lue_pieni_kokonaisluku()\nprint(luku, \"potenssiin kolme on\", luku**3)

    Syötä kokonaisluku: kolme\nVirheellinen syöte\nSyötä kokonaisluku: 1000\nVirheellinen syöte\nSyötä kokonaisluku: 5\nKiitos!\n5 potenssiin kolme on 125

    Nyt siis poikkeuksen käsittelevässä lohkossa on ainoastaan komento pass, joka ei tee mitään. Komento tarvitaan, sillä Python ei salli tyhjiä lohkoja.

    Tee funktio lue, joka kysyy käyttäjältä syötettä, kunnes se on parametrien määrittelemällä välillä oleva kokonaisluku. Funktio palauttaa käyttäjän antaman syötteen.

    Funktio toimii seuraavasti:

    luku = lue(\"syötä luku: \", 5, 10)\nprint(\"syötit luvun:\", luku)

    syötä luku: seitsemän\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: -3\nSyötteen on oltava kokonaisluku väliltä 5...10\nsyötä luku: 8\nsyötit luvun: 8

    Tyypillisiä virheitä

    Seuraavassa on listattu joitakin yleisiä virheitä ja syitä niiden ilmenemiselle:

    ValueError

    Tämä poikkeus voi johtua siitä, että funktion parametri on vääränlainen. Esimerkiksi kutsu float(\"1,23\") tuottaa tämän poikkeuksen, koska Pythonissa desimaalierottimen tulee olla piste eikä pilkku.

    TypeError

    Tämä poikkeus tapahtuu, kun arvo on väärän tyyppinen. Esimerkiksi kutsu len(10) saa aikaan tämän poikkeuksen, koska funktio len haluaa parametrin, jolle voidaan laskea pituus (kuten merkkijonon tai listan).

    IndexError

    Tämä poikkeus tapahtuu, jos yritetään viitata indeksiin, jota ei ole olemassa. Esimerkiksi \"abc\"[5] aiheuttaa tämän poikkeuksen, koska merkkijonossa ei ole indeksiä 5.

    ZeroDivisionError

    Tämä poikkeus tapahtuu, jos yritetään jakaa nollalla. Yksi esimerkki on tilanne, jossa yritetään laskea listan arvojen keskiarvo kaavalla sum(lista) / len(lista), mutta listan pituus on nolla.

    Tiedostojen poikkeukset

    Tiedostojen käsittelyssä voi tulla vastaan esimerkiksi poikkeukset FileNotFoundError (koetetaan lukea tiedostoa, jota ei ole olemassa), io.UnsupportedOperation (tiedosto on avattu tilassa, joka ei salli operaatiota) tai PermissionError (ohjelmalla ei ole oikeutta käsitellä tiedostoa).

    Useamman poikkeuksen käsittely

    Yhtä try-lohkoa kohti voi olla useampia except-lauseita. Esimerkiksi seuraavassa ohjelmassa varaudutaan sekä poikkeukseen FileNotFoundException että PermissionError:

    try:\n    with open(\"esimerkki.txt\") as tiedosto:\n        for rivi in tiedosto:\n            print(rivi)\nexcept FileNotFoundError:\n    print(\"Tiedostoa esimerkki.txt ei löytynyt\")\nexcept PermissionError:\n    print(\"Ei oikeutta avata tiedostoa esimerkki.txt\")

    Aina ei ole tarpeen eritellä tapahtuneita virheitä. Esimerkiksi juuri tiedostoa avatessa saattaa riittää, että tiedetään virheen tapahtuneen, muttei ole niin tärkeää tietää, miksi virhe tapahtui. Kaikki mahdolliset virheet voi käsitellä käyttämällä except-lausetta määrittelemättä poikkeuksen tyyppiä:

    \ntry:\n    with open(\"esimerkki.txt\") as tiedosto:\n        for rivi in tiedosto:\n            print(rivi)\nexcept:\n    print(\"Tapahtui virhe tiedoston lukemisessa\")\n

    Huomaa, että tällaisessa tapauksessa except-lause käsittelee kaikki mahdolliset virheet, myös ohjelmoijan tekemät virheet lukuun ottamatta syntaksivirheitä, jotka estävät ohjelman suorittamisen.

    Esimerkiksi seuraava ohjelma heittää aina poikkeuksen, koska muuttujan tiedosto nimi on kirjoitettu toisessa kohdassa väärin tiedotso.

    try:\n    with open(\"esimerkki.txt\") as tiedosto:\n        for rivi in tiedotso:\n            print(rivi)\nexcept:\n    print(\"Tapahtui virhe tiedoston lukemisessa.\")

    Tästä näkee, että except voi peittää varsinaisen virheen: tässä tapauksessa virheen syynä ei ole tiedoston käsittely vaan väärin kirjoitettu muuttuja.

    Poikkeusten välittyminen

    Jos funktion sisällä tapahtuu poikkeus, jota ei käsitellä, poikkeus välitetään funktion kutsujalle. Tätä jatketaan, kunnes ollaan pääohjelman tasolla. Jos poikkeusta ei tässäkään käsitellä sopivalla except-lauseella, ohjelman suoritus katkeaa ja poikkeus yleensä tulostetaan ruudulle.

    Esimerkiksi seuraavassa ohjelmassa funktiossa testi tapahtuva poikkeus käsitellään vasta pääohjelmassa:

    def testi(x):\n    print(int(x) + 1)\n\ntry:\n    luku = input(\"Anna luku: \")\n    testi(luku)\nexcept:\n    print(\"Jotain meni pieleen\")

    Anna luku: kolme\nJotain meni pieleen

    Poikkeusten tuottaminen

    Voimme myös tarvittaessa tuottaa poikkeuksen itse komennolla raise. Vaikka virheiden tuottaminen varta vasten voi aluksi tuntua oudolta ajatukselta, mekanismi on itse asiassa hyvinkin hyödyllinen.

    Esimerkiksi jos teemme funktion, jolle annetaan virheellinen parametri, voimme ilmaista tämän poikkeuksen avulla. Tämä voi olla parempi tapa kuin esimerkiksi palauttaa jokin virhearvo tai tulostaa viesti ruudulle, koska funktion käyttäjä ei välttämättä huomaisi asiaa.

    Seuraavassa esimerkissä funktio kertoma laskee parametrina annetun luvun kertoman (esimerkiksi luvun 5 kertoma on 1 * 2 * 3 * 4 * 5). Kuitenkin jos annettu luku on negatiivinen, funktio tuottaa poikkeuksen.

    def kertoma(n):\n    if n < 0:\n        raise ValueError(\"Negatiivinen syöte: \" + str(n))\n    k = 1\n    for i in range(2, n + 1):\n        k *= i\n    return k\n\nprint(kertoma(3))\nprint(kertoma(6))\nprint(kertoma(-1))
    6\n720\nTraceback (most recent call last):\nFile \"testi.py\", line 11, in \nprint(kertoma(-1))\nFile \"testi.py\", line 3, in kertoma\nraise ValueError(\"Negatiivinen syöte: \" + str(n))\nValueError: Negatiivinen syöte: -1

    Kirjoita funktio uusi_henkilo(nimi: str, ika: int), joka luo ja palauttaa uuden henkilö-tuplen. Tuplessa ensimmäinen alkio on nimi ja jälkimmäinen ikä.

    Jos funktion parametrit ovat virheelliset, sen tulee tuplen palauttamisen sijasta tuottaa ValueError-poikkeus.

    Virheellisiä parametreja tässä tapauksessa ovat:

      \n
    • nimi on tyhjä merkkijono
    • \n
    • nimi ei koostu vähintään kahdesta sanasta
    • \n
    • nimen pituus on yli 40 merkkiä
    • \n
    • ikä on negatiivinen luku
    • \n
    • ikä on suurempi kuin 150
    • \n

    Tiedostoon lottonumerot.csv on tallennettu lottonumeroita seuraavan esimerkin mukaisesti:

    viikko 1;5,7,11,13,23,24,30\nviikko 2;9,13,14,24,34,35,37\n...jne...

    Aluksi pitäisi olla siis otsikko viikko x, ja sen jälkeen seitsemän numeroa väliltä 1...39.

    Tiedosto on kuitenkin osittain korruptoitunut. Seuraavat rivit ovat esimerkkejä virheellisistä riveistä (huomaa, että tehtäväpohjassa olevassa tiedostossa ei ole juuri näitä virheitä):

    Viikkonumero pielessä:

    viikko zzc;1,5,13,22,24,25,26

    Numero tai numeroita pielessä:

    viikko 22;1,**,5,6,13,2b,34

    Liian vähän numeroita:

    viikko 13;4,6,17,19,24,33

    Liian pieniä tai suuria numeroita:

    viikko 39;5,9,15,35,39,41,105

    Rivissä esiintyy sama numero kahdesti:

    viikko 41;5,12,3,35,12,14,36

    Kirjoita funktio suodata_virheelliset(), joka luo tiedoston korjatut_numerot.csv. Tiedostoon on kopioitu kelvolliset rivit alkuperäisestä tiedostosta.

    ","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/3-virheet.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-6/4-paikalliset-muuttujat/page-data.json b/page-data/osa-6/4-paikalliset-muuttujat/page-data.json index dc8f18696..3bbc82ce6 100644 --- a/page-data/osa-6/4-paikalliset-muuttujat/page-data.json +++ b/page-data/osa-6/4-paikalliset-muuttujat/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-6/4-paikalliset-muuttujat", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan paikallisella muuttujalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten muuttujan näkyvyysalue vaikuttaa sen käyttöön"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä Pythonissa tekee avainsana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"global"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää paikallisia ja globaaleja muuttujia oikein"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"näkyvyysalue"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"scope"}]},{"type":"text","value":") tarkoittaa, missä ohjelman osissa muuttujaa voi käyttää. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Paikallinen"}]},{"type":"text","value":" muuttuja on muuttuja, joka on näkyvissä vain tietyn rajatun alueen sisällä ohjelmassa. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Globaali"}]},{"type":"text","value":" muuttuja on puolestaan käytettävissä missä tahansa ohjelman osassa."}]},{"type":"element","tagName":"h2","properties":{"id":"paikalliset-muuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Paikalliset muuttujat"},{"type":"element","tagName":"a","properties":{"href":"#paikalliset-muuttujat","ariaLabel":"paikalliset muuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa funktion sisällä määritellyt muuttujat ovat funktion paikallisia muuttujia. Tämä koskee sekä parametreja että funktion lohkon sisällä esiteltyjä muuttujia. Paikallisuus tarkoittaa, että muuttuja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole olemassa funktion ulkopuolella"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa ohjelmassa yritys viitata muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" pääohjelmassa antaa virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\nNameError: name 'x' is not defined"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" on siis olemassa vain funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" suorituksen ajan eikä siihen pääse käsiksi muista funktioista tai pääohjelmasta."}]},{"type":"element","tagName":"h2","properties":{"id":"globaalit-muuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Globaalit muuttujat"},{"type":"element","tagName":"a","properties":{"href":"#globaalit-muuttujat","ariaLabel":"globaalit muuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääohjelmassa eli kaikkien funktioiden ulkopuolella määritellyt muuttujat ovat globaaleja muuttujia. Globaalin muuttujan arvo voidaan lukea funktiossa. Esimerkiksi seuraava toimii:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkaan globaalia muuttujaa ei voi muuttaa suoraan. Esimerkiksi seuraava funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei vaikuta"}]},{"type":"text","value":" globaaliin muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" luo paikallisen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":", joka saa arvon 5. Tämä on kuitenkin eri muuttuja kuin pääohjelmassa oleva muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Entä miten toimii seuraava koodi?"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"UnboundLocalError: local variable 'x' referenced before assignment"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" annetaan arvo muuttujalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":", jolloin Python päättelee, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" on funktion paikallinen muuttuja (eikä globaali muuttuja). Koska muuttujaan yritetään viitata ennen arvon asettamista, tapahtuu virhe."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kuitenkin haluamme muuttaa funktiossa globaalia muuttujaa, tämä onnistuu avainsanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" x\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt funktiossa tehty muutos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x = 3"}]},{"type":"text","value":" vaikuttaa myös pääohjelmaan, eli kaikissa ohjelman kohdissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" viittaa samaan muuttujaan."}]},{"type":"element","tagName":"h2","properties":{"id":"milloin-kayttaa-globaalia-muuttujaa","style":"position:relative;"},"children":[{"type":"text","value":"Milloin käyttää globaalia muuttujaa?"},{"type":"element","tagName":"a","properties":{"href":"#milloin-kayttaa-globaalia-muuttujaa","ariaLabel":"milloin kayttaa globaalia muuttujaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globaalien muuttujien tarkoituksena ei ole korvata funktion parametreja tai paluuarvoa. Esimerkiksi on sinänsä mahdollista tehdä seuraava funktio, joka tallentaa laskun tuloksen globaaliin muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" tulos\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\nlaske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi tapa on kuitenkin toteuttaa funktio kuten ennenkin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jälkimmäisen tavan etuna on, että funktio on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"itsenäinen"}]},{"type":"text","value":" kokonaisuus, jolle annetaan tietyt parametrit ja joka palauttaa tietyn tuloksen. Funktiolla ei ole sivuvaikutuksia, minkä ansiosta sitä voi testata muusta koodista riippumattomasti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkin globaali muuttuja voi olla hyödyllinen, jos halutaan pitää yllä jotain funktioille yhteistä \"ylemmän tason\" tietoa. Tässä on yksi esimerkki asiasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" laskuri\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_erotus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" laskuri\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" b\n\n\nlaskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_erotus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Funktioita kutsuttiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kertaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n5\n10\n3\n1\nFunktioita kutsuttiin 4 kertaakertaa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä haluamme pitää ohjelman suorituksen aikana kirjaa siitä, montako kertaa funktioita on kutsuttu ohjelman eri kohdista. Nyt globaali muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laskuri"}]},{"type":"text","value":" on kätevä, koska voimme kasvattaa sen arvoa jokaisella funktion kutsukerralla ja katsoa globaalista muuttujasta, montako kertaa funktiota on kutsuttu."}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-valittaminen-funktiosta-toiseen-revisited","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon välittäminen funktiosta toiseen revisited"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-valittaminen-funktiosta-toiseen-revisited","ariaLabel":"tiedon valittaminen funktiosta toiseen revisited permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelma koostuu useista funktioista, nousee esiin kysymys miten tietoa siirretään funktiosta toiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on jo pari osaa sitten nähty esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"syötä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" lukua:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maara\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luvut ovat: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"lukuja yhteensä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", keskikarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", pienin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktioita käyttävä \"pääohjelma\""}]},{"type":"text","value":"\nsyotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nanalyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"syötä 5 lukua:\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"34"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-32"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"99"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-53"}]},{"type":"text","value":"\nluvut ovat:\n10\n34\n-32\n99\n-53\nlukuja yhteensä 5, keskikarvo 11.6, pienin- 53 ja suurin 99"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallettaa\" ohjelman käsittelemän tiedon, eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":".\nJos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan returnilla. Näin tekevät käyttäjän syötteen lukeva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"text","value":" sekä analyysin tekevä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olisi periaatteessa mahdollista, että funktiot käyttäisivät avainsanaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" hyväksikäyttäen suoraan \"pääohjelman\" globaalia muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":". Se "},{"type":"element","tagName":"a","properties":{"href":"https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ei kuitenkaan ole ollenkaan järkevää"}]},{"type":"text","value":", sillä jos usea funktio pääsee sorkkimaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen \"pääohjelma\" eriytettäisiin omaan funktioon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"syötä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" lukua:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maara\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luvut ovat: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"lukuja yhteensä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" keskikarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pääohjelmaa edustava funktio"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n analyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman käynnistys"}]},{"type":"text","value":"\nmain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan paikallisella muuttujalla
    • \n
    • Tiedät, miten muuttujan näkyvyysalue vaikuttaa sen käyttöön
    • \n
    • Tiedät, mitä Pythonissa tekee avainsana global
    • \n
    • Osaat käyttää paikallisia ja globaaleja muuttujia oikein
    • \n

    Muuttujan näkyvyysalue (scope) tarkoittaa, missä ohjelman osissa muuttujaa voi käyttää. Paikallinen muuttuja on muuttuja, joka on näkyvissä vain tietyn rajatun alueen sisällä ohjelmassa. Globaali muuttuja on puolestaan käytettävissä missä tahansa ohjelman osassa.

    Paikalliset muuttujat

    Pythonissa funktion sisällä määritellyt muuttujat ovat funktion paikallisia muuttujia. Tämä koskee sekä parametreja että funktion lohkon sisällä esiteltyjä muuttujia. Paikallisuus tarkoittaa, että muuttuja ei ole olemassa funktion ulkopuolella.

    Esimerkiksi seuraavassa ohjelmassa yritys viitata muuttujaan x pääohjelmassa antaa virheen:

    def testi():\n    x = 5\n    print(x)\n\ntesti()\nprint(x)

    5\nNameError: name 'x' is not defined

    Ohjelmassa muuttuja x on siis olemassa vain funktion testi suorituksen ajan eikä siihen pääse käsiksi muista funktioista tai pääohjelmasta.

    Globaalit muuttujat

    Pääohjelmassa eli kaikkien funktioiden ulkopuolella määritellyt muuttujat ovat globaaleja muuttujia. Globaalin muuttujan arvo voidaan lukea funktiossa. Esimerkiksi seuraava toimii:

    def testi():\n    print(x)\n\nx = 3\ntesti()

    3

    Kuitenkaan globaalia muuttujaa ei voi muuttaa suoraan. Esimerkiksi seuraava funktio ei vaikuta globaaliin muuttujaan:

    def testi():\n    x = 5\n    print(x)\n\nx = 3\ntesti()\nprint(x)

    5\n3

    Tässä tapauksessa funktio testi luo paikallisen muuttujan x, joka saa arvon 5. Tämä on kuitenkin eri muuttuja kuin pääohjelmassa oleva muuttuja x.

    Entä miten toimii seuraava koodi?

    def testi():\n    print(x)\n    x = 5\n\nx = 3\ntesti()\nprint(x)

    UnboundLocalError: local variable 'x' referenced before assignment

    Funktiossa testi annetaan arvo muuttujalle x, jolloin Python päättelee, että x on funktion paikallinen muuttuja (eikä globaali muuttuja). Koska muuttujaan yritetään viitata ennen arvon asettamista, tapahtuu virhe.

    Jos kuitenkin haluamme muuttaa funktiossa globaalia muuttujaa, tämä onnistuu avainsanan global avulla:

    def testi():\n    global x\n    x = 3\n    print(x)\n\nx = 5\ntesti()\nprint(x)

    3\n3

    Nyt funktiossa tehty muutos x = 3 vaikuttaa myös pääohjelmaan, eli kaikissa ohjelman kohdissa x viittaa samaan muuttujaan.

    Milloin käyttää globaalia muuttujaa?

    Globaalien muuttujien tarkoituksena ei ole korvata funktion parametreja tai paluuarvoa. Esimerkiksi on sinänsä mahdollista tehdä seuraava funktio, joka tallentaa laskun tuloksen globaaliin muuttujaan:

    def laske_summa(a, b):\n    global tulos\n    tulos = a + b\n\nlaske_summa(2, 3)\nprint(tulos)

    Parempi tapa on kuitenkin toteuttaa funktio kuten ennenkin:

    def laske_summa(a, b):\n    return a + b\n\ntulos = laske_summa(2, 3)\nprint(tulos)

    Jälkimmäisen tavan etuna on, että funktio on itsenäinen kokonaisuus, jolle annetaan tietyt parametrit ja joka palauttaa tietyn tuloksen. Funktiolla ei ole sivuvaikutuksia, minkä ansiosta sitä voi testata muusta koodista riippumattomasti.

    Kuitenkin globaali muuttuja voi olla hyödyllinen, jos halutaan pitää yllä jotain funktioille yhteistä \"ylemmän tason\" tietoa. Tässä on yksi esimerkki asiasta:

    def laske_summa(a, b):\n    global laskuri\n    laskuri += 1\n    return a + b\n\ndef laske_erotus(a, b):\n    global laskuri\n    laskuri += 1\n    return a - b\n\n\nlaskuri = 0\nprint(laske_summa(2, 3))\nprint(laske_summa(5, 5))\nprint(laske_erotus(5, 2))\nprint(laske_summa(1, 0))\nprint(\"Funktioita kutsuttiin\", laskuri, \"kertaa\")
    \n5\n10\n3\n1\nFunktioita kutsuttiin 4 kertaa

    Tässä haluamme pitää ohjelman suorituksen aikana kirjaa siitä, montako kertaa funktioita on kutsuttu ohjelman eri kohdista. Nyt globaali muuttuja laskuri on kätevä, koska voimme kasvattaa sen arvoa jokaisella funktion kutsukerralla ja katsoa globaalista muuttujasta, montako kertaa funktiota on kutsuttu.

    Tiedon välittäminen funktiosta toiseen revisited

    Jos ohjelma koostuu useista funktioista, nousee esiin kysymys miten tietoa siirretään funktiosta toiseen.

    Seuraavassa on jo pari osaa sitten nähty esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:

    def lue_kayttajalta(maara: int):\n    print(f\"syötä {maara} lukua:\")\n    luvut = []\n\n    i = maara\n    while i>0:\n        luku = int(input(\"anna luku: \"))\n        luvut.append(luku)\n        i -= 1\n\n    return luvut\n\ndef tulosta(luvut: list):\n    print(\"luvut ovat: \")\n    for luku in luvut:\n        print(luku)\n\ndef analysoi(luvut: list):\n    ka = sum(luvut) / len(luvut)\n    return f\"lukuja yhteensä {len(luvut)}, keskikarvo {ka}, pienin {min(luvut)} ja suurin {max(luvut)}\"\n\n# funktioita käyttävä  \"pääohjelma\"\nsyotteet = lue_kayttajalta(5)\ntulosta(syotteet)\nanalyysin_tulos = analysoi(syotteet)\nprint(analyysin_tulos)

    Esimerkkisuoritus

    syötä 5 lukua:\nanna luku: 10\nanna luku: 34\nanna luku: -32\nanna luku: 99\nanna luku: -53\nluvut ovat:\n10\n34\n-32\n99\n-53\nlukuja yhteensä 5, keskikarvo 11.6, pienin- 53 ja suurin 99

    Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallettaa\" ohjelman käsittelemän tiedon, eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa syotteet.

    Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa tulosta ja analysoi.\nJos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan returnilla. Näin tekevät käyttäjän syötteen lukeva funktio lue_kayttajalta sekä analyysin tekevä funktio analysoi.

    Olisi periaatteessa mahdollista, että funktiot käyttäisivät avainsanaa global hyväksikäyttäen suoraan \"pääohjelman\" globaalia muuttujaa syotteet. Se ei kuitenkaan ole ollenkaan järkevää, sillä jos usea funktio pääsee sorkkimaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa.

    Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla.

    Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen \"pääohjelma\" eriytettäisiin omaan funktioon main, siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:

    def lue_kayttajalta(maara: int):\n    print(f\"syötä {maara} lukua:\")\n    luvut = []\n\n    i = maara\n    while i>0:\n        luku = int(input(\"anna luku: \"))\n        luvut.append(luku)\n        i -= 1\n\n    return luvut\n\ndef tulosta(luvut: list):\n    print(\"luvut ovat: \")\n    for luku in luvut:\n        print(luku)\n\ndef analysoi(luvut: list):\n    ka = sum(luvut) / len(luvut)\n    return f\"lukuja yhteensä {len(luvut)} keskikarvo {ka} pienin{min(luvut)} ja suurin {max(luvut)}\"\n\n# pääohjelmaa edustava funktio\ndef main():\n    syotteet = lue_kayttajalta(5)\n    tulosta(syotteet)\n    analyysin_tulos = analysoi(syotteet)\n\n    print(analyysin_tulos)\n\n# ohjelman käynnistys\nmain()

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/4-muuttujien-nakyvyys.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät mitä tarkoitetaan paikallisella muuttujalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten muuttujan näkyvyysalue vaikuttaa sen käyttöön"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä Pythonissa tekee avainsana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"global"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää paikallisia ja globaaleja muuttujia oikein"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttujan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"näkyvyysalue"}]},{"type":"text","value":" ("},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"scope"}]},{"type":"text","value":") tarkoittaa, missä ohjelman osissa muuttujaa voi käyttää. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Paikallinen"}]},{"type":"text","value":" muuttuja on muuttuja, joka on näkyvissä vain tietyn rajatun alueen sisällä ohjelmassa. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Globaali"}]},{"type":"text","value":" muuttuja on puolestaan käytettävissä missä tahansa ohjelman osassa."}]},{"type":"element","tagName":"h2","properties":{"id":"paikalliset-muuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Paikalliset muuttujat"},{"type":"element","tagName":"a","properties":{"href":"#paikalliset-muuttujat","ariaLabel":"paikalliset muuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa funktion sisällä määritellyt muuttujat ovat funktion paikallisia muuttujia. Tämä koskee sekä parametreja että funktion lohkon sisällä esiteltyjä muuttujia. Paikallisuus tarkoittaa, että muuttuja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole olemassa funktion ulkopuolella"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraavassa ohjelmassa yritys viitata muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" pääohjelmassa antaa virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\nNameError: name 'x' is not defined"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" on siis olemassa vain funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" suorituksen ajan eikä siihen pääse käsiksi muista funktioista tai pääohjelmasta."}]},{"type":"element","tagName":"h2","properties":{"id":"globaalit-muuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Globaalit muuttujat"},{"type":"element","tagName":"a","properties":{"href":"#globaalit-muuttujat","ariaLabel":"globaalit muuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääohjelmassa eli kaikkien funktioiden ulkopuolella määritellyt muuttujat ovat globaaleja muuttujia. Globaalin muuttujan arvo voidaan lukea funktiossa. Esimerkiksi seuraava toimii:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkaan globaalia muuttujaa ei voi muuttaa suoraan. Esimerkiksi seuraava funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei vaikuta"}]},{"type":"text","value":" globaaliin muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tapauksessa funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" luo paikallisen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":", joka saa arvon 5. Tämä on kuitenkin eri muuttuja kuin pääohjelmassa oleva muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Entä miten toimii seuraava koodi?"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"UnboundLocalError: local variable 'x' referenced before assignment"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":" annetaan arvo muuttujalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":", jolloin Python päättelee, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" on funktion paikallinen muuttuja (eikä globaali muuttuja). Koska muuttujaan yritetään viitata ennen arvon asettamista, tapahtuu virhe."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kuitenkin haluamme muuttaa funktiossa globaalia muuttujaa, tämä onnistuu avainsanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" x\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt funktiossa tehty muutos "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x = 3"}]},{"type":"text","value":" vaikuttaa myös pääohjelmaan, eli kaikissa ohjelman kohdissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" viittaa samaan muuttujaan."}]},{"type":"element","tagName":"h2","properties":{"id":"milloin-kayttaa-globaalia-muuttujaa","style":"position:relative;"},"children":[{"type":"text","value":"Milloin käyttää globaalia muuttujaa?"},{"type":"element","tagName":"a","properties":{"href":"#milloin-kayttaa-globaalia-muuttujaa","ariaLabel":"milloin kayttaa globaalia muuttujaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Globaalien muuttujien tarkoituksena ei ole korvata funktion parametreja tai paluuarvoa. Esimerkiksi on sinänsä mahdollista tehdä seuraava funktio, joka tallentaa laskun tuloksen globaaliin muuttujaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" tulos\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\nlaske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi tapa on kuitenkin toteuttaa funktio kuten ennenkin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jälkimmäisen tavan etuna on, että funktio on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"itsenäinen"}]},{"type":"text","value":" kokonaisuus, jolle annetaan tietyt parametrit ja joka palauttaa tietyn tuloksen. Funktiolla ei ole sivuvaikutuksia, minkä ansiosta sitä voi testata muusta koodista riippumattomasti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkin globaali muuttuja voi olla hyödyllinen, jos halutaan pitää yllä jotain funktioille yhteistä \"ylemmän tason\" tietoa. Tässä on yksi esimerkki asiasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_summa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" laskuri\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" b\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laske_erotus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"a"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" b"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" laskuri\n laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" a "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" b\n\n\nlaskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_erotus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"laske_summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Funktioita kutsuttiin\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" laskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kertaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n5\n10\n3\n1\nFunktioita kutsuttiin 4 kertaakertaa"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä haluamme pitää ohjelman suorituksen aikana kirjaa siitä, montako kertaa funktioita on kutsuttu ohjelman eri kohdista. Nyt globaali muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laskuri"}]},{"type":"text","value":" on kätevä, koska voimme kasvattaa sen arvoa jokaisella funktion kutsukerralla ja katsoa globaalista muuttujasta, montako kertaa funktiota on kutsuttu."}]},{"type":"element","tagName":"h2","properties":{"id":"tiedon-valittaminen-funktiosta-toiseen-revisited","style":"position:relative;"},"children":[{"type":"text","value":"Tiedon välittäminen funktiosta toiseen revisited"},{"type":"element","tagName":"a","properties":{"href":"#tiedon-valittaminen-funktiosta-toiseen-revisited","ariaLabel":"tiedon valittaminen funktiosta toiseen revisited permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos ohjelma koostuu useista funktioista, nousee esiin kysymys miten tietoa siirretään funktiosta toiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on jo pari osaa sitten nähty esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"syötä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" lukua:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maara\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luvut ovat: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"lukuja yhteensä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", keskikarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", pienin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktioita käyttävä \"pääohjelma\""}]},{"type":"text","value":"\nsyotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nanalyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkisuoritus"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"syötä 5 lukua:\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"34"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-32"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"99"}]},{"type":"text","value":"\nanna luku: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-53"}]},{"type":"text","value":"\nluvut ovat:\n10\n34\n-32\n99\n-53\nlukuja yhteensä 5, keskikarvo 11.6, pienin- 53 ja suurin 99"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallettaa\" ohjelman käsittelemän tiedon, eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":".\nJos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan returnilla. Näin tekevät käyttäjän syötteen lukeva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"text","value":" sekä analyysin tekevä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olisi periaatteessa mahdollista, että funktiot käyttäisivät avainsanaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"global"}]},{"type":"text","value":" hyväksikäyttäen suoraan \"pääohjelman\" globaalia muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syotteet"}]},{"type":"text","value":". Se "},{"type":"element","tagName":"a","properties":{"href":"https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"ei kuitenkaan ole ollenkaan järkevää"}]},{"type":"text","value":", sillä jos usea funktio pääsee sorkkimaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen \"pääohjelma\" eriytettäisiin omaan funktioon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"main"}]},{"type":"text","value":", siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lue_kayttajalta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"syötä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" lukua:\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maara\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" i"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n luku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"anna luku: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n i "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" luvut\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"luvut ovat: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" luku "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"analysoi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n ka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"lukuja yhteensä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" keskikarvo "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"ka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" pienin"}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"min"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ja suurin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"max"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pääohjelmaa edustava funktio"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"main"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n syotteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lue_kayttajalta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n analyysin_tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" analysoi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syotteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"analyysin_tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ohjelman käynnistys"}]},{"type":"text","value":"\nmain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät mitä tarkoitetaan paikallisella muuttujalla
    • \n
    • Tiedät, miten muuttujan näkyvyysalue vaikuttaa sen käyttöön
    • \n
    • Tiedät, mitä Pythonissa tekee avainsana global
    • \n
    • Osaat käyttää paikallisia ja globaaleja muuttujia oikein
    • \n

    Muuttujan näkyvyysalue (scope) tarkoittaa, missä ohjelman osissa muuttujaa voi käyttää. Paikallinen muuttuja on muuttuja, joka on näkyvissä vain tietyn rajatun alueen sisällä ohjelmassa. Globaali muuttuja on puolestaan käytettävissä missä tahansa ohjelman osassa.

    Paikalliset muuttujat

    Pythonissa funktion sisällä määritellyt muuttujat ovat funktion paikallisia muuttujia. Tämä koskee sekä parametreja että funktion lohkon sisällä esiteltyjä muuttujia. Paikallisuus tarkoittaa, että muuttuja ei ole olemassa funktion ulkopuolella.

    Esimerkiksi seuraavassa ohjelmassa yritys viitata muuttujaan x pääohjelmassa antaa virheen:

    def testi():\n    x = 5\n    print(x)\n\ntesti()\nprint(x)

    5\nNameError: name 'x' is not defined

    Ohjelmassa muuttuja x on siis olemassa vain funktion testi suorituksen ajan eikä siihen pääse käsiksi muista funktioista tai pääohjelmasta.

    Globaalit muuttujat

    Pääohjelmassa eli kaikkien funktioiden ulkopuolella määritellyt muuttujat ovat globaaleja muuttujia. Globaalin muuttujan arvo voidaan lukea funktiossa. Esimerkiksi seuraava toimii:

    def testi():\n    print(x)\n\nx = 3\ntesti()

    3

    Kuitenkaan globaalia muuttujaa ei voi muuttaa suoraan. Esimerkiksi seuraava funktio ei vaikuta globaaliin muuttujaan:

    def testi():\n    x = 5\n    print(x)\n\nx = 3\ntesti()\nprint(x)

    5\n3

    Tässä tapauksessa funktio testi luo paikallisen muuttujan x, joka saa arvon 5. Tämä on kuitenkin eri muuttuja kuin pääohjelmassa oleva muuttuja x.

    Entä miten toimii seuraava koodi?

    def testi():\n    print(x)\n    x = 5\n\nx = 3\ntesti()\nprint(x)

    UnboundLocalError: local variable 'x' referenced before assignment

    Funktiossa testi annetaan arvo muuttujalle x, jolloin Python päättelee, että x on funktion paikallinen muuttuja (eikä globaali muuttuja). Koska muuttujaan yritetään viitata ennen arvon asettamista, tapahtuu virhe.

    Jos kuitenkin haluamme muuttaa funktiossa globaalia muuttujaa, tämä onnistuu avainsanan global avulla:

    def testi():\n    global x\n    x = 3\n    print(x)\n\nx = 5\ntesti()\nprint(x)

    3\n3

    Nyt funktiossa tehty muutos x = 3 vaikuttaa myös pääohjelmaan, eli kaikissa ohjelman kohdissa x viittaa samaan muuttujaan.

    Milloin käyttää globaalia muuttujaa?

    Globaalien muuttujien tarkoituksena ei ole korvata funktion parametreja tai paluuarvoa. Esimerkiksi on sinänsä mahdollista tehdä seuraava funktio, joka tallentaa laskun tuloksen globaaliin muuttujaan:

    def laske_summa(a, b):\n    global tulos\n    tulos = a + b\n\nlaske_summa(2, 3)\nprint(tulos)

    Parempi tapa on kuitenkin toteuttaa funktio kuten ennenkin:

    def laske_summa(a, b):\n    return a + b\n\ntulos = laske_summa(2, 3)\nprint(tulos)

    Jälkimmäisen tavan etuna on, että funktio on itsenäinen kokonaisuus, jolle annetaan tietyt parametrit ja joka palauttaa tietyn tuloksen. Funktiolla ei ole sivuvaikutuksia, minkä ansiosta sitä voi testata muusta koodista riippumattomasti.

    Kuitenkin globaali muuttuja voi olla hyödyllinen, jos halutaan pitää yllä jotain funktioille yhteistä \"ylemmän tason\" tietoa. Tässä on yksi esimerkki asiasta:

    def laske_summa(a, b):\n    global laskuri\n    laskuri += 1\n    return a + b\n\ndef laske_erotus(a, b):\n    global laskuri\n    laskuri += 1\n    return a - b\n\n\nlaskuri = 0\nprint(laske_summa(2, 3))\nprint(laske_summa(5, 5))\nprint(laske_erotus(5, 2))\nprint(laske_summa(1, 0))\nprint(\"Funktioita kutsuttiin\", laskuri, \"kertaa\")
    \n5\n10\n3\n1\nFunktioita kutsuttiin 4 kertaa

    Tässä haluamme pitää ohjelman suorituksen aikana kirjaa siitä, montako kertaa funktioita on kutsuttu ohjelman eri kohdista. Nyt globaali muuttuja laskuri on kätevä, koska voimme kasvattaa sen arvoa jokaisella funktion kutsukerralla ja katsoa globaalista muuttujasta, montako kertaa funktiota on kutsuttu.

    Tiedon välittäminen funktiosta toiseen revisited

    Jos ohjelma koostuu useista funktioista, nousee esiin kysymys miten tietoa siirretään funktiosta toiseen.

    Seuraavassa on jo pari osaa sitten nähty esimerkki ohjelmasta, joka lukee käyttäjältä joukon kokonaislukuarvoja. Sen jälkeen ohjelma tulostaa arvot ja tekee niille vielä \"analyysin\". Ohjelma on jaettu kolmeen erilliseen funktioon:

    def lue_kayttajalta(maara: int):\n    print(f\"syötä {maara} lukua:\")\n    luvut = []\n\n    i = maara\n    while i>0:\n        luku = int(input(\"anna luku: \"))\n        luvut.append(luku)\n        i -= 1\n\n    return luvut\n\ndef tulosta(luvut: list):\n    print(\"luvut ovat: \")\n    for luku in luvut:\n        print(luku)\n\ndef analysoi(luvut: list):\n    ka = sum(luvut) / len(luvut)\n    return f\"lukuja yhteensä {len(luvut)}, keskikarvo {ka}, pienin {min(luvut)} ja suurin {max(luvut)}\"\n\n# funktioita käyttävä  \"pääohjelma\"\nsyotteet = lue_kayttajalta(5)\ntulosta(syotteet)\nanalyysin_tulos = analysoi(syotteet)\nprint(analyysin_tulos)

    Esimerkkisuoritus

    syötä 5 lukua:\nanna luku: 10\nanna luku: 34\nanna luku: -32\nanna luku: 99\nanna luku: -53\nluvut ovat:\n10\n34\n-32\n99\n-53\nlukuja yhteensä 5, keskikarvo 11.6, pienin- 53 ja suurin 99

    Perusperiaatteena ohjelmassa on se, että pääohjelma \"tallettaa\" ohjelman käsittelemän tiedon, eli tässä tapauksessa käyttäjän syöttämät luvut muuttujassa syotteet.

    Jos lukuja on tarve käsitellä jossain funktiossa, ne välitetään sinne parametrina. Näin tapahtuu funktioissa tulosta ja analysoi.\nJos taas funktio tuottaa tietoa, jota muut ohjelman osat tarvitsevat, palauttaa funktio datan returnilla. Näin tekevät käyttäjän syötteen lukeva funktio lue_kayttajalta sekä analyysin tekevä funktio analysoi.

    Olisi periaatteessa mahdollista, että funktiot käyttäisivät avainsanaa global hyväksikäyttäen suoraan \"pääohjelman\" globaalia muuttujaa syotteet. Se ei kuitenkaan ole ollenkaan järkevää, sillä jos usea funktio pääsee sorkkimaan globaalia muuttujaa, voi ohjelmassa alkaa tapahtua jotain hallitsematonta, varsinkin kun funktioiden määrä kasvaa.

    Tiedon välitys funktioihin ja niistä ulos on siis järkevintä hoitaa parametrien ja paluuarvojen avulla.

    Jos haluaisimme tehdä edellisen esimerkin ohjelman siten, että sen \"pääohjelma\" eriytettäisiin omaan funktioon main, siirrettäisiin ohjelman käsittelemä data pääohjelmaa edustavan funktion sisäiseksi muuttujaksi:

    def lue_kayttajalta(maara: int):\n    print(f\"syötä {maara} lukua:\")\n    luvut = []\n\n    i = maara\n    while i>0:\n        luku = int(input(\"anna luku: \"))\n        luvut.append(luku)\n        i -= 1\n\n    return luvut\n\ndef tulosta(luvut: list):\n    print(\"luvut ovat: \")\n    for luku in luvut:\n        print(luku)\n\ndef analysoi(luvut: list):\n    ka = sum(luvut) / len(luvut)\n    return f\"lukuja yhteensä {len(luvut)} keskikarvo {ka} pienin{min(luvut)} ja suurin {max(luvut)}\"\n\n# pääohjelmaa edustava funktio\ndef main():\n    syotteet = lue_kayttajalta(5)\n    tulosta(syotteet)\n    analyysin_tulos = analysoi(syotteet)\n\n    print(analyysin_tulos)\n\n# ohjelman käynnistys\nmain()

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/4-muuttujien-nakyvyys.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-6/page-data.json b/page-data/osa-6/page-data.json index cb4fbfdad..dc5003886 100644 --- a/page-data/osa-6/page-data.json +++ b/page-data/osa-6/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-6", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-6","title":"Osa 6"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-6","title":"Osa 6"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-6/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/1-moduulit/page-data.json b/page-data/osa-7/1-moduulit/page-data.json index 4799cb960..34339f5bf 100644 --- a/page-data/osa-7/1-moduulit/page-data.json +++ b/page-data/osa-7/1-moduulit/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-7/1-moduulit", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mikä on moduuli"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat ottaa käyttöön moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten moduulin sisällöstä voi etsiä tietoa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"debugging-revisited","style":"position:relative;"},"children":[{"type":"text","value":"Debugging revisited"},{"type":"element","tagName":"a","properties":{"href":"#debugging-revisited","ariaLabel":"debugging revisited permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssilla on jo moneen otteeseen puhuttu erilaisista debuggausmenetelmistä. "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visualisaattori"}]},{"type":"text","value":" on jo monille tuttu ja vanha kunnon "},{"type":"element","tagName":"a","properties":{"href":"osa-2/1-ohjelmoinnin-termeja#debuggaaminen"},"children":[{"type":"text","value":"debuggaustulostus"}]},{"type":"text","value":" toimii aina. Visual Studio Coden "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/1-vscode#debuggeri"},"children":[{"type":"text","value":"debuggeriakin"}]},{"type":"text","value":" monet ovat jo kokeilleet. Debuggerilla voi olla vaikeuksia selvitä tiedostoja käsittelevästä koodista, mutta siihenkin on olemassa "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#tiedostoja-lukevan-koodin-debuggaus"},"children":[{"type":"text","value":"lääke"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin versio 3.7 tarjoaa vielä yhden erittäin helppokäyttöisen tavan debuggaukseen, komennon "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/functions.html?highlight=breakpoint#breakpoint","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"breakpoint()"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit lisätä komennon mihin kohtaan tahansa ohjelmaasi, ja kun suoritat ohjelman, pysähtyy suoritus komennon kohdalle. Seuraavassa esimerkki viime viikon tehtävän debuggaamisesta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAABYlAAAWJQFJUiTwAAABeklEQVQoz43R247bIBQFUH/HhKu5GIMNPr40mQwYT+yM2qn6/79TxcnDqGqrLB0J8bBB2qdofQCAHvq+g7ZxlbUhdHYnhKCUsr/i3GheSCEQQozxvoMGAgx9bQzGmBCC/w0hpJUulFJaKoAAXees894zxu/h/0AIhbYppJQl56fTcd221geEEHkCRqi27hZWSo7TeDyefAhSSkopeU7BOWeM8pKzsiyFkEIS8nTY1rWzzlSmCyF4b4xxe88PZSkfZ+mcizEOwwAA1lpjTDEdv71fLjGllPNbiinPaZ7nJcc53a9vKQ7jOE3TsJt23vu2bYvleP55uX5eth/LusV5PadrzNeUP+blY16uKZ9hHKEHgKG//dnvvPdN0xS/XvMacyurinCFmcJ0H6bJbRRhNb7NCzqgL+7bLj7TkrfVQ6drw6TgSspKk5IfMDoQ/EIwJcRRgSmhXzwK+96/jr4Luu6MrblwQjVS11xUlFeUa8odLRsq0P7KH23/Bv61bj0zKY2KAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/f9eb8b0c4a4f642d316973fc108cae86/a0b58/7_1_1.webp 230w","/static/f9eb8b0c4a4f642d316973fc108cae86/bc10c/7_1_1.webp 460w","/static/f9eb8b0c4a4f642d316973fc108cae86/966d8/7_1_1.webp 920w","/static/f9eb8b0c4a4f642d316973fc108cae86/445df/7_1_1.webp 1380w","/static/f9eb8b0c4a4f642d316973fc108cae86/78de1/7_1_1.webp 1840w","/static/f9eb8b0c4a4f642d316973fc108cae86/a02b9/7_1_1.webp 1852w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/f9eb8b0c4a4f642d316973fc108cae86/81c8e/7_1_1.png 230w","/static/f9eb8b0c4a4f642d316973fc108cae86/08a84/7_1_1.png 460w","/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png 920w","/static/f9eb8b0c4a4f642d316973fc108cae86/b1001/7_1_1.png 1380w","/static/f9eb8b0c4a4f642d316973fc108cae86/161ec/7_1_1.png 1840w","/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png 1852w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png","alt":"7 1 1","title":"7 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun koodi pysähtyy breakpoint()-komentoon, avautuu samalla konsolinäkymä, johon on mahdollista kirjoittaa mitä tahansa koodia ja kokeilla miten se toimisi ohjelman kyseisessä kohdassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento on erityisen kätevä jos ohjelmasi jokin rivi aiheuttaa virheen, etkä ole ihan varma mistä virhe johtuu. Näissä tilanteissa kannattaa laittaa breakpoint-kutsu juuri ennen virheellistä riviä. Sen jälkeen on debuggerin konsolissa helppo kokeilla, mikä olisi oikea komento juuri siinä kohtaa suoritettavaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin suoritusta on myös mahdollista jatkaa pysähtymisen jälkeen. Esimerkiksi konsoliin annettu komento "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" tai sen lyhennetty versio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"c"}]},{"type":"text","value":" jatkaa suoritusta seuraavaan breakpointiin asti. Seuraavassa esimerkki siitä, kun silmukkaa käydään läpi muutamaan kertaan:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 44.78260869565218%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/ElEQVQoz42R22rDMAyG8xi7iGMpPqSuHZ8SzErrOlfd5WDQ93+VkXjLOhij34XQjyX9Qm5Yz0ajvbdqQwhBCOmeo0HEcTQ5X1JKgNB1HX2Cn2ajjyFGY91BKQDo/nImhLRtSzaqXJsB4IW2HVCOPWMMEevgfXwFEesrAFBKa2y0MXeV3qSfD5r1TAixmn+z12mt53k2xiilOOdCCERscs63S5l8GIN3zllr/cY0TSGEYRiklMMG5/xRCiGavJSP07IM9ojbWr+p54EHdrmufTqf7+X2/lpKSLPz1rnqHGP03u9WSqk9VqSUTbmWmGZ+GGiPgFANAb6S///5E+mjTgE+v0lMAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0ec6d7f1917313cc4582ecd977846154/a0b58/7_1_2.webp 230w","/static/0ec6d7f1917313cc4582ecd977846154/bc10c/7_1_2.webp 460w","/static/0ec6d7f1917313cc4582ecd977846154/966d8/7_1_2.webp 920w","/static/0ec6d7f1917313cc4582ecd977846154/445df/7_1_2.webp 1380w","/static/0ec6d7f1917313cc4582ecd977846154/78de1/7_1_2.webp 1840w","/static/0ec6d7f1917313cc4582ecd977846154/ca269/7_1_2.webp 1986w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0ec6d7f1917313cc4582ecd977846154/81c8e/7_1_2.png 230w","/static/0ec6d7f1917313cc4582ecd977846154/08a84/7_1_2.png 460w","/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png 920w","/static/0ec6d7f1917313cc4582ecd977846154/b1001/7_1_2.png 1380w","/static/0ec6d7f1917313cc4582ecd977846154/161ec/7_1_2.png 1840w","/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png 1986w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png","alt":"7 1 2","title":"7 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muut debuggerikonsolin komennot selviävät "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/pdb.html#debugger-commands","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"täältä"}]},{"type":"text","value":" tai antamalla debuggerkonsolissa komento "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"help"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.608695652173914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA5klEQVQoz4WPy07EMAxF+yF9pHnHTds4cVxpkNixYc3/fwuiURGgmeGsbEvH9u0WAAeg12XD5IIHAKnUdA9mJqJ1XUMIWmtrbXe83N7L7cMSCWuGqR+G8WI4+W7FSVvUJl2p9TXXt8S07nlPAUIT+r6fpmme50e7vuSM6BfYqRDzlvaUUjjx3m/bBgB/hF8yIjJzrRURY4zNPI4DEUspWutnMhGllBDRe99eHcexBZNSCiHGx3S11pxzjFEpNV807Wfg+zIz55yttVJKY4w+McYopZxz/1xupnMOAJxz/qLVQognmT8B8I9MXlB9in4AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19fd7ec3fff52d6018519fac3d868e78/a0b58/7_1_3.webp 230w","/static/19fd7ec3fff52d6018519fac3d868e78/bc10c/7_1_3.webp 460w","/static/19fd7ec3fff52d6018519fac3d868e78/966d8/7_1_3.webp 920w","/static/19fd7ec3fff52d6018519fac3d868e78/445df/7_1_3.webp 1380w","/static/19fd7ec3fff52d6018519fac3d868e78/78de1/7_1_3.webp 1840w","/static/19fd7ec3fff52d6018519fac3d868e78/28038/7_1_3.webp 1968w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19fd7ec3fff52d6018519fac3d868e78/81c8e/7_1_3.png 230w","/static/19fd7ec3fff52d6018519fac3d868e78/08a84/7_1_3.png 460w","/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png 920w","/static/19fd7ec3fff52d6018519fac3d868e78/b1001/7_1_3.png 1380w","/static/19fd7ec3fff52d6018519fac3d868e78/161ec/7_1_3.png 1840w","/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png 1968w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png","alt":"7 1 3","title":"7 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":" siis lopettaa ohjelman suorituksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun lopetat debuggaamisen, muista poistaa koodista komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint()"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-kayttaminen","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin käyttäminen"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-kayttaminen","ariaLabel":"moduulin kayttaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python-kieli sisältää itsessään joukon valmiita funktioita, esimerkiksi merkkijonojen ja listojen pituuden kertovan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" sekä alkioiden summan laskevan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum"}]},{"type":"text","value":". Python-kielen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"standardikirjasto"}]},{"type":"text","value":" on kokoelma monenlaisia hyödyllisiä funktioita ja olioita joiden avulla kielen \"ilmaisuvoimaa\" on helppo laajentaa. Olemme jo käyttäneet muutamassa tehtävässä standardikirjastosta eräitä matemaattisia operaatioita tarjoavia funktioita esim. neliöjuurten laskemisessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardikirjasto muodostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"moduuleista"}]},{"type":"text","value":", joihin on ryhmitelty eri aiheisiin liittyviä funktioita ja luokkia. Tutustumme tässä osassa joihinkin hyödyllisiin moduuleihin ja opimme myös tekemään moduulin itse."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" ottaa käyttöön halutun moduulin. Tarkastellaan esimerkkinä moduulia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":", jossa on matemaattisia funktioita. Seuraava koodi laskee luvun neliöjuuren funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":" ja logaritmin funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"log"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luvun 5 neliöjuuri"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luvun 8 logaritmi (2-kantainen)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2.23606797749979\n3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktiot ovat moduulissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":", niihin viitataan koodissa nimillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math.sqrt"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math.log"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-osien-valinta","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin osien valinta"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-osien-valinta","ariaLabel":"moduulin osien valinta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa käyttää moduulia on valita sieltä mukaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":"-komennolla tiettyjä osia, joita haluamme käyttää. Esimerkiksi seuraava koodi ottaa käyttöön funktiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"log"}]},{"type":"text","value":" moduulista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" log\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän tavan etuna on, että voimme käyttää funktioita suoraan ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-etuliitettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös ottaa suoraan käytettäväksi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kaiken"}]},{"type":"text","value":" moduulin sisällön tähden avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tapa voi olla kätevä testailussa ja pienissä ohjelmissa, mutta siinä on omat ongelmansa, kuten näemme myöhemmin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hypotenuusa","tmcname":"osa07-01_hypotenuusa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hypotenuusa(kateetti1: float, kateetti2: float)"}]},{"type":"text","value":", joka saa parametrikseen suorakulmaisen kolmion kateettien pituudet. Funktio palauttaa kolmion hypotenuusan pituuden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ratkaisu lasketaan "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Pythagoraan_lause","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pythagoraan"}]},{"type":"text","value":" lauseen avulla. Saat laskettua neliöjuuren "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-moduulin funktion avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenuusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 5.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenuusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 13.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenuusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 1.4142135623730951"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-sisalto","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin sisältö"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-sisalto","ariaLabel":"moduulin sisalto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin dokumentaatio kertoo jokaisesta standardikirjaston moduulista, mitä moduuli sisältää ja kuinka sitä käytetään. Esimerkiksi moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":" dokumentaatio on tässä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://docs.python.org/3/library/math.html"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös tutkia funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"dir"}]},{"type":"text","value":" avulla moduulin sisältöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio antaa listan nimistä, jotka moduuli määrittelee:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Erikoismerkit","tmcname":"osa07-02_erikoismerkit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulissa "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/string.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"string"}]},{"type":"text","value":" on merkkijonovakioita, jotka määrittelevät tiettyjä merkkiryhmiä (esim. pienet kirjaimet ja välimerkit). Tutustu näihin vakioihin ja kirjoita niitä käyttäen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jaa_merkkeihin(merkkijono: str)"}]},{"type":"text","value":", joka saa parametrikseen merkkijonon. Funktio palauttaa tuplen, jossa parametrina saadun merkkijonon merkit on jaettu kolmeen eri merkkijonoon:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ensimmäisessä jonossa on kaikki pienet ja suuret englanninkieliset kirjaimet (vakio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ascii_letters"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Toisessa jonossa on kaikki vakiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punctuation"}]},{"type":"text","value":" määritellyt välimerkit"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Kolmannessa jonossa on kaikki merkit (mukaan lukien esim. välilyönnit), jotka eivät kuulu kahteen edelliseen ryhmään"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkit tulee tallentaa palautettuihin merkkijonoihin siinä järjestyksessä kuin ne esiintyvät alkuperäisessä merkkijonossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" jaa_merkkeihin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi!!! Toimiiko, mitä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TmontestiToimiikomit\n!!!,?\nää ä"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Murtoluvuilla laskeminen","tmcname":"osa07-03_murtoluvuilla_laskeminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustu Pythonin moduuliin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fractions"}]},{"type":"text","value":" ja toteuta sen avulla funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jaa_palasiksi(maara: int)"}]},{"type":"text","value":", joka saa parametrikseen palasten määrän. Funktio jakaa luvun 1 parametrin mukaisesti yhtä suuriin murtolukupalasiin ja palauttaa nämä palaset listassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" p "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jaa_palasiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jaa_palasiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1/3\n1/3\n1/3"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5)]"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mikä on moduuli
    • \n
    • Osaat ottaa käyttöön moduulin import-lauseella
    • \n
    • Tiedät, miten moduulin sisällöstä voi etsiä tietoa
    • \n

    Debugging revisited

    Kurssilla on jo moneen otteeseen puhuttu erilaisista debuggausmenetelmistä. Visualisaattori on jo monille tuttu ja vanha kunnon debuggaustulostus toimii aina. Visual Studio Coden debuggeriakin monet ovat jo kokeilleet. Debuggerilla voi olla vaikeuksia selvitä tiedostoja käsittelevästä koodista, mutta siihenkin on olemassa lääke.

    Pythonin versio 3.7 tarjoaa vielä yhden erittäin helppokäyttöisen tavan debuggaukseen, komennon breakpoint().

    Voit lisätä komennon mihin kohtaan tahansa ohjelmaasi, ja kun suoritat ohjelman, pysähtyy suoritus komennon kohdalle. Seuraavassa esimerkki viime viikon tehtävän debuggaamisesta:

    \n \n \n \n \n \n \"7\n \n \n

    Kun koodi pysähtyy breakpoint()-komentoon, avautuu samalla konsolinäkymä, johon on mahdollista kirjoittaa mitä tahansa koodia ja kokeilla miten se toimisi ohjelman kyseisessä kohdassa.

    Komento on erityisen kätevä jos ohjelmasi jokin rivi aiheuttaa virheen, etkä ole ihan varma mistä virhe johtuu. Näissä tilanteissa kannattaa laittaa breakpoint-kutsu juuri ennen virheellistä riviä. Sen jälkeen on debuggerin konsolissa helppo kokeilla, mikä olisi oikea komento juuri siinä kohtaa suoritettavaksi.

    Koodin suoritusta on myös mahdollista jatkaa pysähtymisen jälkeen. Esimerkiksi konsoliin annettu komento continue tai sen lyhennetty versio c jatkaa suoritusta seuraavaan breakpointiin asti. Seuraavassa esimerkki siitä, kun silmukkaa käydään läpi muutamaan kertaan:

    \n \n \n \n \n \n \"7\n \n \n

    Muut debuggerikonsolin komennot selviävät täältä tai antamalla debuggerkonsolissa komento help:

    \n \n

    Tee funktio hypotenuusa(kateetti1: float, kateetti2: float), joka saa parametrikseen suorakulmaisen kolmion kateettien pituudet. Funktio palauttaa kolmion hypotenuusan pituuden.

    Ratkaisu lasketaan Pythagoraan lauseen avulla. Saat laskettua neliöjuuren math-moduulin funktion avulla.

    Esimerkkejä:

    print(hypotenuusa(3,4)) # 5.0\nprint(hypotenuusa(5,12)) # 13.0\nprint(hypotenuusa(1,1)) # 1.4142135623730951

    Moduulin sisältö

    Pythonin dokumentaatio kertoo jokaisesta standardikirjaston moduulista, mitä moduuli sisältää ja kuinka sitä käytetään. Esimerkiksi moduulin math dokumentaatio on tässä:

    Voimme myös tutkia funktion dir avulla moduulin sisältöä:

    import math\n\nprint(dir(math))

    Funktio antaa listan nimistä, jotka moduuli määrittelee:

    ['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

    Moduulissa string on merkkijonovakioita, jotka määrittelevät tiettyjä merkkiryhmiä (esim. pienet kirjaimet ja välimerkit). Tutustu näihin vakioihin ja kirjoita niitä käyttäen funktio jaa_merkkeihin(merkkijono: str), joka saa parametrikseen merkkijonon. Funktio palauttaa tuplen, jossa parametrina saadun merkkijonon merkit on jaettu kolmeen eri merkkijonoon:

      \n
    • Ensimmäisessä jonossa on kaikki pienet ja suuret englanninkieliset kirjaimet (vakio ascii_letters)
    • \n
    • Toisessa jonossa on kaikki vakiossa punctuation määritellyt välimerkit
    • \n
    • Kolmannessa jonossa on kaikki merkit (mukaan lukien esim. välilyönnit), jotka eivät kuulu kahteen edelliseen ryhmään
    • \n

    Merkit tulee tallentaa palautettuihin merkkijonoihin siinä järjestyksessä kuin ne esiintyvät alkuperäisessä merkkijonossa.

    Esimerkki:

    osat = jaa_merkkeihin(\"Tämä on testi!!! Toimiiko, mitä?\")\nprint(osat[0])\nprint(osat[1])\nprint(osat[2])

    TmontestiToimiikomit\n!!!,?\nää ä

    Tutustu Pythonin moduuliin fractions ja toteuta sen avulla funktio jaa_palasiksi(maara: int), joka saa parametrikseen palasten määrän. Funktio jakaa luvun 1 parametrin mukaisesti yhtä suuriin murtolukupalasiin ja palauttaa nämä palaset listassa.

    Esimerkki:

    for p in jaa_palasiksi(3):\n    print(p)\n\nprint()\n\nprint(jaa_palasiksi(5))

    1/3\n1/3\n1/3

    [Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5)]

    ","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/1-moduulit.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mikä on moduuli"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat ottaa käyttöön moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten moduulin sisällöstä voi etsiä tietoa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"debugging-revisited","style":"position:relative;"},"children":[{"type":"text","value":"Debugging revisited"},{"type":"element","tagName":"a","properties":{"href":"#debugging-revisited","ariaLabel":"debugging revisited permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kurssilla on jo moneen otteeseen puhuttu erilaisista debuggausmenetelmistä. "},{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visualisaattori"}]},{"type":"text","value":" on jo monille tuttu ja vanha kunnon "},{"type":"element","tagName":"a","properties":{"href":"osa-2/1-ohjelmoinnin-termeja#debuggaaminen"},"children":[{"type":"text","value":"debuggaustulostus"}]},{"type":"text","value":" toimii aina. Visual Studio Coden "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/1-vscode#debuggeri"},"children":[{"type":"text","value":"debuggeriakin"}]},{"type":"text","value":" monet ovat jo kokeilleet. Debuggerilla voi olla vaikeuksia selvitä tiedostoja käsittelevästä koodista, mutta siihenkin on olemassa "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/1-tiedostojen-lukeminen#tiedostoja-lukevan-koodin-debuggaus"},"children":[{"type":"text","value":"lääke"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin versio 3.7 tarjoaa vielä yhden erittäin helppokäyttöisen tavan debuggaukseen, komennon "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/functions.html?highlight=breakpoint#breakpoint","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"breakpoint()"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit lisätä komennon mihin kohtaan tahansa ohjelmaasi, ja kun suoritat ohjelman, pysähtyy suoritus komennon kohdalle. Seuraavassa esimerkki viime viikon tehtävän debuggaamisesta:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 62.173913043478265%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAABYlAAAWJQFJUiTwAAABeklEQVQoz43R247bIBQFUH/HhKu5GIMNPr40mQwYT+yM2qn6/79TxcnDqGqrLB0J8bBB2qdofQCAHvq+g7ZxlbUhdHYnhKCUsr/i3GheSCEQQozxvoMGAgx9bQzGmBCC/w0hpJUulFJaKoAAXees894zxu/h/0AIhbYppJQl56fTcd221geEEHkCRqi27hZWSo7TeDyefAhSSkopeU7BOWeM8pKzsiyFkEIS8nTY1rWzzlSmCyF4b4xxe88PZSkfZ+mcizEOwwAA1lpjTDEdv71fLjGllPNbiinPaZ7nJcc53a9vKQ7jOE3TsJt23vu2bYvleP55uX5eth/LusV5PadrzNeUP+blY16uKZ9hHKEHgKG//dnvvPdN0xS/XvMacyurinCFmcJ0H6bJbRRhNb7NCzqgL+7bLj7TkrfVQ6drw6TgSspKk5IfMDoQ/EIwJcRRgSmhXzwK+96/jr4Luu6MrblwQjVS11xUlFeUa8odLRsq0P7KH23/Bv61bj0zKY2KAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/f9eb8b0c4a4f642d316973fc108cae86/a0b58/7_1_1.webp 230w","/static/f9eb8b0c4a4f642d316973fc108cae86/bc10c/7_1_1.webp 460w","/static/f9eb8b0c4a4f642d316973fc108cae86/966d8/7_1_1.webp 920w","/static/f9eb8b0c4a4f642d316973fc108cae86/445df/7_1_1.webp 1380w","/static/f9eb8b0c4a4f642d316973fc108cae86/78de1/7_1_1.webp 1840w","/static/f9eb8b0c4a4f642d316973fc108cae86/a02b9/7_1_1.webp 1852w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/f9eb8b0c4a4f642d316973fc108cae86/81c8e/7_1_1.png 230w","/static/f9eb8b0c4a4f642d316973fc108cae86/08a84/7_1_1.png 460w","/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png 920w","/static/f9eb8b0c4a4f642d316973fc108cae86/b1001/7_1_1.png 1380w","/static/f9eb8b0c4a4f642d316973fc108cae86/161ec/7_1_1.png 1840w","/static/f9eb8b0c4a4f642d316973fc108cae86/ec5f6/7_1_1.png 1852w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/f9eb8b0c4a4f642d316973fc108cae86/c0255/7_1_1.png","alt":"7 1 1","title":"7 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun koodi pysähtyy breakpoint()-komentoon, avautuu samalla konsolinäkymä, johon on mahdollista kirjoittaa mitä tahansa koodia ja kokeilla miten se toimisi ohjelman kyseisessä kohdassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento on erityisen kätevä jos ohjelmasi jokin rivi aiheuttaa virheen, etkä ole ihan varma mistä virhe johtuu. Näissä tilanteissa kannattaa laittaa breakpoint-kutsu juuri ennen virheellistä riviä. Sen jälkeen on debuggerin konsolissa helppo kokeilla, mikä olisi oikea komento juuri siinä kohtaa suoritettavaksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodin suoritusta on myös mahdollista jatkaa pysähtymisen jälkeen. Esimerkiksi konsoliin annettu komento "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"continue"}]},{"type":"text","value":" tai sen lyhennetty versio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"c"}]},{"type":"text","value":" jatkaa suoritusta seuraavaan breakpointiin asti. Seuraavassa esimerkki siitä, kun silmukkaa käydään läpi muutamaan kertaan:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 44.78260869565218%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/ElEQVQoz42R22rDMAyG8xi7iGMpPqSuHZ8SzErrOlfd5WDQ93+VkXjLOhij34XQjyX9Qm5Yz0ajvbdqQwhBCOmeo0HEcTQ5X1JKgNB1HX2Cn2ajjyFGY91BKQDo/nImhLRtSzaqXJsB4IW2HVCOPWMMEevgfXwFEesrAFBKa2y0MXeV3qSfD5r1TAixmn+z12mt53k2xiilOOdCCERscs63S5l8GIN3zllr/cY0TSGEYRiklMMG5/xRCiGavJSP07IM9ojbWr+p54EHdrmufTqf7+X2/lpKSLPz1rnqHGP03u9WSqk9VqSUTbmWmGZ+GGiPgFANAb6S///5E+mjTgE+v0lMAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0ec6d7f1917313cc4582ecd977846154/a0b58/7_1_2.webp 230w","/static/0ec6d7f1917313cc4582ecd977846154/bc10c/7_1_2.webp 460w","/static/0ec6d7f1917313cc4582ecd977846154/966d8/7_1_2.webp 920w","/static/0ec6d7f1917313cc4582ecd977846154/445df/7_1_2.webp 1380w","/static/0ec6d7f1917313cc4582ecd977846154/78de1/7_1_2.webp 1840w","/static/0ec6d7f1917313cc4582ecd977846154/ca269/7_1_2.webp 1986w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/0ec6d7f1917313cc4582ecd977846154/81c8e/7_1_2.png 230w","/static/0ec6d7f1917313cc4582ecd977846154/08a84/7_1_2.png 460w","/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png 920w","/static/0ec6d7f1917313cc4582ecd977846154/b1001/7_1_2.png 1380w","/static/0ec6d7f1917313cc4582ecd977846154/161ec/7_1_2.png 1840w","/static/0ec6d7f1917313cc4582ecd977846154/c7bb6/7_1_2.png 1986w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/0ec6d7f1917313cc4582ecd977846154/c0255/7_1_2.png","alt":"7 1 2","title":"7 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muut debuggerikonsolin komennot selviävät "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/pdb.html#debugger-commands","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"täältä"}]},{"type":"text","value":" tai antamalla debuggerkonsolissa komento "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"help"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 42.608695652173914%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA5klEQVQoz4WPy07EMAxF+yF9pHnHTds4cVxpkNixYc3/fwuiURGgmeGsbEvH9u0WAAeg12XD5IIHAKnUdA9mJqJ1XUMIWmtrbXe83N7L7cMSCWuGqR+G8WI4+W7FSVvUJl2p9TXXt8S07nlPAUIT+r6fpmme50e7vuSM6BfYqRDzlvaUUjjx3m/bBgB/hF8yIjJzrRURY4zNPI4DEUspWutnMhGllBDRe99eHcexBZNSCiHGx3S11pxzjFEpNV807Wfg+zIz55yttVJKY4w+McYopZxz/1xupnMOAJxz/qLVQognmT8B8I9MXlB9in4AAAAASUVORK5CYII='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19fd7ec3fff52d6018519fac3d868e78/a0b58/7_1_3.webp 230w","/static/19fd7ec3fff52d6018519fac3d868e78/bc10c/7_1_3.webp 460w","/static/19fd7ec3fff52d6018519fac3d868e78/966d8/7_1_3.webp 920w","/static/19fd7ec3fff52d6018519fac3d868e78/445df/7_1_3.webp 1380w","/static/19fd7ec3fff52d6018519fac3d868e78/78de1/7_1_3.webp 1840w","/static/19fd7ec3fff52d6018519fac3d868e78/28038/7_1_3.webp 1968w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/19fd7ec3fff52d6018519fac3d868e78/81c8e/7_1_3.png 230w","/static/19fd7ec3fff52d6018519fac3d868e78/08a84/7_1_3.png 460w","/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png 920w","/static/19fd7ec3fff52d6018519fac3d868e78/b1001/7_1_3.png 1380w","/static/19fd7ec3fff52d6018519fac3d868e78/161ec/7_1_3.png 1840w","/static/19fd7ec3fff52d6018519fac3d868e78/ca98b/7_1_3.png 1968w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/19fd7ec3fff52d6018519fac3d868e78/c0255/7_1_3.png","alt":"7 1 3","title":"7 1 3","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"exit"}]},{"type":"text","value":" siis lopettaa ohjelman suorituksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun lopetat debuggaamisen, muista poistaa koodista komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"breakpoint()"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-kayttaminen","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin käyttäminen"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-kayttaminen","ariaLabel":"moduulin kayttaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python-kieli sisältää itsessään joukon valmiita funktioita, esimerkiksi merkkijonojen ja listojen pituuden kertovan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"len"}]},{"type":"text","value":" sekä alkioiden summan laskevan funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sum"}]},{"type":"text","value":". Python-kielen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"standardikirjasto"}]},{"type":"text","value":" on kokoelma monenlaisia hyödyllisiä funktioita ja olioita joiden avulla kielen \"ilmaisuvoimaa\" on helppo laajentaa. Olemme jo käyttäneet muutamassa tehtävässä standardikirjastosta eräitä matemaattisia operaatioita tarjoavia funktioita esim. neliöjuurten laskemisessa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardikirjasto muodostuu "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"moduuleista"}]},{"type":"text","value":", joihin on ryhmitelty eri aiheisiin liittyviä funktioita ja luokkia. Tutustumme tässä osassa joihinkin hyödyllisiin moduuleihin ja opimme myös tekemään moduulin itse."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" ottaa käyttöön halutun moduulin. Tarkastellaan esimerkkinä moduulia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":", jossa on matemaattisia funktioita. Seuraava koodi laskee luvun neliöjuuren funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":" ja logaritmin funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"log"}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luvun 5 neliöjuuri"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# luvun 8 logaritmi (2-kantainen)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2.23606797749979\n3.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska funktiot ovat moduulissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":", niihin viitataan koodissa nimillä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math.sqrt"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math.log"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-osien-valinta","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin osien valinta"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-osien-valinta","ariaLabel":"moduulin osien valinta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa käyttää moduulia on valita sieltä mukaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":"-komennolla tiettyjä osia, joita haluamme käyttää. Esimerkiksi seuraava koodi ottaa käyttöön funktiot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sqrt"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"log"}]},{"type":"text","value":" moduulista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" log\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän tavan etuna on, että voimme käyttää funktioita suoraan ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-etuliitettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös ottaa suoraan käytettäväksi "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kaiken"}]},{"type":"text","value":" moduulin sisällön tähden avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" math "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"log"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä tapa voi olla kätevä testailussa ja pienissä ohjelmissa, mutta siinä on omat ongelmansa, kuten näemme myöhemmin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hypotenuusa","tmcname":"osa07-01_hypotenuusa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hypotenuusa(kateetti1: float, kateetti2: float)"}]},{"type":"text","value":", joka saa parametrikseen suorakulmaisen kolmion kateettien pituudet. Funktio palauttaa kolmion hypotenuusan pituuden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ratkaisu lasketaan "},{"type":"element","tagName":"a","properties":{"href":"https://fi.wikipedia.org/wiki/Pythagoraan_lause","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Pythagoraan"}]},{"type":"text","value":" lauseen avulla. Saat laskettua neliöjuuren "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":"-moduulin funktion avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenuusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 5.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenuusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 13.0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hypotenuusa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 1.4142135623730951"}]}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-sisalto","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin sisältö"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-sisalto","ariaLabel":"moduulin sisalto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin dokumentaatio kertoo jokaisesta standardikirjaston moduulista, mitä moduuli sisältää ja kuinka sitä käytetään. Esimerkiksi moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":" dokumentaatio on tässä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://docs.python.org/3/library/math.html"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös tutkia funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"dir"}]},{"type":"text","value":" avulla moduulin sisältöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"dir"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio antaa listan nimistä, jotka moduuli määrittelee:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Erikoismerkit","tmcname":"osa07-02_erikoismerkit"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulissa "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/string.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"string"}]},{"type":"text","value":" on merkkijonovakioita, jotka määrittelevät tiettyjä merkkiryhmiä (esim. pienet kirjaimet ja välimerkit). Tutustu näihin vakioihin ja kirjoita niitä käyttäen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jaa_merkkeihin(merkkijono: str)"}]},{"type":"text","value":", joka saa parametrikseen merkkijonon. Funktio palauttaa tuplen, jossa parametrina saadun merkkijonon merkit on jaettu kolmeen eri merkkijonoon:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ensimmäisessä jonossa on kaikki pienet ja suuret englanninkieliset kirjaimet (vakio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ascii_letters"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Toisessa jonossa on kaikki vakiossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punctuation"}]},{"type":"text","value":" määritellyt välimerkit"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Kolmannessa jonossa on kaikki merkit (mukaan lukien esim. välilyönnit), jotka eivät kuulu kahteen edelliseen ryhmään"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkit tulee tallentaa palautettuihin merkkijonoihin siinä järjestyksessä kuin ne esiintyvät alkuperäisessä merkkijonossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" jaa_merkkeihin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi!!! Toimiiko, mitä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"TmontestiToimiikomit\n!!!,?\nää ä"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Murtoluvuilla laskeminen","tmcname":"osa07-03_murtoluvuilla_laskeminen"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tutustu Pythonin moduuliin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fractions"}]},{"type":"text","value":" ja toteuta sen avulla funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"jaa_palasiksi(maara: int)"}]},{"type":"text","value":", joka saa parametrikseen palasten määrän. Funktio jakaa luvun 1 parametrin mukaisesti yhtä suuriin murtolukupalasiin ja palauttaa nämä palaset listassa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" p "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" jaa_palasiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jaa_palasiksi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1/3\n1/3\n1/3"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5)]"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mikä on moduuli
    • \n
    • Osaat ottaa käyttöön moduulin import-lauseella
    • \n
    • Tiedät, miten moduulin sisällöstä voi etsiä tietoa
    • \n

    Debugging revisited

    Kurssilla on jo moneen otteeseen puhuttu erilaisista debuggausmenetelmistä. Visualisaattori on jo monille tuttu ja vanha kunnon debuggaustulostus toimii aina. Visual Studio Coden debuggeriakin monet ovat jo kokeilleet. Debuggerilla voi olla vaikeuksia selvitä tiedostoja käsittelevästä koodista, mutta siihenkin on olemassa lääke.

    Pythonin versio 3.7 tarjoaa vielä yhden erittäin helppokäyttöisen tavan debuggaukseen, komennon breakpoint().

    Voit lisätä komennon mihin kohtaan tahansa ohjelmaasi, ja kun suoritat ohjelman, pysähtyy suoritus komennon kohdalle. Seuraavassa esimerkki viime viikon tehtävän debuggaamisesta:

    \n \n \n \n \n \n \"7\n \n \n

    Kun koodi pysähtyy breakpoint()-komentoon, avautuu samalla konsolinäkymä, johon on mahdollista kirjoittaa mitä tahansa koodia ja kokeilla miten se toimisi ohjelman kyseisessä kohdassa.

    Komento on erityisen kätevä jos ohjelmasi jokin rivi aiheuttaa virheen, etkä ole ihan varma mistä virhe johtuu. Näissä tilanteissa kannattaa laittaa breakpoint-kutsu juuri ennen virheellistä riviä. Sen jälkeen on debuggerin konsolissa helppo kokeilla, mikä olisi oikea komento juuri siinä kohtaa suoritettavaksi.

    Koodin suoritusta on myös mahdollista jatkaa pysähtymisen jälkeen. Esimerkiksi konsoliin annettu komento continue tai sen lyhennetty versio c jatkaa suoritusta seuraavaan breakpointiin asti. Seuraavassa esimerkki siitä, kun silmukkaa käydään läpi muutamaan kertaan:

    \n \n \n \n \n \n \"7\n \n \n

    Muut debuggerikonsolin komennot selviävät täältä tai antamalla debuggerkonsolissa komento help:

    \n \n

    Tee funktio hypotenuusa(kateetti1: float, kateetti2: float), joka saa parametrikseen suorakulmaisen kolmion kateettien pituudet. Funktio palauttaa kolmion hypotenuusan pituuden.

    Ratkaisu lasketaan Pythagoraan lauseen avulla. Saat laskettua neliöjuuren math-moduulin funktion avulla.

    Esimerkkejä:

    print(hypotenuusa(3,4)) # 5.0\nprint(hypotenuusa(5,12)) # 13.0\nprint(hypotenuusa(1,1)) # 1.4142135623730951

    Moduulin sisältö

    Pythonin dokumentaatio kertoo jokaisesta standardikirjaston moduulista, mitä moduuli sisältää ja kuinka sitä käytetään. Esimerkiksi moduulin math dokumentaatio on tässä:

    Voimme myös tutkia funktion dir avulla moduulin sisältöä:

    import math\n\nprint(dir(math))

    Funktio antaa listan nimistä, jotka moduuli määrittelee:

    ['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

    Moduulissa string on merkkijonovakioita, jotka määrittelevät tiettyjä merkkiryhmiä (esim. pienet kirjaimet ja välimerkit). Tutustu näihin vakioihin ja kirjoita niitä käyttäen funktio jaa_merkkeihin(merkkijono: str), joka saa parametrikseen merkkijonon. Funktio palauttaa tuplen, jossa parametrina saadun merkkijonon merkit on jaettu kolmeen eri merkkijonoon:

      \n
    • Ensimmäisessä jonossa on kaikki pienet ja suuret englanninkieliset kirjaimet (vakio ascii_letters)
    • \n
    • Toisessa jonossa on kaikki vakiossa punctuation määritellyt välimerkit
    • \n
    • Kolmannessa jonossa on kaikki merkit (mukaan lukien esim. välilyönnit), jotka eivät kuulu kahteen edelliseen ryhmään
    • \n

    Merkit tulee tallentaa palautettuihin merkkijonoihin siinä järjestyksessä kuin ne esiintyvät alkuperäisessä merkkijonossa.

    Esimerkki:

    osat = jaa_merkkeihin(\"Tämä on testi!!! Toimiiko, mitä?\")\nprint(osat[0])\nprint(osat[1])\nprint(osat[2])

    TmontestiToimiikomit\n!!!,?\nää ä

    Tutustu Pythonin moduuliin fractions ja toteuta sen avulla funktio jaa_palasiksi(maara: int), joka saa parametrikseen palasten määrän. Funktio jakaa luvun 1 parametrin mukaisesti yhtä suuriin murtolukupalasiin ja palauttaa nämä palaset listassa.

    Esimerkki:

    for p in jaa_palasiksi(3):\n    print(p)\n\nprint()\n\nprint(jaa_palasiksi(5))

    1/3\n1/3\n1/3

    [Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5), Fraction(1, 5)]

    ","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/1-moduulit.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/2-satunnaisuus/page-data.json b/page-data/osa-7/2-satunnaisuus/page-data.json index 590c84365..525b92e51 100644 --- a/page-data/osa-7/2-satunnaisuus/page-data.json +++ b/page-data/osa-7/2-satunnaisuus/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-7/2-satunnaisuus", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":" funktioita"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää satunnaisuutta omissa ohjelmissasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä luvussa tutustutaan standardikirjaston moduuliin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#module-random","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":", joka tarjoaa välineistöä satunnaislukujen generointiin ja muuhun satunnaiseen toiminnallisuuteen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ja seuraavissa luvuissa esiteltävien funktioiden yhteyteen on lisäilty linkkejä standardikirjaston "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"dokumentaatioon"}]},{"type":"text","value":". Linkkejä kannattaa klikkailla ja pikkuhiljaa totutella siihen, miltä dokumentaatio näyttää."}]},{"type":"element","tagName":"h2","properties":{"id":"luvun-arpominen","style":"position:relative;"},"children":[{"type":"text","value":"Luvun arpominen"},{"type":"element","tagName":"a","properties":{"href":"#luvun-arpominen","ariaLabel":"luvun arpominen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.randint","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"randint(a, b)"}]},{"type":"text","value":" antaa satunnaisen kokonaisluvun väliltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":". Esimerkiksi seuraava ohjelma simuloi nopan heittämistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Noppa antaa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulos voisi olla vaikkapa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Noppa antaa: 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma puolestaan heittää noppaa kymmenen kertaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Noppa antaa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulos voisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Noppa antaa: 5\nNoppa antaa: 4\nNoppa antaa: 3\nNoppa antaa: 2\nNoppa antaa: 3\nNoppa antaa: 4\nNoppa antaa: 6\nNoppa antaa: 4\nNoppa antaa: 4\nNoppa antaa: 3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"randint"}]},{"type":"text","value":" toimii eri logiikalla kuin aiemmin käyttämämme funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":", joka luo lukuvälin. Kun kutsumme funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"randint(1, 6)"}]},{"type":"text","value":", lukuväli on 1...6, mutta kun kutsumme funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(1, 6)"}]},{"type":"text","value":", lukuväli on 1...5."}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-funktioita","style":"position:relative;"},"children":[{"type":"text","value":"Lisää funktioita"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-funktioita","ariaLabel":"lisaa funktioita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.shuffle","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"shuffle"}]},{"type":"text","value":" sekoittaa sille annetun tietorakenteen. Esimerkiksi seuraava ohjelma sekoittaa listalla olevat sanat:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" shuffle\n\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nshuffle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['banaani', 'apina', 'cembalo']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"choice"}]},{"type":"text","value":" puolestaan valitsee satunnaisen alkion tietorakenteesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" choice\n\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"choice"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"'cembalo'"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lottorivin-arvonta","style":"position:relative;"},"children":[{"type":"text","value":"Lottorivin arvonta"},{"type":"element","tagName":"a","properties":{"href":"#lottorivin-arvonta","ariaLabel":"lottorivin arvonta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä tilannetta, jossa haluamme arpoa lottorivin. Lotossa on yhteensä 40 numeroa, joista arvotaan 7 numeroa riviin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertainen tapa koettaa arpoa lottorivi on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei ole kuitenkaan toimiva tapa, koska sama numero saattaa tulla useita kertoja riviin. Tarvitsemme jonkin menetelmän, joka varmistaa, että jokainen numero on eri numero."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi mahdollisuus on tallentaa arvotut numerot listaan ja lisätä uusi numero listaan vain, jos sitä ei vielä ole siellä. Voimme jatkaa tätä, kunnes listassa on 7 numeroa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" uusi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme kuitenkin toteuttaa arvonnan myös lyhyemmin funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"shuffle"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" shuffle\n\nkaikki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"41"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nshuffle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kaikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ideana on, että luomme ensin listan, jossa on kaikki numerot väliltä 1–40. Tämän jälkeen sekoitamme listan ja valitsemme sitten 7 ensimmäistä numeroa riviin. Tämän ansiosta meidän ei tarvitse tehdä silmukkaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse asiassa voimme toteuttaa arvonnan vielä helpommin, koska Pythonin standardikirjastossa on myös funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.sample","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"sample"}]},{"type":"text","value":", joka valitsee annetusta tietorakenteesta halutun määrän alkioita:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sample\n\nkaikki_luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"41"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sample"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lottonumerot","tmcname":"osa07-04_lottonumerot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lottonumerot(maara: int, alaraja: int, ylaraja: int)"}]},{"type":"text","value":", joka arpoo annetun määrän satunnaislukuja väliltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alaraja"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ylaraja"}]},{"type":"text","value":", tallentaa ne listaan ja palauttaa listan. Lukujen tulee olla palautetussa listassa suuruusjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska kyseessä ovat lottonumerot, sama numero ei saa esiintyä listassa kahta kertaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lottonumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4\n7\n11\n16\n22\n29\n38"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"mista-satunnaisluvut-tulevat","style":"position:relative;"},"children":[{"type":"text","value":"Mistä satunnaisluvut tulevat?"},{"type":"element","tagName":"a","properties":{"href":"#mista-satunnaisluvut-tulevat","ariaLabel":"mista satunnaisluvut tulevat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":" toiminta perustuu algoritmiin, joka tuottaa satunnaislukuja tietyn lähtöarvon ja matemaattisten operaatioiden avulla. Lähtöarvoa kutsutaan myös nimellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"siemenarvo"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"seed value"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme halutessamme antaa siemenarvon itse funktiolla "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.seed","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"seed"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" seed\n\nseed"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1337"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tästä tulee aina sama satunnaisluku"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun annamme siemenarvon itse, satunnaisuutta käyttävät funktiot antavat samat tulokset ohjelman jokaisella suorituskerralla. Tulokset voivat kuitenkin riippua käytetystä Pythonin versiosta."}]},{"type":"element","tagName":"text-box","properties":{"variant":"info","name":"Aito satunnaisuus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tarkkoja ollaan, moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":" muodostamat luvut eivät ole aitoja satunnaislukuja, vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pseudosatunnaislukuja"}]},{"type":"text","value":". Tietokoneen avulla on vaikea arpoa täysin satunnaisia lukuja, koska sen toiminta on kaikilta osin ennustettavissa. Monissa käyttötarkoituksissa luvut ovat kuitenkin tarpeeksi satunnaisia. Aitoja satunnaislukuja muodostettaessa lähteenä käytetään yleensä jotain tietokoneen ulkopuolista satunnaista ilmiötä, esimerkiksi radioaktiivista taustasäteilyä tai äänentasoa."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Lisätietoa löydät esimerkiksi sivulta "},{"type":"element","tagName":"a","properties":{"href":"https://www.random.org/randomness/"},"children":[{"type":"text","value":"random.org"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Salasanan arpoja, osa 1","tmcname":"osa07-05_salasanan_arpoja_1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio, jonka avulla on mahdollista luoda halutun pituisia satunnaisista pienistä kirjaimista (väliltä a-z) muodostettuja salasanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luo_salasana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"lttehepy\nolsxttjl\ncbjncrzo\ndwxqjdgu\ngpfdcecs\njabyvgar\nxnbbonbl\nktmsjyww\nejhprmel\nrjkoacib"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Salasanan arpoja, osa 2","tmcname":"osa07-06_salasanan_arpoja_2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee paranneltu versio edellisen tehtävän funktiosta. Funktio saa nyt kolme parametria:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos toinen parametri on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", salasanassa on myös (yksi tai useampi) numero"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos kolmas parametri on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", salasanassa on myös (yksi tai useampi) erikoismerkki joukosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!?=+-()#"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Salasanassa täytyy olla parametreista riippumatta aina vähintään yksi kirjain. Voit olettaa, että funktiota kutsutaan aina parametreilla, joilla on mahdollista tuottaa halutunlaisia salasanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luo_hyva_salasana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2?0n+u31\nu=m4nl94\nn#=i6r#(\nda9?zvm?\n7h)!)g?!\na=59x2n5\n(jr6n3b5\n9n(4i+2!\n32+qba#=\nn?b0a7ey"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Noppasimulaatio","tmcname":"osa07-07_noppasimulaatio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään tässä tehtävässä muutamia funktioita, joita on mahdollista käyttää nopanheittoon liittyvissä peleissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Normaalin nopan sijaan tehtävässä käytetään ns. epätransitiivisia noppia, joista on lisää tietoa esim. "},{"type":"element","tagName":"a","properties":{"href":"https://singingbanana.com/dice/article.htm","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tässä artikkelissa"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"a","properties":{"href":"https://www.youtube.com/watch?v=LrIp6CKUlH8","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tässä videossa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytössä on kolme noppaa:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nopassa A on numerot 3, 3, 3, 3, 3, 6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nopassa B on numerot 2, 2, 2, 5, 5, 5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nopassa C on numerot 1, 4, 4, 4, 4, 4"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"heita(noppa: str)"}]},{"type":"text","value":", joka heittää parametrinsa kertomaa noppaa. Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"heita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"heita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"heita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 3 6 3\n2 2 5 2 2 5 5 2 2 5 2 5 5 5 2 5 2 2 2 2\n4 4 4 4 4 1 1 4 4 4 1 4 4 4 4 4 4 4 4 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee vielä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pelaa(noppa1: str, noppa2: str, kertaa: int)"}]},{"type":"text","value":" joka heittää kokonaisluvun kertoman määrän parametreina olevia noppia. Funktio palauttaa tuplen, joka kertoo nopan 1 voittojen lukumäärän, nopan 2 voittojen lukumäärän ja tasapelien lukumäärän."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(292, 708, 0)\n(249, 273, 478)"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Satunnaiset sanat","tmcname":"osa07-08_satunnaiset_sanat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on annettu tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.txt"}]},{"type":"text","value":", joka sisältää englannin kielen sanoja, yksi sana joka rivillä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat(n: int, alku: str)"}]},{"type":"text","value":", joka palauttaa listassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kappaletta satunnaisia sanoja tiedostosta. Kaikkien palautettujen sanojen tulee alkaa annetulla merkkijonolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktiota esim. kutsuttaisiin parametreilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat(3, \"ca\")"}]},{"type":"text","value":", se voisi palauttaa listassa esim. sanat \"cat\", \"car\" ja \"carbon\". Sama sana ei saa esiintyä listassa kahdesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos annetulla merkkijonolla alkavia sanoja ei löydy tarpeeksi annetun kokoisen ryhmän muodostamiseen, funktio tuottaa poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ca\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"cat\ncar\ncarbon"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet moduulin random funktioita
    • \n
    • Osaat hyödyntää satunnaisuutta omissa ohjelmissasi
    • \n

    Tässä luvussa tutustutaan standardikirjaston moduuliin random, joka tarjoaa välineistöä satunnaislukujen generointiin ja muuhun satunnaiseen toiminnallisuuteen.

    Tässä ja seuraavissa luvuissa esiteltävien funktioiden yhteyteen on lisäilty linkkejä standardikirjaston dokumentaatioon. Linkkejä kannattaa klikkailla ja pikkuhiljaa totutella siihen, miltä dokumentaatio näyttää.

    Luvun arpominen

    Funktio randint(a, b) antaa satunnaisen kokonaisluvun väliltä a...b. Esimerkiksi seuraava ohjelma simuloi nopan heittämistä:

    from random import randint\n\nprint(\"Noppa antaa:\", randint(1, 6))

    Ohjelman tulos voisi olla vaikkapa:

    Noppa antaa: 4

    Seuraava ohjelma puolestaan heittää noppaa kymmenen kertaa:

    from random import randint\n\nfor i in range(10):\n    print(\"Noppa antaa:\", randint(1, 6))

    Ohjelman tulos voisi olla seuraava:

    Noppa antaa: 5\nNoppa antaa: 4\nNoppa antaa: 3\nNoppa antaa: 2\nNoppa antaa: 3\nNoppa antaa: 4\nNoppa antaa: 6\nNoppa antaa: 4\nNoppa antaa: 4\nNoppa antaa: 3

    Huomaa, että funktio randint toimii eri logiikalla kuin aiemmin käyttämämme funktio range, joka luo lukuvälin. Kun kutsumme funktiota randint(1, 6), lukuväli on 1...6, mutta kun kutsumme funktiota range(1, 6), lukuväli on 1...5.

    Lisää funktioita

    Funktio shuffle sekoittaa sille annetun tietorakenteen. Esimerkiksi seuraava ohjelma sekoittaa listalla olevat sanat:

    from random import shuffle\n\nsanat = [\"apina\", \"banaani\", \"cembalo\"]\nshuffle(sanat)\nprint(sanat)

    ['banaani', 'apina', 'cembalo']

    Funktio choice puolestaan valitsee satunnaisen alkion tietorakenteesta:

    from random import choice\n\nsanat = [\"apina\", \"banaani\", \"cembalo\"]\nprint(choice(sanat))

    'cembalo'

    Lottorivin arvonta

    Tarkastellaan esimerkkinä tilannetta, jossa haluamme arpoa lottorivin. Lotossa on yhteensä 40 numeroa, joista arvotaan 7 numeroa riviin.

    Yksinkertainen tapa koettaa arpoa lottorivi on seuraava:

    from random import randint\n\nfor i in range(7):\n    print(randint(1, 40))

    Tämä ei ole kuitenkaan toimiva tapa, koska sama numero saattaa tulla useita kertoja riviin. Tarvitsemme jonkin menetelmän, joka varmistaa, että jokainen numero on eri numero.

    Yksi mahdollisuus on tallentaa arvotut numerot listaan ja lisätä uusi numero listaan vain, jos sitä ei vielä ole siellä. Voimme jatkaa tätä, kunnes listassa on 7 numeroa:

    from random import randint\n\nrivi = []\nwhile len(rivi) < 7:\n    uusi = randint(1, 40)\n    if uusi not in rivi:\n        rivi.append(uusi)\n\nprint(rivi)

    Voimme kuitenkin toteuttaa arvonnan myös lyhyemmin funktion shuffle avulla:

    from random import shuffle\n\nkaikki = list(range(1, 41))\nshuffle(kaikki)\nrivi = kaikki[0:7]\nprint(rivi)

    Tässä ideana on, että luomme ensin listan, jossa on kaikki numerot väliltä 1–40. Tämän jälkeen sekoitamme listan ja valitsemme sitten 7 ensimmäistä numeroa riviin. Tämän ansiosta meidän ei tarvitse tehdä silmukkaa.

    Itse asiassa voimme toteuttaa arvonnan vielä helpommin, koska Pythonin standardikirjastossa on myös funktio sample, joka valitsee annetusta tietorakenteesta halutun määrän alkioita:

    from random import sample\n\nkaikki_luvut = list(range(1, 41))\nrivi = sample(kaikki_luvut, 7)\nprint(rivi)

    Tee funktio lottonumerot(maara: int, alaraja: int, ylaraja: int), joka arpoo annetun määrän satunnaislukuja väliltä alaraja...ylaraja, tallentaa ne listaan ja palauttaa listan. Lukujen tulee olla palautetussa listassa suuruusjärjestyksessä.

    Koska kyseessä ovat lottonumerot, sama numero ei saa esiintyä listassa kahta kertaa.

    Esimerkki:

    for numero in lottonumerot(7, 1, 40):\n    print(numero)

    4\n7\n11\n16\n22\n29\n38

    Mistä satunnaisluvut tulevat?

    Moduulin random toiminta perustuu algoritmiin, joka tuottaa satunnaislukuja tietyn lähtöarvon ja matemaattisten operaatioiden avulla. Lähtöarvoa kutsutaan myös nimellä siemenarvo (engl. seed value).

    Voimme halutessamme antaa siemenarvon itse funktiolla seed:

    from random import randint, seed\n\nseed(1337)\n# tästä tulee aina sama satunnaisluku\nprint(randint(1, 100))

    Kun annamme siemenarvon itse, satunnaisuutta käyttävät funktiot antavat samat tulokset ohjelman jokaisella suorituskerralla. Tulokset voivat kuitenkin riippua käytetystä Pythonin versiosta.

    Jos tarkkoja ollaan, moduulin random muodostamat luvut eivät ole aitoja satunnaislukuja, vaan pseudosatunnaislukuja. Tietokoneen avulla on vaikea arpoa täysin satunnaisia lukuja, koska sen toiminta on kaikilta osin ennustettavissa. Monissa käyttötarkoituksissa luvut ovat kuitenkin tarpeeksi satunnaisia. Aitoja satunnaislukuja muodostettaessa lähteenä käytetään yleensä jotain tietokoneen ulkopuolista satunnaista ilmiötä, esimerkiksi radioaktiivista taustasäteilyä tai äänentasoa.

    Lisätietoa löydät esimerkiksi sivulta random.org.

    Tee funktio, jonka avulla on mahdollista luoda halutun pituisia satunnaisista pienistä kirjaimista (väliltä a-z) muodostettuja salasanoja.

    Esimerkki:

    for i in range(10):\n    print(luo_salasana(8))

    lttehepy\nolsxttjl\ncbjncrzo\ndwxqjdgu\ngpfdcecs\njabyvgar\nxnbbonbl\nktmsjyww\nejhprmel\nrjkoacib

    Tee paranneltu versio edellisen tehtävän funktiosta. Funktio saa nyt kolme parametria:

      \n
    • jos toinen parametri on True, salasanassa on myös (yksi tai useampi) numero
    • \n
    • jos kolmas parametri on True, salasanassa on myös (yksi tai useampi) erikoismerkki joukosta !?=+-()#
    • \n

    Salasanassa täytyy olla parametreista riippumatta aina vähintään yksi kirjain. Voit olettaa, että funktiota kutsutaan aina parametreilla, joilla on mahdollista tuottaa halutunlaisia salasanoja.

    Esimerkki:

    for i in range(10):\n    print(luo_hyva_salasana(8, True, True))

    2?0n+u31\nu=m4nl94\nn#=i6r#(\nda9?zvm?\n7h)!)g?!\na=59x2n5\n(jr6n3b5\n9n(4i+2!\n32+qba#=\nn?b0a7ey

    Tehdään tässä tehtävässä muutamia funktioita, joita on mahdollista käyttää nopanheittoon liittyvissä peleissä.

    Normaalin nopan sijaan tehtävässä käytetään ns. epätransitiivisia noppia, joista on lisää tietoa esim. tässä artikkelissa tai tässä videossa.

    Käytössä on kolme noppaa:

      \n
    • Nopassa A on numerot 3, 3, 3, 3, 3, 6
    • \n
    • Nopassa B on numerot 2, 2, 2, 5, 5, 5
    • \n
    • Nopassa C on numerot 1, 4, 4, 4, 4, 4
    • \n

    Tee funktio heita(noppa: str), joka heittää parametrinsa kertomaa noppaa. Esimerkki:

    for i in range(20):\n    print(heita(\"A\"), \" \", end=\"\")\nprint()\nfor i in range(20):\n    print(heita(\"B\"), \" \", end=\"\")\nprint()\nfor i in range(20):\n    print(heita(\"C\"), \" \", end=\"\")

    3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 3 6 3\n2 2 5 2 2 5 5 2 2 5 2 5 5 5 2 5 2 2 2 2\n4 4 4 4 4 1 1 4 4 4 1 4 4 4 4 4 4 4 4 4

    Tee vielä funktio pelaa(noppa1: str, noppa2: str, kertaa: int) joka heittää kokonaisluvun kertoman määrän parametreina olevia noppia. Funktio palauttaa tuplen, joka kertoo nopan 1 voittojen lukumäärän, nopan 2 voittojen lukumäärän ja tasapelien lukumäärän.

    tulos = pelaa(\"A\", \"C\", 1000)\nprint(tulos)\ntulos = pelaa(\"B\", \"B\", 1000)\nprint(tulos)

    (292, 708, 0)\n(249, 273, 478)

    Tehtäväpohjassa on annettu tiedosto sanat.txt, joka sisältää englannin kielen sanoja, yksi sana joka rivillä.

    Kirjoita funktio sanat(n: int, alku: str), joka palauttaa listassa n kappaletta satunnaisia sanoja tiedostosta. Kaikkien palautettujen sanojen tulee alkaa annetulla merkkijonolla.

    Jos funktiota esim. kutsuttaisiin parametreilla sanat(3, \"ca\"), se voisi palauttaa listassa esim. sanat \"cat\", \"car\" ja \"carbon\". Sama sana ei saa esiintyä listassa kahdesti.

    Jos annetulla merkkijonolla alkavia sanoja ei löydy tarpeeksi annetun kokoisen ryhmän muodostamiseen, funktio tuottaa poikkeuksen ValueError.

    Esimerkki:

    lista = sanat(3, \"ca\")\nfor sana in lista:\n    print(sana)

    cat\ncar\ncarbon

    ","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/2-satunnaisuus.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":" funktioita"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hyödyntää satunnaisuutta omissa ohjelmissasi"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä luvussa tutustutaan standardikirjaston moduuliin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#module-random","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":", joka tarjoaa välineistöä satunnaislukujen generointiin ja muuhun satunnaiseen toiminnallisuuteen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ja seuraavissa luvuissa esiteltävien funktioiden yhteyteen on lisäilty linkkejä standardikirjaston "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"dokumentaatioon"}]},{"type":"text","value":". Linkkejä kannattaa klikkailla ja pikkuhiljaa totutella siihen, miltä dokumentaatio näyttää."}]},{"type":"element","tagName":"h2","properties":{"id":"luvun-arpominen","style":"position:relative;"},"children":[{"type":"text","value":"Luvun arpominen"},{"type":"element","tagName":"a","properties":{"href":"#luvun-arpominen","ariaLabel":"luvun arpominen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.randint","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"randint(a, b)"}]},{"type":"text","value":" antaa satunnaisen kokonaisluvun väliltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":". Esimerkiksi seuraava ohjelma simuloi nopan heittämistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Noppa antaa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulos voisi olla vaikkapa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Noppa antaa: 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava ohjelma puolestaan heittää noppaa kymmenen kertaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Noppa antaa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulos voisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Noppa antaa: 5\nNoppa antaa: 4\nNoppa antaa: 3\nNoppa antaa: 2\nNoppa antaa: 3\nNoppa antaa: 4\nNoppa antaa: 6\nNoppa antaa: 4\nNoppa antaa: 4\nNoppa antaa: 3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"randint"}]},{"type":"text","value":" toimii eri logiikalla kuin aiemmin käyttämämme funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range"}]},{"type":"text","value":", joka luo lukuvälin. Kun kutsumme funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"randint(1, 6)"}]},{"type":"text","value":", lukuväli on 1...6, mutta kun kutsumme funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"range(1, 6)"}]},{"type":"text","value":", lukuväli on 1...5."}]},{"type":"element","tagName":"h2","properties":{"id":"lisaa-funktioita","style":"position:relative;"},"children":[{"type":"text","value":"Lisää funktioita"},{"type":"element","tagName":"a","properties":{"href":"#lisaa-funktioita","ariaLabel":"lisaa funktioita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.shuffle","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"shuffle"}]},{"type":"text","value":" sekoittaa sille annetun tietorakenteen. Esimerkiksi seuraava ohjelma sekoittaa listalla olevat sanat:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" shuffle\n\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nshuffle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['banaani', 'apina', 'cembalo']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"choice"}]},{"type":"text","value":" puolestaan valitsee satunnaisen alkion tietorakenteesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" choice\n\nsanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"apina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaani\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"cembalo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"choice"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"'cembalo'"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lottorivin-arvonta","style":"position:relative;"},"children":[{"type":"text","value":"Lottorivin arvonta"},{"type":"element","tagName":"a","properties":{"href":"#lottorivin-arvonta","ariaLabel":"lottorivin arvonta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä tilannetta, jossa haluamme arpoa lottorivin. Lotossa on yhteensä 40 numeroa, joista arvotaan 7 numeroa riviin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksinkertainen tapa koettaa arpoa lottorivi on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei ole kuitenkaan toimiva tapa, koska sama numero saattaa tulla useita kertoja riviin. Tarvitsemme jonkin menetelmän, joka varmistaa, että jokainen numero on eri numero."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yksi mahdollisuus on tallentaa arvotut numerot listaan ja lisätä uusi numero listaan vain, jos sitä ei vielä ole siellä. Voimme jatkaa tätä, kunnes listassa on 7 numeroa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint\n\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"while"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" uusi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme kuitenkin toteuttaa arvonnan myös lyhyemmin funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"shuffle"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" shuffle\n\nkaikki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"41"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nshuffle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kaikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä ideana on, että luomme ensin listan, jossa on kaikki numerot väliltä 1–40. Tämän jälkeen sekoitamme listan ja valitsemme sitten 7 ensimmäistä numeroa riviin. Tämän ansiosta meidän ei tarvitse tehdä silmukkaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Itse asiassa voimme toteuttaa arvonnan vielä helpommin, koska Pythonin standardikirjastossa on myös funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.sample","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"sample"}]},{"type":"text","value":", joka valitsee annetusta tietorakenteesta halutun määrän alkioita:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sample\n\nkaikki_luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"41"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nrivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sample"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kaikki_luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lottonumerot","tmcname":"osa07-04_lottonumerot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lottonumerot(maara: int, alaraja: int, ylaraja: int)"}]},{"type":"text","value":", joka arpoo annetun määrän satunnaislukuja väliltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"alaraja"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ylaraja"}]},{"type":"text","value":", tallentaa ne listaan ja palauttaa listan. Lukujen tulee olla palautetussa listassa suuruusjärjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska kyseessä ovat lottonumerot, sama numero ei saa esiintyä listassa kahta kertaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lottonumerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"40"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"4\n7\n11\n16\n22\n29\n38"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"mista-satunnaisluvut-tulevat","style":"position:relative;"},"children":[{"type":"text","value":"Mistä satunnaisluvut tulevat?"},{"type":"element","tagName":"a","properties":{"href":"#mista-satunnaisluvut-tulevat","ariaLabel":"mista satunnaisluvut tulevat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":" toiminta perustuu algoritmiin, joka tuottaa satunnaislukuja tietyn lähtöarvon ja matemaattisten operaatioiden avulla. Lähtöarvoa kutsutaan myös nimellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"siemenarvo"}]},{"type":"text","value":" (engl. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"seed value"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme halutessamme antaa siemenarvon itse funktiolla "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/random.html?highlight=random#random.seed","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"seed"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" seed\n\nseed"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1337"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tästä tulee aina sama satunnaisluku"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun annamme siemenarvon itse, satunnaisuutta käyttävät funktiot antavat samat tulokset ohjelman jokaisella suorituskerralla. Tulokset voivat kuitenkin riippua käytetystä Pythonin versiosta."}]},{"type":"element","tagName":"text-box","properties":{"variant":"info","name":"Aito satunnaisuus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tarkkoja ollaan, moduulin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"random"}]},{"type":"text","value":" muodostamat luvut eivät ole aitoja satunnaislukuja, vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"pseudosatunnaislukuja"}]},{"type":"text","value":". Tietokoneen avulla on vaikea arpoa täysin satunnaisia lukuja, koska sen toiminta on kaikilta osin ennustettavissa. Monissa käyttötarkoituksissa luvut ovat kuitenkin tarpeeksi satunnaisia. Aitoja satunnaislukuja muodostettaessa lähteenä käytetään yleensä jotain tietokoneen ulkopuolista satunnaista ilmiötä, esimerkiksi radioaktiivista taustasäteilyä tai äänentasoa."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Lisätietoa löydät esimerkiksi sivulta "},{"type":"element","tagName":"a","properties":{"href":"https://www.random.org/randomness/"},"children":[{"type":"text","value":"random.org"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Salasanan arpoja, osa 1","tmcname":"osa07-05_salasanan_arpoja_1"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio, jonka avulla on mahdollista luoda halutun pituisia satunnaisista pienistä kirjaimista (väliltä a-z) muodostettuja salasanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luo_salasana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"lttehepy\nolsxttjl\ncbjncrzo\ndwxqjdgu\ngpfdcecs\njabyvgar\nxnbbonbl\nktmsjyww\nejhprmel\nrjkoacib"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Salasanan arpoja, osa 2","tmcname":"osa07-06_salasanan_arpoja_2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee paranneltu versio edellisen tehtävän funktiosta. Funktio saa nyt kolme parametria:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos toinen parametri on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", salasanassa on myös (yksi tai useampi) numero"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"jos kolmas parametri on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", salasanassa on myös (yksi tai useampi) erikoismerkki joukosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!?=+-()#"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Salasanassa täytyy olla parametreista riippumatta aina vähintään yksi kirjain. Voit olettaa, että funktiota kutsutaan aina parametreilla, joilla on mahdollista tuottaa halutunlaisia salasanoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luo_hyva_salasana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2?0n+u31\nu=m4nl94\nn#=i6r#(\nda9?zvm?\n7h)!)g?!\na=59x2n5\n(jr6n3b5\n9n(4i+2!\n32+qba#=\nn?b0a7ey"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Noppasimulaatio","tmcname":"osa07-07_noppasimulaatio"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehdään tässä tehtävässä muutamia funktioita, joita on mahdollista käyttää nopanheittoon liittyvissä peleissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Normaalin nopan sijaan tehtävässä käytetään ns. epätransitiivisia noppia, joista on lisää tietoa esim. "},{"type":"element","tagName":"a","properties":{"href":"https://singingbanana.com/dice/article.htm","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tässä artikkelissa"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"a","properties":{"href":"https://www.youtube.com/watch?v=LrIp6CKUlH8","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tässä videossa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytössä on kolme noppaa:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nopassa A on numerot 3, 3, 3, 3, 3, 6"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nopassa B on numerot 2, 2, 2, 5, 5, 5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Nopassa C on numerot 1, 4, 4, 4, 4, 4"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"heita(noppa: str)"}]},{"type":"text","value":", joka heittää parametrinsa kertomaa noppaa. Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"heita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"heita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"heita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" end"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 3 6 3\n2 2 5 2 2 5 5 2 2 5 2 5 5 5 2 5 2 2 2 2\n4 4 4 4 4 1 1 4 4 4 1 4 4 4 4 4 4 4 4 4"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee vielä funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pelaa(noppa1: str, noppa2: str, kertaa: int)"}]},{"type":"text","value":" joka heittää kokonaisluvun kertoman määrän parametreina olevia noppia. Funktio palauttaa tuplen, joka kertoo nopan 1 voittojen lukumäärän, nopan 2 voittojen lukumäärän ja tasapelien lukumäärän."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"C\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(292, 708, 0)\n(249, 273, 478)"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Satunnaiset sanat","tmcname":"osa07-08_satunnaiset_sanat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on annettu tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.txt"}]},{"type":"text","value":", joka sisältää englannin kielen sanoja, yksi sana joka rivillä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat(n: int, alku: str)"}]},{"type":"text","value":", joka palauttaa listassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" kappaletta satunnaisia sanoja tiedostosta. Kaikkien palautettujen sanojen tulee alkaa annetulla merkkijonolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos funktiota esim. kutsuttaisiin parametreilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat(3, \"ca\")"}]},{"type":"text","value":", se voisi palauttaa listassa esim. sanat \"cat\", \"car\" ja \"carbon\". Sama sana ei saa esiintyä listassa kahdesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos annetulla merkkijonolla alkavia sanoja ei löydy tarpeeksi annetun kokoisen ryhmän muodostamiseen, funktio tuottaa poikkeuksen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ca\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"cat\ncar\ncarbon"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet moduulin random funktioita
    • \n
    • Osaat hyödyntää satunnaisuutta omissa ohjelmissasi
    • \n

    Tässä luvussa tutustutaan standardikirjaston moduuliin random, joka tarjoaa välineistöä satunnaislukujen generointiin ja muuhun satunnaiseen toiminnallisuuteen.

    Tässä ja seuraavissa luvuissa esiteltävien funktioiden yhteyteen on lisäilty linkkejä standardikirjaston dokumentaatioon. Linkkejä kannattaa klikkailla ja pikkuhiljaa totutella siihen, miltä dokumentaatio näyttää.

    Luvun arpominen

    Funktio randint(a, b) antaa satunnaisen kokonaisluvun väliltä a...b. Esimerkiksi seuraava ohjelma simuloi nopan heittämistä:

    from random import randint\n\nprint(\"Noppa antaa:\", randint(1, 6))

    Ohjelman tulos voisi olla vaikkapa:

    Noppa antaa: 4

    Seuraava ohjelma puolestaan heittää noppaa kymmenen kertaa:

    from random import randint\n\nfor i in range(10):\n    print(\"Noppa antaa:\", randint(1, 6))

    Ohjelman tulos voisi olla seuraava:

    Noppa antaa: 5\nNoppa antaa: 4\nNoppa antaa: 3\nNoppa antaa: 2\nNoppa antaa: 3\nNoppa antaa: 4\nNoppa antaa: 6\nNoppa antaa: 4\nNoppa antaa: 4\nNoppa antaa: 3

    Huomaa, että funktio randint toimii eri logiikalla kuin aiemmin käyttämämme funktio range, joka luo lukuvälin. Kun kutsumme funktiota randint(1, 6), lukuväli on 1...6, mutta kun kutsumme funktiota range(1, 6), lukuväli on 1...5.

    Lisää funktioita

    Funktio shuffle sekoittaa sille annetun tietorakenteen. Esimerkiksi seuraava ohjelma sekoittaa listalla olevat sanat:

    from random import shuffle\n\nsanat = [\"apina\", \"banaani\", \"cembalo\"]\nshuffle(sanat)\nprint(sanat)

    ['banaani', 'apina', 'cembalo']

    Funktio choice puolestaan valitsee satunnaisen alkion tietorakenteesta:

    from random import choice\n\nsanat = [\"apina\", \"banaani\", \"cembalo\"]\nprint(choice(sanat))

    'cembalo'

    Lottorivin arvonta

    Tarkastellaan esimerkkinä tilannetta, jossa haluamme arpoa lottorivin. Lotossa on yhteensä 40 numeroa, joista arvotaan 7 numeroa riviin.

    Yksinkertainen tapa koettaa arpoa lottorivi on seuraava:

    from random import randint\n\nfor i in range(7):\n    print(randint(1, 40))

    Tämä ei ole kuitenkaan toimiva tapa, koska sama numero saattaa tulla useita kertoja riviin. Tarvitsemme jonkin menetelmän, joka varmistaa, että jokainen numero on eri numero.

    Yksi mahdollisuus on tallentaa arvotut numerot listaan ja lisätä uusi numero listaan vain, jos sitä ei vielä ole siellä. Voimme jatkaa tätä, kunnes listassa on 7 numeroa:

    from random import randint\n\nrivi = []\nwhile len(rivi) < 7:\n    uusi = randint(1, 40)\n    if uusi not in rivi:\n        rivi.append(uusi)\n\nprint(rivi)

    Voimme kuitenkin toteuttaa arvonnan myös lyhyemmin funktion shuffle avulla:

    from random import shuffle\n\nkaikki = list(range(1, 41))\nshuffle(kaikki)\nrivi = kaikki[0:7]\nprint(rivi)

    Tässä ideana on, että luomme ensin listan, jossa on kaikki numerot väliltä 1–40. Tämän jälkeen sekoitamme listan ja valitsemme sitten 7 ensimmäistä numeroa riviin. Tämän ansiosta meidän ei tarvitse tehdä silmukkaa.

    Itse asiassa voimme toteuttaa arvonnan vielä helpommin, koska Pythonin standardikirjastossa on myös funktio sample, joka valitsee annetusta tietorakenteesta halutun määrän alkioita:

    from random import sample\n\nkaikki_luvut = list(range(1, 41))\nrivi = sample(kaikki_luvut, 7)\nprint(rivi)

    Tee funktio lottonumerot(maara: int, alaraja: int, ylaraja: int), joka arpoo annetun määrän satunnaislukuja väliltä alaraja...ylaraja, tallentaa ne listaan ja palauttaa listan. Lukujen tulee olla palautetussa listassa suuruusjärjestyksessä.

    Koska kyseessä ovat lottonumerot, sama numero ei saa esiintyä listassa kahta kertaa.

    Esimerkki:

    for numero in lottonumerot(7, 1, 40):\n    print(numero)

    4\n7\n11\n16\n22\n29\n38

    Mistä satunnaisluvut tulevat?

    Moduulin random toiminta perustuu algoritmiin, joka tuottaa satunnaislukuja tietyn lähtöarvon ja matemaattisten operaatioiden avulla. Lähtöarvoa kutsutaan myös nimellä siemenarvo (engl. seed value).

    Voimme halutessamme antaa siemenarvon itse funktiolla seed:

    from random import randint, seed\n\nseed(1337)\n# tästä tulee aina sama satunnaisluku\nprint(randint(1, 100))

    Kun annamme siemenarvon itse, satunnaisuutta käyttävät funktiot antavat samat tulokset ohjelman jokaisella suorituskerralla. Tulokset voivat kuitenkin riippua käytetystä Pythonin versiosta.

    Jos tarkkoja ollaan, moduulin random muodostamat luvut eivät ole aitoja satunnaislukuja, vaan pseudosatunnaislukuja. Tietokoneen avulla on vaikea arpoa täysin satunnaisia lukuja, koska sen toiminta on kaikilta osin ennustettavissa. Monissa käyttötarkoituksissa luvut ovat kuitenkin tarpeeksi satunnaisia. Aitoja satunnaislukuja muodostettaessa lähteenä käytetään yleensä jotain tietokoneen ulkopuolista satunnaista ilmiötä, esimerkiksi radioaktiivista taustasäteilyä tai äänentasoa.

    Lisätietoa löydät esimerkiksi sivulta random.org.

    Tee funktio, jonka avulla on mahdollista luoda halutun pituisia satunnaisista pienistä kirjaimista (väliltä a-z) muodostettuja salasanoja.

    Esimerkki:

    for i in range(10):\n    print(luo_salasana(8))

    lttehepy\nolsxttjl\ncbjncrzo\ndwxqjdgu\ngpfdcecs\njabyvgar\nxnbbonbl\nktmsjyww\nejhprmel\nrjkoacib

    Tee paranneltu versio edellisen tehtävän funktiosta. Funktio saa nyt kolme parametria:

      \n
    • jos toinen parametri on True, salasanassa on myös (yksi tai useampi) numero
    • \n
    • jos kolmas parametri on True, salasanassa on myös (yksi tai useampi) erikoismerkki joukosta !?=+-()#
    • \n

    Salasanassa täytyy olla parametreista riippumatta aina vähintään yksi kirjain. Voit olettaa, että funktiota kutsutaan aina parametreilla, joilla on mahdollista tuottaa halutunlaisia salasanoja.

    Esimerkki:

    for i in range(10):\n    print(luo_hyva_salasana(8, True, True))

    2?0n+u31\nu=m4nl94\nn#=i6r#(\nda9?zvm?\n7h)!)g?!\na=59x2n5\n(jr6n3b5\n9n(4i+2!\n32+qba#=\nn?b0a7ey

    Tehdään tässä tehtävässä muutamia funktioita, joita on mahdollista käyttää nopanheittoon liittyvissä peleissä.

    Normaalin nopan sijaan tehtävässä käytetään ns. epätransitiivisia noppia, joista on lisää tietoa esim. tässä artikkelissa tai tässä videossa.

    Käytössä on kolme noppaa:

      \n
    • Nopassa A on numerot 3, 3, 3, 3, 3, 6
    • \n
    • Nopassa B on numerot 2, 2, 2, 5, 5, 5
    • \n
    • Nopassa C on numerot 1, 4, 4, 4, 4, 4
    • \n

    Tee funktio heita(noppa: str), joka heittää parametrinsa kertomaa noppaa. Esimerkki:

    for i in range(20):\n    print(heita(\"A\"), \" \", end=\"\")\nprint()\nfor i in range(20):\n    print(heita(\"B\"), \" \", end=\"\")\nprint()\nfor i in range(20):\n    print(heita(\"C\"), \" \", end=\"\")

    3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 3 6 3\n2 2 5 2 2 5 5 2 2 5 2 5 5 5 2 5 2 2 2 2\n4 4 4 4 4 1 1 4 4 4 1 4 4 4 4 4 4 4 4 4

    Tee vielä funktio pelaa(noppa1: str, noppa2: str, kertaa: int) joka heittää kokonaisluvun kertoman määrän parametreina olevia noppia. Funktio palauttaa tuplen, joka kertoo nopan 1 voittojen lukumäärän, nopan 2 voittojen lukumäärän ja tasapelien lukumäärän.

    tulos = pelaa(\"A\", \"C\", 1000)\nprint(tulos)\ntulos = pelaa(\"B\", \"B\", 1000)\nprint(tulos)

    (292, 708, 0)\n(249, 273, 478)

    Tehtäväpohjassa on annettu tiedosto sanat.txt, joka sisältää englannin kielen sanoja, yksi sana joka rivillä.

    Kirjoita funktio sanat(n: int, alku: str), joka palauttaa listassa n kappaletta satunnaisia sanoja tiedostosta. Kaikkien palautettujen sanojen tulee alkaa annetulla merkkijonolla.

    Jos funktiota esim. kutsuttaisiin parametreilla sanat(3, \"ca\"), se voisi palauttaa listassa esim. sanat \"cat\", \"car\" ja \"carbon\". Sama sana ei saa esiintyä listassa kahdesti.

    Jos annetulla merkkijonolla alkavia sanoja ei löydy tarpeeksi annetun kokoisen ryhmän muodostamiseen, funktio tuottaa poikkeuksen ValueError.

    Esimerkki:

    lista = sanat(3, \"ca\")\nfor sana in lista:\n    print(sana)

    cat\ncar\ncarbon

    ","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/2-satunnaisuus.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/3-aikojen-kasittely/page-data.json b/page-data/osa-7/3-aikojen-kasittely/page-data.json index 30204764d..5794bed8d 100644 --- a/page-data/osa-7/3-aikojen-kasittely/page-data.json +++ b/page-data/osa-7/3-aikojen-kasittely/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-7/3-aikojen-kasittely", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät tavan käsitellä päivämääriä ja kellonaikoja Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa ja käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"datetime"}]},{"type":"text","value":"-olioita"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat vertailla päivämääriä ja kellonaikoja toisiinsa ja laskea niiden erotuksia"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"aikaolio","style":"position:relative;"},"children":[{"type":"text","value":"Aikaolio"},{"type":"element","tagName":"a","properties":{"href":"#aikaolio","ariaLabel":"aikaolio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"datetime"}]},{"type":"text","value":" funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime.now","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"now"}]},{"type":"text","value":" antaa aikaolion, jossa on nykyinen päivämäärä ja kellonaika. Voimme esimerkiksi tulostaa nykyhetken päivämäärän ja kellonajan näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2020-10-13 12:46:49.311393"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa muodostaa aikaolio on määrittää ajanhetki itse:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1952-12-24 00:00:00"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun emme antaneet kellonaikaa, oletuksena on, että kyseessä on keskiyö."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme hakea aikaoliosta ajan osia tähän tapaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Päivä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"day"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kuukausi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vuosi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"year"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päivä: 24\nKuukausi: 12\nVuosi: 1952"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaoliolle voidaan antaa myös kellonaika halutulla tarkkuudella. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\npv1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"00"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 30.6.2020 klo 13.00"}]},{"type":"text","value":"\npv2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"18"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 30.6.2020 klo 18.45"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"aikojen-vertailu-ja-ero","style":"position:relative;"},"children":[{"type":"text","value":"Aikojen vertailu ja ero"},{"type":"element","tagName":"a","properties":{"href":"#aikojen-vertailu-ja-ero","ariaLabel":"aikojen vertailu ja ero permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme vertailla aikoja samaan tapaan kuin lukuja käyttämällä tuttuja vertailuoperaattoreita:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\nnyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei ole vielä juhannus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hyvää juhannusta!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juhannus on mennyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Juhannus on mennyt"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös laskea kahden ajankohdan eron vähennyslaskuna:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\nnyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" juhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" nyt\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juhannukseen on vielä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"days"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"päivää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Juhannukseen on vielä 37 päivää"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että vähennyslaskun tuloksena on "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#timedelta-objects","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"timedelta"}]},{"type":"text","value":"-olio, jolta voi kysyä vain rajoitetusti ajan yksikköjä. Voimme kysyä päivien määrän, mutta emme voi kysyä esimerkiksi vuosien määrää, koska vuoden pituus vaihtelee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Timedelta-olion avulla on myös mahdollista selvittää, mikä ajanhetki saadaan kun tietty aika (viikkoina ja päivinä) lisätään johonkin ajanhetkeen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" timedelta\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nviikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" timedelta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"days"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviikon_paasta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" juhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" viikko\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kun viikko juhannuksesta kuluu on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikon_paasta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npitka_aika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" timedelta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"weeks"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" days"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kun juhannuksesta kuluu 32 viikkoa ja 15 päivää on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" juhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" pitka_aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun viikko juhannuksesta kuluu on 2020-06-27 00:00:00\nKun juhannuksesta kuluu 32 viikkoa ja 15 päivää on 2021-02-14 00:00:00"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Timedelta-olio toimii viikkojen ja päivien lisäksi tarkemmallakin tasolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkeskiyo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nerotus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" keskiyo"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nyt\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"keskiyöhön on vielä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"erotus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"seconds"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" sekuntia\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"keskiyöhön on vielä 8188 sekuntia"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuinka vanha","tmcname":"osa07-09_kuinka_vanha"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän syntymäajan (erikseen päivä, kuukausi ja vuosi) ja tulostaa, kuinka monta päivää vanha käyttäjä oli 31.12.1999 seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nKuukausi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nVuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1979"}]},{"type":"text","value":"\nOlit 7417 päivää vanha, kun vuosituhat vaihtui."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"28"}]},{"type":"text","value":"\nKuukausi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nVuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2005"}]},{"type":"text","value":"\nEt ollut syntynyt, kun vuosituhat vaihtui."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että kaikki annetut päivä-kuukausi-vuosi-yhdistelmät ovat mahdollisia (eli käyttäjä ei siis anna esim. syötettä 31.2.1999)."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Henkilötunnus oikein?","tmcname":"osa07-10_henkilotunnus_oikein"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"onko_validi(hetu: str)"}]},{"type":"text","value":", joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" sen mukaan, onko annettu henkilötunnus oikea. Henkilötunnus on muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ppkkvvXyyyz"}]},{"type":"text","value":", jossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ppkkvv"}]},{"type":"text","value":" kertoo syntymäajan (päivä/kuukausi/vuosi), "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"X"}]},{"type":"text","value":" on syntymävuosisadasta riippuva välimerkki, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yyy"}]},{"type":"text","value":" henkilökohtainen yksilönumero ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"z"}]},{"type":"text","value":" tarkistemerkki."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee tarkastaa, että"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"alkuosassa on ppkkvv-muodossa oleva päivämäärä, joka on olemassa oleva päivämäärä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"välimerkki on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" (1800-luku), "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" (1900-luku) tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"A"}]},{"type":"text","value":" (2000-luku) ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"lopussa oleva tarkastusmerkki on oikein."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastusmerkki lasketaan jakamalla syntymäajasta ja yksilönumerosta muodostuva numerosarja 31:llä ja ottamalla tästä jakojäännös. Merkki valitaan sitten jakojäännöksen mukaisesta indeksistä merkkijonosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"0123456789ABCDEFHJKLMNPRSTUVWXY"}]},{"type":"text","value":". Esimerkiksi jos jakojäännös on 12, valitaan indeksissä 12 oleva merkki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"C"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätietoa laskemisesta löydät esimerkiksi "},{"type":"element","tagName":"a","properties":{"href":"https://dvv.fi/henkilotunnus","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Digi- ja väestötietoviraston sivuilta"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"HUOM!"}]},{"type":"text","value":" Pidä huolta, ettet jaa omaa henkilötunnustasi esimerkiksi testikoodin mukana, jos kysyt neuvoja tehtävään kurssin keskustelualueella tai muualla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oikeamuotoisia henkilötunnuksia testaamiseen ovat esimerkiksi seuraavat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"230827-906F"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"120488+246L"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"310823A9877"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"aikojen-muotoilu","style":"position:relative;"},"children":[{"type":"text","value":"Aikojen muotoilu"},{"type":"element","tagName":"a","properties":{"href":"#aikojen-muotoilu","ariaLabel":"aikojen muotoilu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme muotoilla ajanhetken haluamallamme tavalla "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.date.strftime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"strftime"}]},{"type":"text","value":"-metodin avulla. Esimerkiksi seuraava koodi tulostaa nykyisen päivämäärän muodossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pp.kk.vvvv"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strftime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"%d.%m.%Y\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"04.02.2020"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ajan muotoilussa käytetään tiettyjä kirjainlyhenteitä. Seuraavassa listassa on joitakin mahdollisia lyhenteitä (täydellinen lista on Pythonin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/time.html#time.strftime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"dokumentaatiossa"}]},{"type":"text","value":"):"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"left"},"children":[{"type":"text","value":"Lyhenne"}]},{"type":"element","tagName":"th","properties":{"align":"left"},"children":[{"type":"text","value":"Merkitys"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%d"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"päivä (01–31)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%m"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"kuukausi (01–12)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%Y"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"vuosi nelinumeroisena"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%H"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"tunnit 24 tunnin formaatissa"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%M"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"minuutit (00–59)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%S"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"sekunnit (00–59)"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös tehdä muotoilun toiseen suuntaan, jos esimerkiksi haluamme muuttaa käyttäjän antaman ajanhetken aikaolioksi. Tämä onnistuu metodilla "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime.strptime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"strptime"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\nsyote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna syntymäpäiväsi muodossa pv.kk.vvvv: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strptime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"%d.%m.%Y\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" aika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Synnyit viime vuosituhannella\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Synnyit tällä vuosituhannella\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna syntymäpäiväsi muodossa pv.kk.vvvv: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5.11.1986"}]},{"type":"text","value":"\nSynnyit viime vuosituhannella"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Ruutuaika","tmcname":"osa07-11_ruutuaika"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa kirjoitetaan käyttäjän määrittelemään tiedostoon \"ruutuaikoja\", eli käyttäjän television, tietokoneen ja mobiililaitteen ääressä tiettyinä päivinä viettämää aikaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kesakuun_loppu.txt"}]},{"type":"text","value":"\nAloituspäivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"24.6.2020"}]},{"type":"text","value":"\nMontako päivää: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna ruutuajat kunakin päivänä minuutteina (TV tietokone mobiililaite):\nRuutuaika 24.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"60 120 0"}]},{"type":"text","value":"\nRuutuaika 25.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0 0 0"}]},{"type":"text","value":"\nRuutuaika 26.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"180 0 0"}]},{"type":"text","value":"\nRuutuaika 27.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"25 240 15"}]},{"type":"text","value":"\nRuutuaika 28.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"45 90 5"}]},{"type":"text","value":"\nTiedot tallennettu tiedostoon kesakuun_loppu.txt"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kunkin päivän riville on siis annettu välilyönnillä eroteltuna kolme minuuttimäärää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tallentaa tilaston ruutuajoista tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kesakuun_loppu.txt"}]},{"type":"text","value":", joka näyttää yllä olevalla syötteellä seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ajanjakso: 24.06.2020-28.06.2020\nYht. minuutteja: 780\nKeskim. minuutteja: 156.0\n24.06.2020: 60/120/0\n25.06.2020: 0/0/0\n26.06.2020: 180/0/0\n27.06.2020: 25/240/15\n28.06.2020: 45/90/5"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät tavan käsitellä päivämääriä ja kellonaikoja Pythonissa
    • \n
    • Osaat muodostaa ja käyttää datetime-olioita
    • \n
    • Osaat vertailla päivämääriä ja kellonaikoja toisiinsa ja laskea niiden erotuksia
    • \n

    Aikaolio

    Moduulin datetime funktio now antaa aikaolion, jossa on nykyinen päivämäärä ja kellonaika. Voimme esimerkiksi tulostaa nykyhetken päivämäärän ja kellonajan näin:

    from datetime import datetime\n\naika = datetime.now()\nprint(aika)

    2020-10-13 12:46:49.311393

    Toinen tapa muodostaa aikaolio on määrittää ajanhetki itse:

    from datetime import datetime\n\naika = datetime(1952, 12, 24)\nprint(aika)

    1952-12-24 00:00:00

    Kun emme antaneet kellonaikaa, oletuksena on, että kyseessä on keskiyö.

    Voimme hakea aikaoliosta ajan osia tähän tapaan:

    from datetime import datetime\n\naika = datetime(1952, 12, 24)\nprint(\"Päivä:\", aika.day)\nprint(\"Kuukausi:\", aika.month)\nprint(\"Vuosi:\", aika.year)

    Päivä: 24\nKuukausi: 12\nVuosi: 1952

    Aikaoliolle voidaan antaa myös kellonaika halutulla tarkkuudella. Esimerkiksi:

    from datetime import datetime\n\npv1 = datetime(2020, 6, 30, 13, 00) # 30.6.2020 klo 13.00\npv2 = datetime(2020, 6, 30, 18, 45) # 30.6.2020 klo 18.45

    Aikojen vertailu ja ero

    Voimme vertailla aikoja samaan tapaan kuin lukuja käyttämällä tuttuja vertailuoperaattoreita:

    from datetime import datetime\n\nnyt = datetime.now()\njuhannus = datetime(2020, 6, 20)\n\nif nyt < juhannus:\n    print(\"Ei ole vielä juhannus\")\nelif nyt == juhannus:\n    print(\"Hyvää juhannusta!\")\nelif nyt > juhannus:\n    print(\"Juhannus on mennyt\")

    Juhannus on mennyt

    Voimme myös laskea kahden ajankohdan eron vähennyslaskuna:

    from datetime import datetime\n\nnyt = datetime.now()\njuhannus = datetime(2020, 6, 20)\n\nero = juhannus - nyt\nprint(\"Juhannukseen on vielä\", ero.days, \"päivää\")

    Juhannukseen on vielä 37 päivää

    Huomaa, että vähennyslaskun tuloksena on timedelta-olio, jolta voi kysyä vain rajoitetusti ajan yksikköjä. Voimme kysyä päivien määrän, mutta emme voi kysyä esimerkiksi vuosien määrää, koska vuoden pituus vaihtelee.

    Timedelta-olion avulla on myös mahdollista selvittää, mikä ajanhetki saadaan kun tietty aika (viikkoina ja päivinä) lisätään johonkin ajanhetkeen:

    from datetime import datetime, timedelta\njuhannus = datetime(2020, 6, 20)\n\nviikko = timedelta(days=7)\nviikon_paasta = juhannus + viikko\n\nprint(\"Kun viikko juhannuksesta kuluu on\", viikon_paasta)\n\npitka_aika = timedelta(weeks=32, days=15)\n\nprint(\"Kun juhannuksesta kuluu 32 viikkoa ja 15 päivää on\", juhannus + pitka_aika)

    Kun viikko juhannuksesta kuluu on 2020-06-27 00:00:00\nKun juhannuksesta kuluu 32 viikkoa ja 15 päivää on 2021-02-14 00:00:00

    Timedelta-olio toimii viikkojen ja päivien lisäksi tarkemmallakin tasolla:

    nyt = datetime.now()\nkeskiyo = datetime(2020, 6, 30)\nerotus = keskiyo-nyt\nprint(f\"keskiyöhön on vielä {erotus.seconds} sekuntia\")

    keskiyöhön on vielä 8188 sekuntia

    Tee ohjelma, joka kysyy käyttäjän syntymäajan (erikseen päivä, kuukausi ja vuosi) ja tulostaa, kuinka monta päivää vanha käyttäjä oli 31.12.1999 seuraavan esimerkin mukaisesti:

    Päivä: 10\nKuukausi: 9\nVuosi: 1979\nOlit 7417 päivää vanha, kun vuosituhat vaihtui.

    Päivä: 28\nKuukausi: 3\nVuosi: 2005\nEt ollut syntynyt, kun vuosituhat vaihtui.

    Voit olettaa, että kaikki annetut päivä-kuukausi-vuosi-yhdistelmät ovat mahdollisia (eli käyttäjä ei siis anna esim. syötettä 31.2.1999).

    Tee funktio onko_validi(hetu: str), joka palauttaa True tai False sen mukaan, onko annettu henkilötunnus oikea. Henkilötunnus on muotoa ppkkvvXyyyz, jossa ppkkvv kertoo syntymäajan (päivä/kuukausi/vuosi), X on syntymävuosisadasta riippuva välimerkki, yyy henkilökohtainen yksilönumero ja z tarkistemerkki.

    Ohjelman tulee tarkastaa, että

      \n
    • alkuosassa on ppkkvv-muodossa oleva päivämäärä, joka on olemassa oleva päivämäärä
    • \n
    • välimerkki on + (1800-luku), - (1900-luku) tai A (2000-luku) ja
    • \n
    • lopussa oleva tarkastusmerkki on oikein.
    • \n

    Tarkastusmerkki lasketaan jakamalla syntymäajasta ja yksilönumerosta muodostuva numerosarja 31:llä ja ottamalla tästä jakojäännös. Merkki valitaan sitten jakojäännöksen mukaisesta indeksistä merkkijonosta 0123456789ABCDEFHJKLMNPRSTUVWXY. Esimerkiksi jos jakojäännös on 12, valitaan indeksissä 12 oleva merkki C.

    Lisätietoa laskemisesta löydät esimerkiksi Digi- ja väestötietoviraston sivuilta.

    HUOM! Pidä huolta, ettet jaa omaa henkilötunnustasi esimerkiksi testikoodin mukana, jos kysyt neuvoja tehtävään kurssin keskustelualueella tai muualla.

    Oikeamuotoisia henkilötunnuksia testaamiseen ovat esimerkiksi seuraavat:

      \n
    • 230827-906F
    • \n
    • 120488+246L
    • \n
    • 310823A9877
    • \n

    Aikojen muotoilu

    Voimme muotoilla ajanhetken haluamallamme tavalla strftime-metodin avulla. Esimerkiksi seuraava koodi tulostaa nykyisen päivämäärän muodossa pp.kk.vvvv:

    from datetime import datetime\n\naika = datetime.now()\nprint(aika.strftime(\"%d.%m.%Y\"))

    04.02.2020

    Ajan muotoilussa käytetään tiettyjä kirjainlyhenteitä. Seuraavassa listassa on joitakin mahdollisia lyhenteitä (täydellinen lista on Pythonin dokumentaatiossa):

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    LyhenneMerkitys
    %dpäivä (01–31)
    %mkuukausi (01–12)
    %Yvuosi nelinumeroisena
    %Htunnit 24 tunnin formaatissa
    %Mminuutit (00–59)
    %Ssekunnit (00–59)

    Voimme myös tehdä muotoilun toiseen suuntaan, jos esimerkiksi haluamme muuttaa käyttäjän antaman ajanhetken aikaolioksi. Tämä onnistuu metodilla strptime:

    from datetime import datetime\n\nsyote = input(\"Anna syntymäpäiväsi muodossa pv.kk.vvvv: \")\naika = datetime.strptime(syote, \"%d.%m.%Y\")\n\nif aika < datetime(2000, 1, 1):\n    print(\"Synnyit viime vuosituhannella\")\nelse:\n    print(\"Synnyit tällä vuosituhannella\")

    Anna syntymäpäiväsi muodossa pv.kk.vvvv: 5.11.1986\nSynnyit viime vuosituhannella

    Ohjelmassa kirjoitetaan käyttäjän määrittelemään tiedostoon \"ruutuaikoja\", eli käyttäjän television, tietokoneen ja mobiililaitteen ääressä tiettyinä päivinä viettämää aikaa.

    Ohjelma toimii seuraavasti:

    Tiedosto: kesakuun_loppu.txt\nAloituspäivä: 24.6.2020\nMontako päivää: 5\nAnna ruutuajat kunakin päivänä minuutteina (TV tietokone mobiililaite):\nRuutuaika 24.06.2020: 60 120 0\nRuutuaika 25.06.2020: 0 0 0\nRuutuaika 26.06.2020: 180 0 0\nRuutuaika 27.06.2020: 25 240 15\nRuutuaika 28.06.2020: 45 90 5\nTiedot tallennettu tiedostoon kesakuun_loppu.txt

    Kunkin päivän riville on siis annettu välilyönnillä eroteltuna kolme minuuttimäärää.

    Ohjelma tallentaa tilaston ruutuajoista tiedostoon kesakuun_loppu.txt, joka näyttää yllä olevalla syötteellä seuraavalta:

    Ajanjakso: 24.06.2020-28.06.2020\nYht. minuutteja: 780\nKeskim. minuutteja: 156.0\n24.06.2020: 60/120/0\n25.06.2020: 0/0/0\n26.06.2020: 180/0/0\n27.06.2020: 25/240/15\n28.06.2020: 45/90/5

    ","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/3-ajanhetket.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät tavan käsitellä päivämääriä ja kellonaikoja Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa ja käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"datetime"}]},{"type":"text","value":"-olioita"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat vertailla päivämääriä ja kellonaikoja toisiinsa ja laskea niiden erotuksia"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"aikaolio","style":"position:relative;"},"children":[{"type":"text","value":"Aikaolio"},{"type":"element","tagName":"a","properties":{"href":"#aikaolio","ariaLabel":"aikaolio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"datetime"}]},{"type":"text","value":" funktio "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime.now","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"now"}]},{"type":"text","value":" antaa aikaolion, jossa on nykyinen päivämäärä ja kellonaika. Voimme esimerkiksi tulostaa nykyhetken päivämäärän ja kellonajan näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2020-10-13 12:46:49.311393"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa muodostaa aikaolio on määrittää ajanhetki itse:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1952-12-24 00:00:00"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun emme antaneet kellonaikaa, oletuksena on, että kyseessä on keskiyö."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme hakea aikaoliosta ajan osia tähän tapaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Päivä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"day"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kuukausi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vuosi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"year"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päivä: 24\nKuukausi: 12\nVuosi: 1952"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaoliolle voidaan antaa myös kellonaika halutulla tarkkuudella. Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\npv1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"00"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 30.6.2020 klo 13.00"}]},{"type":"text","value":"\npv2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"18"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"45"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# 30.6.2020 klo 18.45"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"aikojen-vertailu-ja-ero","style":"position:relative;"},"children":[{"type":"text","value":"Aikojen vertailu ja ero"},{"type":"element","tagName":"a","properties":{"href":"#aikojen-vertailu-ja-ero","ariaLabel":"aikojen vertailu ja ero permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme vertailla aikoja samaan tapaan kuin lukuja käyttämällä tuttuja vertailuoperaattoreita:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\nnyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ei ole vielä juhannus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hyvää juhannusta!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"elif"}]},{"type":"text","value":" nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juhannus on mennyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Juhannus on mennyt"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös laskea kahden ajankohdan eron vähennyslaskuna:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\nnyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" juhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" nyt\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Juhannukseen on vielä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"days"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"päivää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Juhannukseen on vielä 37 päivää"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että vähennyslaskun tuloksena on "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#timedelta-objects","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"timedelta"}]},{"type":"text","value":"-olio, jolta voi kysyä vain rajoitetusti ajan yksikköjä. Voimme kysyä päivien määrän, mutta emme voi kysyä esimerkiksi vuosien määrää, koska vuoden pituus vaihtelee."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Timedelta-olion avulla on myös mahdollista selvittää, mikä ajanhetki saadaan kun tietty aika (viikkoina ja päivinä) lisätään johonkin ajanhetkeen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" timedelta\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nviikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" timedelta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"days"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nviikon_paasta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" juhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" viikko\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kun viikko juhannuksesta kuluu on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikon_paasta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npitka_aika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" timedelta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"weeks"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"32"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" days"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kun juhannuksesta kuluu 32 viikkoa ja 15 päivää on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" juhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" pitka_aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun viikko juhannuksesta kuluu on 2020-06-27 00:00:00\nKun juhannuksesta kuluu 32 viikkoa ja 15 päivää on 2021-02-14 00:00:00"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Timedelta-olio toimii viikkojen ja päivien lisäksi tarkemmallakin tasolla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkeskiyo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nerotus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" keskiyo"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"nyt\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"keskiyöhön on vielä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"erotus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"seconds"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" sekuntia\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"keskiyöhön on vielä 8188 sekuntia"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuinka vanha","tmcname":"osa07-09_kuinka_vanha"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy käyttäjän syntymäajan (erikseen päivä, kuukausi ja vuosi) ja tulostaa, kuinka monta päivää vanha käyttäjä oli 31.12.1999 seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\nKuukausi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"9"}]},{"type":"text","value":"\nVuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"1979"}]},{"type":"text","value":"\nOlit 7417 päivää vanha, kun vuosituhat vaihtui."}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"28"}]},{"type":"text","value":"\nKuukausi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"3"}]},{"type":"text","value":"\nVuosi: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2005"}]},{"type":"text","value":"\nEt ollut syntynyt, kun vuosituhat vaihtui."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että kaikki annetut päivä-kuukausi-vuosi-yhdistelmät ovat mahdollisia (eli käyttäjä ei siis anna esim. syötettä 31.2.1999)."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Henkilötunnus oikein?","tmcname":"osa07-10_henkilotunnus_oikein"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"onko_validi(hetu: str)"}]},{"type":"text","value":", joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":" sen mukaan, onko annettu henkilötunnus oikea. Henkilötunnus on muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ppkkvvXyyyz"}]},{"type":"text","value":", jossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ppkkvv"}]},{"type":"text","value":" kertoo syntymäajan (päivä/kuukausi/vuosi), "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"X"}]},{"type":"text","value":" on syntymävuosisadasta riippuva välimerkki, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yyy"}]},{"type":"text","value":" henkilökohtainen yksilönumero ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"z"}]},{"type":"text","value":" tarkistemerkki."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee tarkastaa, että"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"alkuosassa on ppkkvv-muodossa oleva päivämäärä, joka on olemassa oleva päivämäärä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"välimerkki on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" (1800-luku), "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" (1900-luku) tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"A"}]},{"type":"text","value":" (2000-luku) ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"lopussa oleva tarkastusmerkki on oikein."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastusmerkki lasketaan jakamalla syntymäajasta ja yksilönumerosta muodostuva numerosarja 31:llä ja ottamalla tästä jakojäännös. Merkki valitaan sitten jakojäännöksen mukaisesta indeksistä merkkijonosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"0123456789ABCDEFHJKLMNPRSTUVWXY"}]},{"type":"text","value":". Esimerkiksi jos jakojäännös on 12, valitaan indeksissä 12 oleva merkki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"C"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätietoa laskemisesta löydät esimerkiksi "},{"type":"element","tagName":"a","properties":{"href":"https://dvv.fi/henkilotunnus","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Digi- ja väestötietoviraston sivuilta"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"HUOM!"}]},{"type":"text","value":" Pidä huolta, ettet jaa omaa henkilötunnustasi esimerkiksi testikoodin mukana, jos kysyt neuvoja tehtävään kurssin keskustelualueella tai muualla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oikeamuotoisia henkilötunnuksia testaamiseen ovat esimerkiksi seuraavat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"230827-906F"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"120488+246L"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"310823A9877"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"aikojen-muotoilu","style":"position:relative;"},"children":[{"type":"text","value":"Aikojen muotoilu"},{"type":"element","tagName":"a","properties":{"href":"#aikojen-muotoilu","ariaLabel":"aikojen muotoilu permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme muotoilla ajanhetken haluamallamme tavalla "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.date.strftime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"strftime"}]},{"type":"text","value":"-metodin avulla. Esimerkiksi seuraava koodi tulostaa nykyisen päivämäärän muodossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pp.kk.vvvv"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"now"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"aika"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strftime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"%d.%m.%Y\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"04.02.2020"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ajan muotoilussa käytetään tiettyjä kirjainlyhenteitä. Seuraavassa listassa on joitakin mahdollisia lyhenteitä (täydellinen lista on Pythonin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/time.html#time.strftime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"dokumentaatiossa"}]},{"type":"text","value":"):"}]},{"type":"text","value":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"type":"element","tagName":"table","properties":{},"children":[{"type":"element","tagName":"thead","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"th","properties":{"align":"left"},"children":[{"type":"text","value":"Lyhenne"}]},{"type":"element","tagName":"th","properties":{"align":"left"},"children":[{"type":"text","value":"Merkitys"}]}]}]},{"type":"element","tagName":"tbody","properties":{},"children":[{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%d"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"päivä (01–31)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%m"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"kuukausi (01–12)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%Y"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"vuosi nelinumeroisena"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%H"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"tunnit 24 tunnin formaatissa"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%M"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"minuutit (00–59)"}]}]},{"type":"element","tagName":"tr","properties":{},"children":[{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"%S"}]}]},{"type":"element","tagName":"td","properties":{"align":"left"},"children":[{"type":"text","value":"sekunnit (00–59)"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme myös tehdä muotoilun toiseen suuntaan, jos esimerkiksi haluamme muuttaa käyttäjän antaman ajanhetken aikaolioksi. Tämä onnistuu metodilla "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime.strptime","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"strptime"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" datetime\n\nsyote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna syntymäpäiväsi muodossa pv.kk.vvvv: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\naika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"strptime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"syote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"%d.%m.%Y\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" aika "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" datetime"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Synnyit viime vuosituhannella\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Synnyit tällä vuosituhannella\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna syntymäpäiväsi muodossa pv.kk.vvvv: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5.11.1986"}]},{"type":"text","value":"\nSynnyit viime vuosituhannella"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Ruutuaika","tmcname":"osa07-11_ruutuaika"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa kirjoitetaan käyttäjän määrittelemään tiedostoon \"ruutuaikoja\", eli käyttäjän television, tietokoneen ja mobiililaitteen ääressä tiettyinä päivinä viettämää aikaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma toimii seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedosto: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"kesakuun_loppu.txt"}]},{"type":"text","value":"\nAloituspäivä: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"24.6.2020"}]},{"type":"text","value":"\nMontako päivää: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\nAnna ruutuajat kunakin päivänä minuutteina (TV tietokone mobiililaite):\nRuutuaika 24.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"60 120 0"}]},{"type":"text","value":"\nRuutuaika 25.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"0 0 0"}]},{"type":"text","value":"\nRuutuaika 26.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"180 0 0"}]},{"type":"text","value":"\nRuutuaika 27.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"25 240 15"}]},{"type":"text","value":"\nRuutuaika 28.06.2020: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"45 90 5"}]},{"type":"text","value":"\nTiedot tallennettu tiedostoon kesakuun_loppu.txt"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kunkin päivän riville on siis annettu välilyönnillä eroteltuna kolme minuuttimäärää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tallentaa tilaston ruutuajoista tiedostoon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kesakuun_loppu.txt"}]},{"type":"text","value":", joka näyttää yllä olevalla syötteellä seuraavalta:"}]},{"type":"element","tagName":"sample-data","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ajanjakso: 24.06.2020-28.06.2020\nYht. minuutteja: 780\nKeskim. minuutteja: 156.0\n24.06.2020: 60/120/0\n25.06.2020: 0/0/0\n26.06.2020: 180/0/0\n27.06.2020: 25/240/15\n28.06.2020: 45/90/5"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät tavan käsitellä päivämääriä ja kellonaikoja Pythonissa
    • \n
    • Osaat muodostaa ja käyttää datetime-olioita
    • \n
    • Osaat vertailla päivämääriä ja kellonaikoja toisiinsa ja laskea niiden erotuksia
    • \n

    Aikaolio

    Moduulin datetime funktio now antaa aikaolion, jossa on nykyinen päivämäärä ja kellonaika. Voimme esimerkiksi tulostaa nykyhetken päivämäärän ja kellonajan näin:

    from datetime import datetime\n\naika = datetime.now()\nprint(aika)

    2020-10-13 12:46:49.311393

    Toinen tapa muodostaa aikaolio on määrittää ajanhetki itse:

    from datetime import datetime\n\naika = datetime(1952, 12, 24)\nprint(aika)

    1952-12-24 00:00:00

    Kun emme antaneet kellonaikaa, oletuksena on, että kyseessä on keskiyö.

    Voimme hakea aikaoliosta ajan osia tähän tapaan:

    from datetime import datetime\n\naika = datetime(1952, 12, 24)\nprint(\"Päivä:\", aika.day)\nprint(\"Kuukausi:\", aika.month)\nprint(\"Vuosi:\", aika.year)

    Päivä: 24\nKuukausi: 12\nVuosi: 1952

    Aikaoliolle voidaan antaa myös kellonaika halutulla tarkkuudella. Esimerkiksi:

    from datetime import datetime\n\npv1 = datetime(2020, 6, 30, 13, 00) # 30.6.2020 klo 13.00\npv2 = datetime(2020, 6, 30, 18, 45) # 30.6.2020 klo 18.45

    Aikojen vertailu ja ero

    Voimme vertailla aikoja samaan tapaan kuin lukuja käyttämällä tuttuja vertailuoperaattoreita:

    from datetime import datetime\n\nnyt = datetime.now()\njuhannus = datetime(2020, 6, 20)\n\nif nyt < juhannus:\n    print(\"Ei ole vielä juhannus\")\nelif nyt == juhannus:\n    print(\"Hyvää juhannusta!\")\nelif nyt > juhannus:\n    print(\"Juhannus on mennyt\")

    Juhannus on mennyt

    Voimme myös laskea kahden ajankohdan eron vähennyslaskuna:

    from datetime import datetime\n\nnyt = datetime.now()\njuhannus = datetime(2020, 6, 20)\n\nero = juhannus - nyt\nprint(\"Juhannukseen on vielä\", ero.days, \"päivää\")

    Juhannukseen on vielä 37 päivää

    Huomaa, että vähennyslaskun tuloksena on timedelta-olio, jolta voi kysyä vain rajoitetusti ajan yksikköjä. Voimme kysyä päivien määrän, mutta emme voi kysyä esimerkiksi vuosien määrää, koska vuoden pituus vaihtelee.

    Timedelta-olion avulla on myös mahdollista selvittää, mikä ajanhetki saadaan kun tietty aika (viikkoina ja päivinä) lisätään johonkin ajanhetkeen:

    from datetime import datetime, timedelta\njuhannus = datetime(2020, 6, 20)\n\nviikko = timedelta(days=7)\nviikon_paasta = juhannus + viikko\n\nprint(\"Kun viikko juhannuksesta kuluu on\", viikon_paasta)\n\npitka_aika = timedelta(weeks=32, days=15)\n\nprint(\"Kun juhannuksesta kuluu 32 viikkoa ja 15 päivää on\", juhannus + pitka_aika)

    Kun viikko juhannuksesta kuluu on 2020-06-27 00:00:00\nKun juhannuksesta kuluu 32 viikkoa ja 15 päivää on 2021-02-14 00:00:00

    Timedelta-olio toimii viikkojen ja päivien lisäksi tarkemmallakin tasolla:

    nyt = datetime.now()\nkeskiyo = datetime(2020, 6, 30)\nerotus = keskiyo-nyt\nprint(f\"keskiyöhön on vielä {erotus.seconds} sekuntia\")

    keskiyöhön on vielä 8188 sekuntia

    Tee ohjelma, joka kysyy käyttäjän syntymäajan (erikseen päivä, kuukausi ja vuosi) ja tulostaa, kuinka monta päivää vanha käyttäjä oli 31.12.1999 seuraavan esimerkin mukaisesti:

    Päivä: 10\nKuukausi: 9\nVuosi: 1979\nOlit 7417 päivää vanha, kun vuosituhat vaihtui.

    Päivä: 28\nKuukausi: 3\nVuosi: 2005\nEt ollut syntynyt, kun vuosituhat vaihtui.

    Voit olettaa, että kaikki annetut päivä-kuukausi-vuosi-yhdistelmät ovat mahdollisia (eli käyttäjä ei siis anna esim. syötettä 31.2.1999).

    Tee funktio onko_validi(hetu: str), joka palauttaa True tai False sen mukaan, onko annettu henkilötunnus oikea. Henkilötunnus on muotoa ppkkvvXyyyz, jossa ppkkvv kertoo syntymäajan (päivä/kuukausi/vuosi), X on syntymävuosisadasta riippuva välimerkki, yyy henkilökohtainen yksilönumero ja z tarkistemerkki.

    Ohjelman tulee tarkastaa, että

      \n
    • alkuosassa on ppkkvv-muodossa oleva päivämäärä, joka on olemassa oleva päivämäärä
    • \n
    • välimerkki on + (1800-luku), - (1900-luku) tai A (2000-luku) ja
    • \n
    • lopussa oleva tarkastusmerkki on oikein.
    • \n

    Tarkastusmerkki lasketaan jakamalla syntymäajasta ja yksilönumerosta muodostuva numerosarja 31:llä ja ottamalla tästä jakojäännös. Merkki valitaan sitten jakojäännöksen mukaisesta indeksistä merkkijonosta 0123456789ABCDEFHJKLMNPRSTUVWXY. Esimerkiksi jos jakojäännös on 12, valitaan indeksissä 12 oleva merkki C.

    Lisätietoa laskemisesta löydät esimerkiksi Digi- ja väestötietoviraston sivuilta.

    HUOM! Pidä huolta, ettet jaa omaa henkilötunnustasi esimerkiksi testikoodin mukana, jos kysyt neuvoja tehtävään kurssin keskustelualueella tai muualla.

    Oikeamuotoisia henkilötunnuksia testaamiseen ovat esimerkiksi seuraavat:

      \n
    • 230827-906F
    • \n
    • 120488+246L
    • \n
    • 310823A9877
    • \n

    Aikojen muotoilu

    Voimme muotoilla ajanhetken haluamallamme tavalla strftime-metodin avulla. Esimerkiksi seuraava koodi tulostaa nykyisen päivämäärän muodossa pp.kk.vvvv:

    from datetime import datetime\n\naika = datetime.now()\nprint(aika.strftime(\"%d.%m.%Y\"))

    04.02.2020

    Ajan muotoilussa käytetään tiettyjä kirjainlyhenteitä. Seuraavassa listassa on joitakin mahdollisia lyhenteitä (täydellinen lista on Pythonin dokumentaatiossa):

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    LyhenneMerkitys
    %dpäivä (01–31)
    %mkuukausi (01–12)
    %Yvuosi nelinumeroisena
    %Htunnit 24 tunnin formaatissa
    %Mminuutit (00–59)
    %Ssekunnit (00–59)

    Voimme myös tehdä muotoilun toiseen suuntaan, jos esimerkiksi haluamme muuttaa käyttäjän antaman ajanhetken aikaolioksi. Tämä onnistuu metodilla strptime:

    from datetime import datetime\n\nsyote = input(\"Anna syntymäpäiväsi muodossa pv.kk.vvvv: \")\naika = datetime.strptime(syote, \"%d.%m.%Y\")\n\nif aika < datetime(2000, 1, 1):\n    print(\"Synnyit viime vuosituhannella\")\nelse:\n    print(\"Synnyit tällä vuosituhannella\")

    Anna syntymäpäiväsi muodossa pv.kk.vvvv: 5.11.1986\nSynnyit viime vuosituhannella

    Ohjelmassa kirjoitetaan käyttäjän määrittelemään tiedostoon \"ruutuaikoja\", eli käyttäjän television, tietokoneen ja mobiililaitteen ääressä tiettyinä päivinä viettämää aikaa.

    Ohjelma toimii seuraavasti:

    Tiedosto: kesakuun_loppu.txt\nAloituspäivä: 24.6.2020\nMontako päivää: 5\nAnna ruutuajat kunakin päivänä minuutteina (TV tietokone mobiililaite):\nRuutuaika 24.06.2020: 60 120 0\nRuutuaika 25.06.2020: 0 0 0\nRuutuaika 26.06.2020: 180 0 0\nRuutuaika 27.06.2020: 25 240 15\nRuutuaika 28.06.2020: 45 90 5\nTiedot tallennettu tiedostoon kesakuun_loppu.txt

    Kunkin päivän riville on siis annettu välilyönnillä eroteltuna kolme minuuttimäärää.

    Ohjelma tallentaa tilaston ruutuajoista tiedostoon kesakuun_loppu.txt, joka näyttää yllä olevalla syötteellä seuraavalta:

    Ajanjakso: 24.06.2020-28.06.2020\nYht. minuutteja: 780\nKeskim. minuutteja: 156.0\n24.06.2020: 60/120/0\n25.06.2020: 0/0/0\n26.06.2020: 180/0/0\n27.06.2020: 25/240/15\n28.06.2020: 45/90/5

    ","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/3-ajanhetket.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/4-datan-kasittely/page-data.json b/page-data/osa-7/4-datan-kasittely/page-data.json index 28e5eb168..0e8e7b4ba 100644 --- a/page-data/osa-7/4-datan-kasittely/page-data.json +++ b/page-data/osa-7/4-datan-kasittely/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-7/4-datan-kasittely", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää moduulia CSV-tiedoston käsittelyyn"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää moduulia JSON-tiedoston käsittelyyn"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hakea netissä olevan tiedoston sisällön"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"csv-tiedoston-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"CSV-tiedoston lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#csv-tiedoston-lukeminen","ariaLabel":"csv tiedoston lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän mennessä käsitelleet CSV-tiedostoja omalla koodilla, mutta tähän on myös valmis moduuli "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/csv.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"csv"}]},{"type":"text","value":", jota voi käyttää näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" csv\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" csv"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"reader"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" delimiter"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä oleva koodi lukee rivit CSV-tiedostosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi.csv"}]},{"type":"text","value":", jossa erotinmerkki on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":". Esimerkiksi jos tiedoston sisältö on"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"012121212;5\n012345678;2\n015151515;4"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin koodi antaa seuraavan tuloksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['012121212', '5']\n['012345678', '2']\n['015151515', '4']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä hyötyä on käyttää moduulia sen sijaan, että toteuttaa lukemisen itse "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":"-funktiolla? Yksi hyöty on, että moduulin toteutus toimii myös silloin, kun arvona on merkkijono, jonka sisällä on erotinmerkki. Esimerkiksi jos tiedoston sisältö on"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"\"aaa;bbb\";\"ccc;ddd\""}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin koodin tulos on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['aaa;bbb', 'ccc;ddd']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos vain jakaisimme rivin osiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":"-merkkien kohdista, lukeminen ei toimisi oikein, koska myös merkkijonot jakaantuisivat."}]},{"type":"element","tagName":"h2","properties":{"id":"json-tiedoston-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"JSON-tiedoston lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#json-tiedoston-lukeminen","ariaLabel":"json tiedoston lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-muodon lisäksi on olemassa muitakin koneluettavia tiedostomuotoja. Eräs näistä on erityisesti tietojen siirrossa yleisesti käytetty "},{"type":"element","tagName":"a","properties":{"href":"https://www.json.org/json-en.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"JSON"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"JSON-tiedostot ovat tekstitiedostoja, joilla on tietty tarkka muoto. Seuraavassa esimerkkinä JSON-tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssit.json"}]},{"type":"text","value":", jossa on tietoa kursseista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"[\n {\n \"nimi\": \"Ohjelmoinnin perusteet\",\n \"tunnus\": \"Ohpe\",\n \"periodit\": [1, 3]\n },\n {\n \"nimi\": \"Ohjelmoinnin jatkokurssi\",\n \"tunnus\": \"Ohja\",\n \"periodit\": [2, 4]\n },\n {\n \"nimi\": \"Tietokantasovellus\",\n \"tunnus\": \"Tsoha\",\n \"periodit\": [1, 2, 3, 4]\n }\n]"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"JSON-tiedostot näyttävät kohtuullisen tutulta Pythonin käyttäjille. Itse asiassa tiedoston sisältö vastaa Pythonin listaa, jonka sisällä on kolme sanakirjaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardikirjastossa on JSON-tiedostojen käsittelyyn moduuli "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/json.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"json"}]},{"type":"text","value":". Siinä oleva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loads"}]},{"type":"text","value":" muuttaa merkkijonona annetun JSON-datan Pythonin tietorakenteiksi. Esimerkiksi koodin"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" json\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kurssit.json\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n data "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"read"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" json"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loads"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"data"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulos on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[{'nimi': 'Ohjelmoinnin perusteet', 'tunnus': 'Ohpe', 'periodit': [1, 3]}, {'nimi': 'Ohjelmoinnin jatkokurssi', 'tunnus': 'Ohja', 'periodit': [2, 4]}, {'nimi': 'Tietokantasovellus', 'tunnus': 'Tsoha', 'periodit': [1, 2, 3, 4]}]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodia voisi jatkaa vaikka seuraavasti, jolloin koodi tulostaa jokaisen kurssin nimen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteet\nOhjelmoinnin jatkokurssi\nTietokantasovellus"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"JSON-tiedoston käsittely","tmcname":"osa07-12_jsontiedostot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan JSON-tiedostoa, jossa on tietoa opiskelijoista seuraavassa muodossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"json"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Pythonisti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"ika\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"27"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"harrastukset\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kutominen\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jaana Javanainen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"ika\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"harrastukset\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kalliokiipeily\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lukeminen\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_henkilot(tiedosto: str)"}]},{"type":"text","value":", joka lukee esimerkin tavalla muodostetun JSON-tiedoston (jonka sisältönä voi olla mielivaltainen määrä henkilöitä) ja tulostaa ne seuraavassa muodossa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Pythonisti 27 vuotta (koodaus, kutominen)\nJaana Javanainen 24 vuotta (koodaus, kalliokiipeily, lukeminen)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harrastukset tulee luetella samassa järjestyksessä kuin ne on annettu JSON-tiedostossa."}]}]},{"type":"element","tagName":"h2","properties":{"id":"netissa-olevan-tiedoston-hakeminen","style":"position:relative;"},"children":[{"type":"text","value":"Netissä olevan tiedoston hakeminen"},{"type":"element","tagName":"a","properties":{"href":"#netissa-olevan-tiedoston-hakeminen","ariaLabel":"netissa olevan tiedoston hakeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin standardikirjaston funktion "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"urllib.request.urlopen"}]},{"type":"text","value":" avulla on helppo hakea internetistä sisältöä ohjelmista käsin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. seuraava koodi tulostaa Helsingin yliopiston etusivun sisällön:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request\n\npyynto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"urlopen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"https://helsinki.fi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pyynto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"read"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ihmisille tarkoitetut sivut tosin eivät tulostu kovin selkeinä, mutta internetissä on myös runsaasti koneluettavaa dataa, joka on usein JSON-muodossa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssien tilastot","tmcname":"osa07-13_kurssistatistiikka"},"children":[{"type":"element","tagName":"h4","properties":{"id":"tieto-kursseista","style":"position:relative;"},"children":[{"type":"text","value":"tieto kursseista"},{"type":"element","tagName":"a","properties":{"href":"#tieto-kursseista","ariaLabel":"tieto kursseista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osoitteesta "},{"type":"element","tagName":"a","properties":{"href":"https://studies.cs.helsinki.fi/stats-mock/api/courses","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://studies.cs.helsinki.fi/stats-mock/api/courses"}]},{"type":"text","value":" löytyy JSON-muodossa muutaman laitoksen verkkokurssin perustiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_kaikki()"}]},{"type":"text","value":" joka hakee ja palauttaa kaikkien menossa olevien kurssien (kentän "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"enabled"}]},{"type":"text","value":" arvona "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":") tiedot listana tupleja. Paluuarvon muoto on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"[\n ('Full Stack Open 2020', 'ofs2019', 2020, 201),\n ('DevOps with Docker 2019', 'docker2019', 2019, 36),\n ('DevOps with Docker 2020', 'docker2020', 2020, 36),\n ('Beta DevOps with Kubernetes', 'beta-dwk-20', 2020, 28)\n]\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokainen tuple siis sisältää seuraavat arvot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kurssin koko nimi ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fullName"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"name"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vuosi ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"year"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"harjoitusten ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exercises"}]},{"type":"text","value":") yhteenlaskettu määrä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":": Tämän tehtävän testien toimivuuden osalta on oleellista, että haet tiedot funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"urllib.request.urlopen"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom2:"}]},{"type":"text","value":" Testeissä käytetään myös ovelaa kikkaa, joka hieman muuttaa internetistä tulevaa dataa ja tämän avulla varmistaa, että et huijaa tehtävässäsi palauttamalla \"kovakoodattua\" dataa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom3:"}]},{"type":"text","value":" Jotkut Mac-käyttäjät ovat törmänneet tehtävässä seuraavaan ongelmaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"File "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py\""}]},{"type":"text","value":", line "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1353"}]},{"type":"text","value":", "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" do_open\n raise URLError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"err"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nurllib.error.URLError: "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"urlopen error "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"SSL: CERTIFICATE_VERIFY_FAILED"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" certificate verify failed: unable to get "},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":"local"}]},{"type":"text","value":" issuer certificate "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"_ssl.c:1124"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelman ratkaisutapa riippuu siitä miten python on asennettu koneellesi. Joissain tapauksissa toimii seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":"cd"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"/Applications/Python 3.8/\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sudo"}]},{"type":"text","value":" \"./Install Certificates.command"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että cd-komennon polku riippuu käyttämästäsi Pythonin versiosta. Se voi olla myös \"/Applications/Python 3.8/\"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Täällä"}]},{"type":"text","value":" on ehdotettu useita erilaisia ratkaisuja ongelmaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eräs kikka jota voit kokeilla, on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" json\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" ssl "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisää tämä kirjasto importeihin"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_kaikki"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja tämä rivi funktioiden alkuun"}]},{"type":"text","value":"\n context "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ssl"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_create_unverified_context"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa kiertää ongelma on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" certifi "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisää tämä kirjasto importeihin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" json\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_kaikki"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"https://studies.cs.helsinki.fi/stats-mock/api/courses\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisätään kutsuun toinen parametri"}]},{"type":"text","value":"\n pyynto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"urlopen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" cafile"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"certifi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"where"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]}]}]}]},{"type":"element","tagName":"h4","properties":{"id":"yhden-kurssin-tiedot","style":"position:relative;"},"children":[{"type":"text","value":"yhden kurssin tiedot"},{"type":"element","tagName":"a","properties":{"href":"#yhden-kurssin-tiedot","ariaLabel":"yhden kurssin tiedot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kunkin kurssin JSON-muotoinen tehtävästatistiikka löytyy omasta osoitteesta, joka saadaan vaihtamalla kurssin kenttä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"name"}]},{"type":"text","value":" seuraavassa tähtien paikalle "},{"type":"element","tagName":"a","properties":{"href":"https://studies.cs.helsinki.fi/stats-mock/api/courses/****/stats","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://studies.cs.helsinki.fi/stats-mock/api/courses/****/stats"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kurssin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"docker2019"}]},{"type":"text","value":" tiedot ovat osoitteessa "},{"type":"element","tagName":"a","properties":{"href":"https://studies.cs.helsinki.fi/stats-mock/api/courses/docker2019/stats","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://studies.cs.helsinki.fi/stats-mock/api/courses/docker2019/stats"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelmaasi funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_kurssi(kurssi: str)"}]},{"type":"text","value":", joka palauttaa kurssin tarkemman tehtävästatistiikan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun kutsutaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_kurssi(\"docker2019\")"}]},{"type":"text","value":", funktio palauttaa sanakirjan, jonka sisältö on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"{\n 'viikkoja': 4,\n 'opiskelijoita': 220,\n 'tunteja': 5966,\n 'tunteja_keskimaarin': 27,\n 'tehtavia': 4988,\n 'tehtavia_keskimaarin': 22\n}\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjaan tallennetut arvot määrittyvät seuraavasti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viikkoja"}]},{"type":"text","value":": kurssia vastaavan JSON-olioiden määrä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opiskelijoita"}]},{"type":"text","value":" viikkojen opiskelijamäärien maksimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunteja"}]},{"type":"text","value":": kakkien viikkojen tuntimäärien ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hour_total"}]},{"type":"text","value":") summa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunteja_keskimaarin"}]},{"type":"text","value":": edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tehtavia"}]},{"type":"text","value":": kakkien viikkojen tehtävämäärien ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exercise_total"}]},{"type":"text","value":") summa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tehtavia_keskimaarin"}]},{"type":"text","value":": edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":": Samat huomiot pätevät tähän osaan kuin edelliseen!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom2"}]},{"type":"text","value":": löydät "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":" -moduulista funktion, jonka avulla kokonaisluvun alaspäin pyöristäminen on helppoa"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuka huijasi","tmcname":"osa07-14_kuka_huijasi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tentin_aloitus.csv"}]},{"type":"text","value":" on tenttien aloitusaikoja muodossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnus;hh:mm"}]},{"type":"text","value":". Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jarmo;09:00"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"timo;18:42"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"kalle;13:23"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palautus.csv"}]},{"type":"text","value":" on tehtävien palautusaikoja muodossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnus;tehtävä;pisteet;hh:mm"}]},{"type":"text","value":". Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jarmo;1;8;16:05"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"timo;2;10;21:22"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jarmo;2;10;19:15"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jne..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväsi on etsiä ne opiskelijat, jotka ovat käyttäneet tenttiin yli 3 tuntia aikaa, eli opiskelijat, joiden "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jonkin"}]},{"type":"text","value":" tehtävän palautus on tehty yli 3 tuntia tentin aloitusajasta. Palautuksia voi siis olla useampi. Voit olettaa, että kaikki ajat ovat saman vuorokauden puolella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"huijarit()"}]},{"type":"text","value":", joka palauttaa listan huijanneiden opiskelijoiden käyttäjätunnuksista."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuka huijasi, versio 2","tmcname":"osa07-15_kuka_huijasi_2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytössäsi on edellisessä tehtävässä määritellyt datatiedostot. Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viralliset_pisteet()"}]},{"type":"text","value":", joka palauttaa sanakirjassa (dict) opiskelijoiden koepisteet seuraavien sääntöjen mukaan:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos samaan tehtävänumeroon on tehty useita palautuksia, korkeimman pistemäärän palautus otetaan huomioon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos tehtäväpalautus on tehty yli 3 tuntia tentin aloittamisen jälkeen, palautusta ei huomioida ollenkaan"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävät on numeroitu 1–8 ja jokaisesta tehtävästä voi saada 0–6 pistettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palautetussa sanakirjassa tunnus on avain ja tehtävien yhteispistemäärä arvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: sisäkkäiset sanakirjat (dict) ovat mainio työkalua tallennettaessa eri opiskelijoiden pisteitä ja aikoja."}]}]},{"type":"element","tagName":"h2","properties":{"id":"moduulien-etsiminen","style":"position:relative;"},"children":[{"type":"text","value":"Moduulien etsiminen"},{"type":"element","tagName":"a","properties":{"href":"#moduulien-etsiminen","ariaLabel":"moduulien etsiminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin dokumentaatiosta löytyy tietoa kaikista standardikirjaston moduuleista:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://docs.python.org/3/library/"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardikirjaston lisäksi verkosta löytyy lukuisia vapaasti käytettäviä kirjastoja eri tarpeisiin. Joitakin yleisesti käytettyjä moduuleja on täällä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://wiki.python.org/moin/UsefulModules","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://wiki.python.org/moin/UsefulModules"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Spellchecker, versio 2","tmcname":"osa07-16_spellchecker_versio2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teemme tässä tehtävässä hieman parannellun version edellisen osan tehtävästä Spellchecker."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisen osan version tapaan ohjelma pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tämän lisäksi ohjelma antaa listan korjausehdotuksia väärin kirjotettuihin sanoihin."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa kaksi käyttöesimerkkiä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"We use ptython to make a spell checker"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"We use *ptython* to make a spell checker\nkorjausehdotukset:\nptython: python, pythons, typhon\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"this is acually a good and usefull program"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"this is *acually* a good and *usefull* program\nkorjausehdotukset:\nacually: actually, tactually, factually\nusefull: usefully, useful, museful\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjausehdotukset etsitään standardikirjaston moduulin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/difflib.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"difflib"}]},{"type":"text","value":" tarjoaman funktion "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/difflib.html#difflib.get_close_matches","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"get_close_matches"}]},{"type":"text","value":" avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":": jotta testit toimisivat, käytä funktiota \"oletusasetuksilla\", eli antamalla sille kaksi parametria: virheellinen sana ja lista oikeista sanoista."}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd"},"children":[]}]}]},"html":"

    Tämän osion jälkeen:

      \n
    • Osaat käyttää moduulia CSV-tiedoston käsittelyyn
    • \n
    • Osaat käyttää moduulia JSON-tiedoston käsittelyyn
    • \n
    • Osaat hakea netissä olevan tiedoston sisällön
    • \n

    CSV-tiedoston lukeminen

    Olemme tähän mennessä käsitelleet CSV-tiedostoja omalla koodilla, mutta tähän on myös valmis moduuli csv, jota voi käyttää näin:

    import csv\n\nwith open(\"testi.csv\") as tiedosto:\n    for rivi in csv.reader(tiedosto, delimiter=\";\"):\n        print(rivi)

    Yllä oleva koodi lukee rivit CSV-tiedostosta testi.csv, jossa erotinmerkki on ;. Esimerkiksi jos tiedoston sisältö on

    012121212;5\n012345678;2\n015151515;4

    niin koodi antaa seuraavan tuloksen:

    ['012121212', '5']\n['012345678', '2']\n['015151515', '4']

    Mitä hyötyä on käyttää moduulia sen sijaan, että toteuttaa lukemisen itse split-funktiolla? Yksi hyöty on, että moduulin toteutus toimii myös silloin, kun arvona on merkkijono, jonka sisällä on erotinmerkki. Esimerkiksi jos tiedoston sisältö on

    "aaa;bbb";"ccc;ddd"

    niin koodin tulos on:

    ['aaa;bbb', 'ccc;ddd']

    Jos vain jakaisimme rivin osiin ;-merkkien kohdista, lukeminen ei toimisi oikein, koska myös merkkijonot jakaantuisivat.

    JSON-tiedoston lukeminen

    CSV-muodon lisäksi on olemassa muitakin koneluettavia tiedostomuotoja. Eräs näistä on erityisesti tietojen siirrossa yleisesti käytetty JSON.

    JSON-tiedostot ovat tekstitiedostoja, joilla on tietty tarkka muoto. Seuraavassa esimerkkinä JSON-tiedosto kurssit.json, jossa on tietoa kursseista:

    [\n    {\n        "nimi": "Ohjelmoinnin perusteet",\n        "tunnus": "Ohpe",\n        "periodit": [1, 3]\n    },\n    {\n        "nimi": "Ohjelmoinnin jatkokurssi",\n        "tunnus": "Ohja",\n        "periodit": [2, 4]\n    },\n    {\n        "nimi": "Tietokantasovellus",\n        "tunnus": "Tsoha",\n        "periodit": [1, 2, 3, 4]\n    }\n]

    JSON-tiedostot näyttävät kohtuullisen tutulta Pythonin käyttäjille. Itse asiassa tiedoston sisältö vastaa Pythonin listaa, jonka sisällä on kolme sanakirjaa.

    Standardikirjastossa on JSON-tiedostojen käsittelyyn moduuli json. Siinä oleva funktio loads muuttaa merkkijonona annetun JSON-datan Pythonin tietorakenteiksi. Esimerkiksi koodin

    import json\n\nwith open(\"kurssit.json\") as tiedosto:\n    data = tiedosto.read()\nkurssit = json.loads(data)\nprint(kurssit)

    tulos on seuraava:

    [{'nimi': 'Ohjelmoinnin perusteet', 'tunnus': 'Ohpe', 'periodit': [1, 3]}, {'nimi': 'Ohjelmoinnin jatkokurssi', 'tunnus': 'Ohja', 'periodit': [2, 4]}, {'nimi': 'Tietokantasovellus', 'tunnus': 'Tsoha', 'periodit': [1, 2, 3, 4]}]

    Koodia voisi jatkaa vaikka seuraavasti, jolloin koodi tulostaa jokaisen kurssin nimen:

    for kurssi in kurssit:\n    print(kurssi[\"nimi\"])

    Ohjelmoinnin perusteet\nOhjelmoinnin jatkokurssi\nTietokantasovellus

    Tarkastellaan JSON-tiedostoa, jossa on tietoa opiskelijoista seuraavassa muodossa:

    [\n    {\n        \"nimi\": \"Pekka Pythonisti\",\n        \"ika\": 27,\n        \"harrastukset\": [\n            \"koodaus\",\n            \"kutominen\"\n        ]\n    },\n    {\n        \"nimi\": \"Jaana Javanainen\",\n        \"ika\": 24,\n        \"harrastukset\": [\n            \"koodaus\",\n            \"kalliokiipeily\",\n            \"lukeminen\"\n        ]\n    }\n]

    Toteuta funktio tulosta_henkilot(tiedosto: str), joka lukee esimerkin tavalla muodostetun JSON-tiedoston (jonka sisältönä voi olla mielivaltainen määrä henkilöitä) ja tulostaa ne seuraavassa muodossa:

    Pekka Pythonisti 27 vuotta (koodaus, kutominen)\nJaana Javanainen 24 vuotta (koodaus, kalliokiipeily, lukeminen)

    Harrastukset tulee luetella samassa järjestyksessä kuin ne on annettu JSON-tiedostossa.

    Netissä olevan tiedoston hakeminen

    Pythonin standardikirjaston funktion urllib.request.urlopen avulla on helppo hakea internetistä sisältöä ohjelmista käsin.

    Esim. seuraava koodi tulostaa Helsingin yliopiston etusivun sisällön:

    import urllib.request\n\npyynto = urllib.request.urlopen(\"https://helsinki.fi\")\nprint(pyynto.read())

    Ihmisille tarkoitetut sivut tosin eivät tulostu kovin selkeinä, mutta internetissä on myös runsaasti koneluettavaa dataa, joka on usein JSON-muodossa.

    tieto kursseista

    Osoitteesta https://studies.cs.helsinki.fi/stats-mock/api/courses löytyy JSON-muodossa muutaman laitoksen verkkokurssin perustiedot.

    Tee funktio hae_kaikki() joka hakee ja palauttaa kaikkien menossa olevien kurssien (kentän enabled arvona True) tiedot listana tupleja. Paluuarvon muoto on seuraava:

    \n[\n    ('Full Stack Open 2020', 'ofs2019', 2020, 201),\n    ('DevOps with Docker 2019', 'docker2019', 2019, 36),\n    ('DevOps with Docker 2020', 'docker2020', 2020, 36),\n    ('Beta DevOps with Kubernetes', 'beta-dwk-20', 2020, 28)\n]\n

    Jokainen tuple siis sisältää seuraavat arvot:

      \n
    • kurssin koko nimi (fullName)
    • \n
    • nimi (name)
    • \n
    • vuosi (year)
    • \n
    • harjoitusten (exercises) yhteenlaskettu määrä
    • \n

    Huom: Tämän tehtävän testien toimivuuden osalta on oleellista, että haet tiedot funktiolla urllib.request.urlopen.

    Huom2: Testeissä käytetään myös ovelaa kikkaa, joka hieman muuttaa internetistä tulevaa dataa ja tämän avulla varmistaa, että et huijaa tehtävässäsi palauttamalla \"kovakoodattua\" dataa.

    Huom3: Jotkut Mac-käyttäjät ovat törmänneet tehtävässä seuraavaan ongelmaan:

    File \"/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py\", line 1353, in do_open\n    raise URLError(err)\nurllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1124)>

    Ongelman ratkaisutapa riippuu siitä miten python on asennettu koneellesi. Joissain tapauksissa toimii seuraava:

    cd \"/Applications/Python 3.8/\"\nsudo \"./Install Certificates.command

    Huomaa, että cd-komennon polku riippuu käyttämästäsi Pythonin versiosta. Se voi olla myös \"/Applications/Python 3.8/\".

    Täällä on ehdotettu useita erilaisia ratkaisuja ongelmaan.

    Eräs kikka jota voit kokeilla, on seuraava:

    import urllib.request\nimport json\nimport ssl # lisää tämä kirjasto importeihin\n\ndef hae_kaikki():\n    # ja tämä rivi funktioiden alkuun\n    context = ssl._create_unverified_context()\n    # muu koodi

    Toinen tapa kiertää ongelma on seuraava:

    import urllib.request\nimport certifi # lisää tämä kirjasto importeihin\nimport json\n\ndef hae_kaikki():\n   osoite = \"https://studies.cs.helsinki.fi/stats-mock/api/courses\"\n   # lisätään kutsuun toinen parametri\n   pyynto = urllib.request.urlopen(osoite, cafile=certifi.where())\n   # muu koodi

    yhden kurssin tiedot

    Kunkin kurssin JSON-muotoinen tehtävästatistiikka löytyy omasta osoitteesta, joka saadaan vaihtamalla kurssin kenttä name seuraavassa tähtien paikalle https://studies.cs.helsinki.fi/stats-mock/api/courses/****/stats

    Esimerkiksi kurssin docker2019 tiedot ovat osoitteessa https://studies.cs.helsinki.fi/stats-mock/api/courses/docker2019/stats

    Tee ohjelmaasi funktio hae_kurssi(kurssi: str), joka palauttaa kurssin tarkemman tehtävästatistiikan.

    Kun kutsutaan hae_kurssi(\"docker2019\"), funktio palauttaa sanakirjan, jonka sisältö on seuraava:

    \n{\n    'viikkoja': 4,\n    'opiskelijoita': 220,\n    'tunteja': 5966,\n    'tunteja_keskimaarin': 27,\n    'tehtavia': 4988,\n    'tehtavia_keskimaarin': 22\n}\n

    Sanakirjaan tallennetut arvot määrittyvät seuraavasti:

      \n
    • viikkoja: kurssia vastaavan JSON-olioiden määrä
    • \n
    • opiskelijoita viikkojen opiskelijamäärien maksimi
    • \n
    • tunteja: kakkien viikkojen tuntimäärien (hour_total) summa
    • \n
    • tunteja_keskimaarin: edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)
    • \n
    • tehtavia: kakkien viikkojen tehtävämäärien (exercise_total) summa
    • \n
    • tehtavia_keskimaarin: edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)
    • \n

    Huom: Samat huomiot pätevät tähän osaan kuin edelliseen!

    Huom2: löydät math -moduulista funktion, jonka avulla kokonaisluvun alaspäin pyöristäminen on helppoa

    Tiedostossa tentin_aloitus.csv on tenttien aloitusaikoja muodossa tunnus;hh:mm. Esimerkiksi:

    jarmo;09:00\ntimo;18:42\nkalle;13:23

    Lisäksi tiedostossa palautus.csv on tehtävien palautusaikoja muodossa tunnus;tehtävä;pisteet;hh:mm. Esimerkiksi:

    jarmo;1;8;16:05\ntimo;2;10;21:22\njarmo;2;10;19:15\njne...

    Tehtäväsi on etsiä ne opiskelijat, jotka ovat käyttäneet tenttiin yli 3 tuntia aikaa, eli opiskelijat, joiden jonkin tehtävän palautus on tehty yli 3 tuntia tentin aloitusajasta. Palautuksia voi siis olla useampi. Voit olettaa, että kaikki ajat ovat saman vuorokauden puolella.

    Kirjoita funktio huijarit(), joka palauttaa listan huijanneiden opiskelijoiden käyttäjätunnuksista.

    Käytössäsi on edellisessä tehtävässä määritellyt datatiedostot. Kirjoita funktio viralliset_pisteet(), joka palauttaa sanakirjassa (dict) opiskelijoiden koepisteet seuraavien sääntöjen mukaan:

      \n
    • Jos samaan tehtävänumeroon on tehty useita palautuksia, korkeimman pistemäärän palautus otetaan huomioon
    • \n
    • Jos tehtäväpalautus on tehty yli 3 tuntia tentin aloittamisen jälkeen, palautusta ei huomioida ollenkaan
    • \n

    Tehtävät on numeroitu 1–8 ja jokaisesta tehtävästä voi saada 0–6 pistettä.

    Palautetussa sanakirjassa tunnus on avain ja tehtävien yhteispistemäärä arvo.

    Vinkki: sisäkkäiset sanakirjat (dict) ovat mainio työkalua tallennettaessa eri opiskelijoiden pisteitä ja aikoja.

    Moduulien etsiminen

    Pythonin dokumentaatiosta löytyy tietoa kaikista standardikirjaston moduuleista:

    Standardikirjaston lisäksi verkosta löytyy lukuisia vapaasti käytettäviä kirjastoja eri tarpeisiin. Joitakin yleisesti käytettyjä moduuleja on täällä:

    Teemme tässä tehtävässä hieman parannellun version edellisen osan tehtävästä Spellchecker.

    Edellisen osan version tapaan ohjelma pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. Tämän lisäksi ohjelma antaa listan korjausehdotuksia väärin kirjotettuihin sanoihin.

    Seuraavassa kaksi käyttöesimerkkiä:

    write text: We use ptython to make a spell checker

    \nWe use *ptython* to make a spell checker\nkorjausehdotukset:\nptython: python, pythons, typhon\n

    write text: this is acually a good and usefull program

    \nthis is *acually* a good and *usefull* program\nkorjausehdotukset:\nacually: actually, tactually, factually\nusefull: usefully, useful, museful\n

    Korjausehdotukset etsitään standardikirjaston moduulin difflib tarjoaman funktion get_close_matches avulla.

    Huom: jotta testit toimisivat, käytä funktiota \"oletusasetuksilla\", eli antamalla sille kaksi parametria: virheellinen sana ja lista oikeista sanoista.

    ","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/4-datan-kasittely.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää moduulia CSV-tiedoston käsittelyyn"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää moduulia JSON-tiedoston käsittelyyn"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat hakea netissä olevan tiedoston sisällön"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"csv-tiedoston-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"CSV-tiedoston lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#csv-tiedoston-lukeminen","ariaLabel":"csv tiedoston lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olemme tähän mennessä käsitelleet CSV-tiedostoja omalla koodilla, mutta tähän on myös valmis moduuli "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/csv.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"csv"}]},{"type":"text","value":", jota voi käyttää näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" csv\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi.csv\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" rivi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" csv"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"reader"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" delimiter"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\";\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"rivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yllä oleva koodi lukee rivit CSV-tiedostosta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi.csv"}]},{"type":"text","value":", jossa erotinmerkki on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":". Esimerkiksi jos tiedoston sisältö on"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"012121212;5\n012345678;2\n015151515;4"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin koodi antaa seuraavan tuloksen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['012121212', '5']\n['012345678', '2']\n['015151515', '4']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mitä hyötyä on käyttää moduulia sen sijaan, että toteuttaa lukemisen itse "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"split"}]},{"type":"text","value":"-funktiolla? Yksi hyöty on, että moduulin toteutus toimii myös silloin, kun arvona on merkkijono, jonka sisällä on erotinmerkki. Esimerkiksi jos tiedoston sisältö on"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"\"aaa;bbb\";\"ccc;ddd\""}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"niin koodin tulos on:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['aaa;bbb', 'ccc;ddd']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos vain jakaisimme rivin osiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":";"}]},{"type":"text","value":"-merkkien kohdista, lukeminen ei toimisi oikein, koska myös merkkijonot jakaantuisivat."}]},{"type":"element","tagName":"h2","properties":{"id":"json-tiedoston-lukeminen","style":"position:relative;"},"children":[{"type":"text","value":"JSON-tiedoston lukeminen"},{"type":"element","tagName":"a","properties":{"href":"#json-tiedoston-lukeminen","ariaLabel":"json tiedoston lukeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"CSV-muodon lisäksi on olemassa muitakin koneluettavia tiedostomuotoja. Eräs näistä on erityisesti tietojen siirrossa yleisesti käytetty "},{"type":"element","tagName":"a","properties":{"href":"https://www.json.org/json-en.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"JSON"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"JSON-tiedostot ovat tekstitiedostoja, joilla on tietty tarkka muoto. Seuraavassa esimerkkinä JSON-tiedosto "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssit.json"}]},{"type":"text","value":", jossa on tietoa kursseista:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"x"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-x"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-x"]},"children":[{"type":"text","value":"[\n {\n \"nimi\": \"Ohjelmoinnin perusteet\",\n \"tunnus\": \"Ohpe\",\n \"periodit\": [1, 3]\n },\n {\n \"nimi\": \"Ohjelmoinnin jatkokurssi\",\n \"tunnus\": \"Ohja\",\n \"periodit\": [2, 4]\n },\n {\n \"nimi\": \"Tietokantasovellus\",\n \"tunnus\": \"Tsoha\",\n \"periodit\": [1, 2, 3, 4]\n }\n]"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"JSON-tiedostot näyttävät kohtuullisen tutulta Pythonin käyttäjille. Itse asiassa tiedoston sisältö vastaa Pythonin listaa, jonka sisällä on kolme sanakirjaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardikirjastossa on JSON-tiedostojen käsittelyyn moduuli "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/json.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"json"}]},{"type":"text","value":". Siinä oleva funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"loads"}]},{"type":"text","value":" muuttaa merkkijonona annetun JSON-datan Pythonin tietorakenteiksi. Esimerkiksi koodin"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" json\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"with"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"open"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kurssit.json\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"as"}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n data "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tiedosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"read"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" json"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loads"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"data"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"tulos on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[{'nimi': 'Ohjelmoinnin perusteet', 'tunnus': 'Ohpe', 'periodit': [1, 3]}, {'nimi': 'Ohjelmoinnin jatkokurssi', 'tunnus': 'Ohja', 'periodit': [2, 4]}, {'nimi': 'Tietokantasovellus', 'tunnus': 'Tsoha', 'periodit': [1, 2, 3, 4]}]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodia voisi jatkaa vaikka seuraavasti, jolloin koodi tulostaa jokaisen kurssin nimen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin perusteet\nOhjelmoinnin jatkokurssi\nTietokantasovellus"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"JSON-tiedoston käsittely","tmcname":"osa07-12_jsontiedostot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan JSON-tiedostoa, jossa on tietoa opiskelijoista seuraavassa muodossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"json"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-json"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Pythonisti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"ika\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"27"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"harrastukset\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kutominen\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jaana Javanainen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"ika\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","property"]},"children":[{"type":"text","value":"\"harrastukset\""}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koodaus\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kalliokiipeily\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lukeminen\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_henkilot(tiedosto: str)"}]},{"type":"text","value":", joka lukee esimerkin tavalla muodostetun JSON-tiedoston (jonka sisältönä voi olla mielivaltainen määrä henkilöitä) ja tulostaa ne seuraavassa muodossa:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Pythonisti 27 vuotta (koodaus, kutominen)\nJaana Javanainen 24 vuotta (koodaus, kalliokiipeily, lukeminen)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Harrastukset tulee luetella samassa järjestyksessä kuin ne on annettu JSON-tiedostossa."}]}]},{"type":"element","tagName":"h2","properties":{"id":"netissa-olevan-tiedoston-hakeminen","style":"position:relative;"},"children":[{"type":"text","value":"Netissä olevan tiedoston hakeminen"},{"type":"element","tagName":"a","properties":{"href":"#netissa-olevan-tiedoston-hakeminen","ariaLabel":"netissa olevan tiedoston hakeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin standardikirjaston funktion "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"urllib.request.urlopen"}]},{"type":"text","value":" avulla on helppo hakea internetistä sisältöä ohjelmista käsin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esim. seuraava koodi tulostaa Helsingin yliopiston etusivun sisällön:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request\n\npyynto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"urlopen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"https://helsinki.fi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pyynto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"read"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ihmisille tarkoitetut sivut tosin eivät tulostu kovin selkeinä, mutta internetissä on myös runsaasti koneluettavaa dataa, joka on usein JSON-muodossa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kurssien tilastot","tmcname":"osa07-13_kurssistatistiikka"},"children":[{"type":"element","tagName":"h4","properties":{"id":"tieto-kursseista","style":"position:relative;"},"children":[{"type":"text","value":"tieto kursseista"},{"type":"element","tagName":"a","properties":{"href":"#tieto-kursseista","ariaLabel":"tieto kursseista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Osoitteesta "},{"type":"element","tagName":"a","properties":{"href":"https://studies.cs.helsinki.fi/stats-mock/api/courses","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://studies.cs.helsinki.fi/stats-mock/api/courses"}]},{"type":"text","value":" löytyy JSON-muodossa muutaman laitoksen verkkokurssin perustiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_kaikki()"}]},{"type":"text","value":" joka hakee ja palauttaa kaikkien menossa olevien kurssien (kentän "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"enabled"}]},{"type":"text","value":" arvona "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":") tiedot listana tupleja. Paluuarvon muoto on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"[\n ('Full Stack Open 2020', 'ofs2019', 2020, 201),\n ('DevOps with Docker 2019', 'docker2019', 2019, 36),\n ('DevOps with Docker 2020', 'docker2020', 2020, 36),\n ('Beta DevOps with Kubernetes', 'beta-dwk-20', 2020, 28)\n]\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokainen tuple siis sisältää seuraavat arvot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"kurssin koko nimi ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fullName"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"nimi ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"name"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"vuosi ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"year"}]},{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"harjoitusten ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exercises"}]},{"type":"text","value":") yhteenlaskettu määrä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":": Tämän tehtävän testien toimivuuden osalta on oleellista, että haet tiedot funktiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"urllib.request.urlopen"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom2:"}]},{"type":"text","value":" Testeissä käytetään myös ovelaa kikkaa, joka hieman muuttaa internetistä tulevaa dataa ja tämän avulla varmistaa, että et huijaa tehtävässäsi palauttamalla \"kovakoodattua\" dataa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom3:"}]},{"type":"text","value":" Jotkut Mac-käyttäjät ovat törmänneet tehtävässä seuraavaan ongelmaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"text","value":"File "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py\""}]},{"type":"text","value":", line "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1353"}]},{"type":"text","value":", "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" do_open\n raise URLError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"err"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nurllib.error.URLError: "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":"urlopen error "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"SSL: CERTIFICATE_VERIFY_FAILED"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" certificate verify failed: unable to get "},{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":"local"}]},{"type":"text","value":" issuer certificate "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"_ssl.c:1124"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelman ratkaisutapa riippuu siitä miten python on asennettu koneellesi. Joissain tapauksissa toimii seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"sh"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-sh"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","builtin","class-name"]},"children":[{"type":"text","value":"cd"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"/Applications/Python 3.8/\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sudo"}]},{"type":"text","value":" \"./Install Certificates.command"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että cd-komennon polku riippuu käyttämästäsi Pythonin versiosta. Se voi olla myös \"/Applications/Python 3.8/\"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Täällä"}]},{"type":"text","value":" on ehdotettu useita erilaisia ratkaisuja ongelmaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eräs kikka jota voit kokeilla, on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" json\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" ssl "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisää tämä kirjasto importeihin"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_kaikki"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja tämä rivi funktioiden alkuun"}]},{"type":"text","value":"\n context "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" ssl"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"_create_unverified_context"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toinen tapa kiertää ongelma on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" certifi "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisää tämä kirjasto importeihin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" json\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_kaikki"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osoite "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"https://studies.cs.helsinki.fi/stats-mock/api/courses\""}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# lisätään kutsuun toinen parametri"}]},{"type":"text","value":"\n pyynto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" urllib"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"request"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"urlopen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osoite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" cafile"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":"certifi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"where"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muu koodi"}]}]}]}]},{"type":"element","tagName":"h4","properties":{"id":"yhden-kurssin-tiedot","style":"position:relative;"},"children":[{"type":"text","value":"yhden kurssin tiedot"},{"type":"element","tagName":"a","properties":{"href":"#yhden-kurssin-tiedot","ariaLabel":"yhden kurssin tiedot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kunkin kurssin JSON-muotoinen tehtävästatistiikka löytyy omasta osoitteesta, joka saadaan vaihtamalla kurssin kenttä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"name"}]},{"type":"text","value":" seuraavassa tähtien paikalle "},{"type":"element","tagName":"a","properties":{"href":"https://studies.cs.helsinki.fi/stats-mock/api/courses/****/stats","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://studies.cs.helsinki.fi/stats-mock/api/courses/****/stats"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi kurssin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"docker2019"}]},{"type":"text","value":" tiedot ovat osoitteessa "},{"type":"element","tagName":"a","properties":{"href":"https://studies.cs.helsinki.fi/stats-mock/api/courses/docker2019/stats","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://studies.cs.helsinki.fi/stats-mock/api/courses/docker2019/stats"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelmaasi funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_kurssi(kurssi: str)"}]},{"type":"text","value":", joka palauttaa kurssin tarkemman tehtävästatistiikan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun kutsutaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_kurssi(\"docker2019\")"}]},{"type":"text","value":", funktio palauttaa sanakirjan, jonka sisältö on seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"{\n 'viikkoja': 4,\n 'opiskelijoita': 220,\n 'tunteja': 5966,\n 'tunteja_keskimaarin': 27,\n 'tehtavia': 4988,\n 'tehtavia_keskimaarin': 22\n}\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjaan tallennetut arvot määrittyvät seuraavasti:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viikkoja"}]},{"type":"text","value":": kurssia vastaavan JSON-olioiden määrä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opiskelijoita"}]},{"type":"text","value":" viikkojen opiskelijamäärien maksimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunteja"}]},{"type":"text","value":": kakkien viikkojen tuntimäärien ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hour_total"}]},{"type":"text","value":") summa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunteja_keskimaarin"}]},{"type":"text","value":": edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tehtavia"}]},{"type":"text","value":": kakkien viikkojen tehtävämäärien ("},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"exercise_total"}]},{"type":"text","value":") summa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tehtavia_keskimaarin"}]},{"type":"text","value":": edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":": Samat huomiot pätevät tähän osaan kuin edelliseen!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom2"}]},{"type":"text","value":": löydät "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/math.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":" -moduulista funktion, jonka avulla kokonaisluvun alaspäin pyöristäminen on helppoa"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuka huijasi","tmcname":"osa07-14_kuka_huijasi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tentin_aloitus.csv"}]},{"type":"text","value":" on tenttien aloitusaikoja muodossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnus;hh:mm"}]},{"type":"text","value":". Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jarmo;09:00"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"timo;18:42"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"kalle;13:23"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palautus.csv"}]},{"type":"text","value":" on tehtävien palautusaikoja muodossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tunnus;tehtävä;pisteet;hh:mm"}]},{"type":"text","value":". Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"csv"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-csv"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jarmo;1;8;16:05"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"timo;2;10;21:22"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jarmo;2;10;19:15"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","value"]},"children":[{"type":"text","value":"jne..."}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväsi on etsiä ne opiskelijat, jotka ovat käyttäneet tenttiin yli 3 tuntia aikaa, eli opiskelijat, joiden "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"jonkin"}]},{"type":"text","value":" tehtävän palautus on tehty yli 3 tuntia tentin aloitusajasta. Palautuksia voi siis olla useampi. Voit olettaa, että kaikki ajat ovat saman vuorokauden puolella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"huijarit()"}]},{"type":"text","value":", joka palauttaa listan huijanneiden opiskelijoiden käyttäjätunnuksista."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kuka huijasi, versio 2","tmcname":"osa07-15_kuka_huijasi_2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytössäsi on edellisessä tehtävässä määritellyt datatiedostot. Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viralliset_pisteet()"}]},{"type":"text","value":", joka palauttaa sanakirjassa (dict) opiskelijoiden koepisteet seuraavien sääntöjen mukaan:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos samaan tehtävänumeroon on tehty useita palautuksia, korkeimman pistemäärän palautus otetaan huomioon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jos tehtäväpalautus on tehty yli 3 tuntia tentin aloittamisen jälkeen, palautusta ei huomioida ollenkaan"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävät on numeroitu 1–8 ja jokaisesta tehtävästä voi saada 0–6 pistettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Palautetussa sanakirjassa tunnus on avain ja tehtävien yhteispistemäärä arvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vinkki: sisäkkäiset sanakirjat (dict) ovat mainio työkalua tallennettaessa eri opiskelijoiden pisteitä ja aikoja."}]}]},{"type":"element","tagName":"h2","properties":{"id":"moduulien-etsiminen","style":"position:relative;"},"children":[{"type":"text","value":"Moduulien etsiminen"},{"type":"element","tagName":"a","properties":{"href":"#moduulien-etsiminen","ariaLabel":"moduulien etsiminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonin dokumentaatiosta löytyy tietoa kaikista standardikirjaston moduuleista:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://docs.python.org/3/library/"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Standardikirjaston lisäksi verkosta löytyy lukuisia vapaasti käytettäviä kirjastoja eri tarpeisiin. Joitakin yleisesti käytettyjä moduuleja on täällä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://wiki.python.org/moin/UsefulModules","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"https://wiki.python.org/moin/UsefulModules"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Spellchecker, versio 2","tmcname":"osa07-16_spellchecker_versio2"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teemme tässä tehtävässä hieman parannellun version edellisen osan tehtävästä Spellchecker."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisen osan version tapaan ohjelma pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Tämän lisäksi ohjelma antaa listan korjausehdotuksia väärin kirjotettuihin sanoihin."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa kaksi käyttöesimerkkiä:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"We use ptython to make a spell checker"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"We use *ptython* to make a spell checker\nkorjausehdotukset:\nptython: python, pythons, typhon\n"}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"write text: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"this is acually a good and usefull program"}]}]},{"type":"element","tagName":"pre","properties":{},"children":[{"type":"text","value":"this is *acually* a good and *usefull* program\nkorjausehdotukset:\nacually: actually, tactually, factually\nusefull: usefully, useful, museful\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjausehdotukset etsitään standardikirjaston moduulin "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/difflib.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"difflib"}]},{"type":"text","value":" tarjoaman funktion "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/difflib.html#difflib.get_close_matches","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"get_close_matches"}]},{"type":"text","value":" avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":": jotta testit toimisivat, käytä funktiota \"oletusasetuksilla\", eli antamalla sille kaksi parametria: virheellinen sana ja lista oikeista sanoista."}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd"},"children":[]}]}]},"html":"

    Tämän osion jälkeen:

      \n
    • Osaat käyttää moduulia CSV-tiedoston käsittelyyn
    • \n
    • Osaat käyttää moduulia JSON-tiedoston käsittelyyn
    • \n
    • Osaat hakea netissä olevan tiedoston sisällön
    • \n

    CSV-tiedoston lukeminen

    Olemme tähän mennessä käsitelleet CSV-tiedostoja omalla koodilla, mutta tähän on myös valmis moduuli csv, jota voi käyttää näin:

    import csv\n\nwith open(\"testi.csv\") as tiedosto:\n    for rivi in csv.reader(tiedosto, delimiter=\";\"):\n        print(rivi)

    Yllä oleva koodi lukee rivit CSV-tiedostosta testi.csv, jossa erotinmerkki on ;. Esimerkiksi jos tiedoston sisältö on

    012121212;5\n012345678;2\n015151515;4

    niin koodi antaa seuraavan tuloksen:

    ['012121212', '5']\n['012345678', '2']\n['015151515', '4']

    Mitä hyötyä on käyttää moduulia sen sijaan, että toteuttaa lukemisen itse split-funktiolla? Yksi hyöty on, että moduulin toteutus toimii myös silloin, kun arvona on merkkijono, jonka sisällä on erotinmerkki. Esimerkiksi jos tiedoston sisältö on

    "aaa;bbb";"ccc;ddd"

    niin koodin tulos on:

    ['aaa;bbb', 'ccc;ddd']

    Jos vain jakaisimme rivin osiin ;-merkkien kohdista, lukeminen ei toimisi oikein, koska myös merkkijonot jakaantuisivat.

    JSON-tiedoston lukeminen

    CSV-muodon lisäksi on olemassa muitakin koneluettavia tiedostomuotoja. Eräs näistä on erityisesti tietojen siirrossa yleisesti käytetty JSON.

    JSON-tiedostot ovat tekstitiedostoja, joilla on tietty tarkka muoto. Seuraavassa esimerkkinä JSON-tiedosto kurssit.json, jossa on tietoa kursseista:

    [\n    {\n        "nimi": "Ohjelmoinnin perusteet",\n        "tunnus": "Ohpe",\n        "periodit": [1, 3]\n    },\n    {\n        "nimi": "Ohjelmoinnin jatkokurssi",\n        "tunnus": "Ohja",\n        "periodit": [2, 4]\n    },\n    {\n        "nimi": "Tietokantasovellus",\n        "tunnus": "Tsoha",\n        "periodit": [1, 2, 3, 4]\n    }\n]

    JSON-tiedostot näyttävät kohtuullisen tutulta Pythonin käyttäjille. Itse asiassa tiedoston sisältö vastaa Pythonin listaa, jonka sisällä on kolme sanakirjaa.

    Standardikirjastossa on JSON-tiedostojen käsittelyyn moduuli json. Siinä oleva funktio loads muuttaa merkkijonona annetun JSON-datan Pythonin tietorakenteiksi. Esimerkiksi koodin

    import json\n\nwith open(\"kurssit.json\") as tiedosto:\n    data = tiedosto.read()\nkurssit = json.loads(data)\nprint(kurssit)

    tulos on seuraava:

    [{'nimi': 'Ohjelmoinnin perusteet', 'tunnus': 'Ohpe', 'periodit': [1, 3]}, {'nimi': 'Ohjelmoinnin jatkokurssi', 'tunnus': 'Ohja', 'periodit': [2, 4]}, {'nimi': 'Tietokantasovellus', 'tunnus': 'Tsoha', 'periodit': [1, 2, 3, 4]}]

    Koodia voisi jatkaa vaikka seuraavasti, jolloin koodi tulostaa jokaisen kurssin nimen:

    for kurssi in kurssit:\n    print(kurssi[\"nimi\"])

    Ohjelmoinnin perusteet\nOhjelmoinnin jatkokurssi\nTietokantasovellus

    Tarkastellaan JSON-tiedostoa, jossa on tietoa opiskelijoista seuraavassa muodossa:

    [\n    {\n        \"nimi\": \"Pekka Pythonisti\",\n        \"ika\": 27,\n        \"harrastukset\": [\n            \"koodaus\",\n            \"kutominen\"\n        ]\n    },\n    {\n        \"nimi\": \"Jaana Javanainen\",\n        \"ika\": 24,\n        \"harrastukset\": [\n            \"koodaus\",\n            \"kalliokiipeily\",\n            \"lukeminen\"\n        ]\n    }\n]

    Toteuta funktio tulosta_henkilot(tiedosto: str), joka lukee esimerkin tavalla muodostetun JSON-tiedoston (jonka sisältönä voi olla mielivaltainen määrä henkilöitä) ja tulostaa ne seuraavassa muodossa:

    Pekka Pythonisti 27 vuotta (koodaus, kutominen)\nJaana Javanainen 24 vuotta (koodaus, kalliokiipeily, lukeminen)

    Harrastukset tulee luetella samassa järjestyksessä kuin ne on annettu JSON-tiedostossa.

    Netissä olevan tiedoston hakeminen

    Pythonin standardikirjaston funktion urllib.request.urlopen avulla on helppo hakea internetistä sisältöä ohjelmista käsin.

    Esim. seuraava koodi tulostaa Helsingin yliopiston etusivun sisällön:

    import urllib.request\n\npyynto = urllib.request.urlopen(\"https://helsinki.fi\")\nprint(pyynto.read())

    Ihmisille tarkoitetut sivut tosin eivät tulostu kovin selkeinä, mutta internetissä on myös runsaasti koneluettavaa dataa, joka on usein JSON-muodossa.

    tieto kursseista

    Osoitteesta https://studies.cs.helsinki.fi/stats-mock/api/courses löytyy JSON-muodossa muutaman laitoksen verkkokurssin perustiedot.

    Tee funktio hae_kaikki() joka hakee ja palauttaa kaikkien menossa olevien kurssien (kentän enabled arvona True) tiedot listana tupleja. Paluuarvon muoto on seuraava:

    \n[\n    ('Full Stack Open 2020', 'ofs2019', 2020, 201),\n    ('DevOps with Docker 2019', 'docker2019', 2019, 36),\n    ('DevOps with Docker 2020', 'docker2020', 2020, 36),\n    ('Beta DevOps with Kubernetes', 'beta-dwk-20', 2020, 28)\n]\n

    Jokainen tuple siis sisältää seuraavat arvot:

      \n
    • kurssin koko nimi (fullName)
    • \n
    • nimi (name)
    • \n
    • vuosi (year)
    • \n
    • harjoitusten (exercises) yhteenlaskettu määrä
    • \n

    Huom: Tämän tehtävän testien toimivuuden osalta on oleellista, että haet tiedot funktiolla urllib.request.urlopen.

    Huom2: Testeissä käytetään myös ovelaa kikkaa, joka hieman muuttaa internetistä tulevaa dataa ja tämän avulla varmistaa, että et huijaa tehtävässäsi palauttamalla \"kovakoodattua\" dataa.

    Huom3: Jotkut Mac-käyttäjät ovat törmänneet tehtävässä seuraavaan ongelmaan:

    File \"/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py\", line 1353, in do_open\n    raise URLError(err)\nurllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1124)>

    Ongelman ratkaisutapa riippuu siitä miten python on asennettu koneellesi. Joissain tapauksissa toimii seuraava:

    cd \"/Applications/Python 3.8/\"\nsudo \"./Install Certificates.command

    Huomaa, että cd-komennon polku riippuu käyttämästäsi Pythonin versiosta. Se voi olla myös \"/Applications/Python 3.8/\".

    Täällä on ehdotettu useita erilaisia ratkaisuja ongelmaan.

    Eräs kikka jota voit kokeilla, on seuraava:

    import urllib.request\nimport json\nimport ssl # lisää tämä kirjasto importeihin\n\ndef hae_kaikki():\n    # ja tämä rivi funktioiden alkuun\n    context = ssl._create_unverified_context()\n    # muu koodi

    Toinen tapa kiertää ongelma on seuraava:

    import urllib.request\nimport certifi # lisää tämä kirjasto importeihin\nimport json\n\ndef hae_kaikki():\n   osoite = \"https://studies.cs.helsinki.fi/stats-mock/api/courses\"\n   # lisätään kutsuun toinen parametri\n   pyynto = urllib.request.urlopen(osoite, cafile=certifi.where())\n   # muu koodi

    yhden kurssin tiedot

    Kunkin kurssin JSON-muotoinen tehtävästatistiikka löytyy omasta osoitteesta, joka saadaan vaihtamalla kurssin kenttä name seuraavassa tähtien paikalle https://studies.cs.helsinki.fi/stats-mock/api/courses/****/stats

    Esimerkiksi kurssin docker2019 tiedot ovat osoitteessa https://studies.cs.helsinki.fi/stats-mock/api/courses/docker2019/stats

    Tee ohjelmaasi funktio hae_kurssi(kurssi: str), joka palauttaa kurssin tarkemman tehtävästatistiikan.

    Kun kutsutaan hae_kurssi(\"docker2019\"), funktio palauttaa sanakirjan, jonka sisältö on seuraava:

    \n{\n    'viikkoja': 4,\n    'opiskelijoita': 220,\n    'tunteja': 5966,\n    'tunteja_keskimaarin': 27,\n    'tehtavia': 4988,\n    'tehtavia_keskimaarin': 22\n}\n

    Sanakirjaan tallennetut arvot määrittyvät seuraavasti:

      \n
    • viikkoja: kurssia vastaavan JSON-olioiden määrä
    • \n
    • opiskelijoita viikkojen opiskelijamäärien maksimi
    • \n
    • tunteja: kakkien viikkojen tuntimäärien (hour_total) summa
    • \n
    • tunteja_keskimaarin: edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)
    • \n
    • tehtavia: kakkien viikkojen tehtävämäärien (exercise_total) summa
    • \n
    • tehtavia_keskimaarin: edellinen jaettuna opiskelijamäärällä (kokonaislukuna pyöristettynä alaspäin)
    • \n

    Huom: Samat huomiot pätevät tähän osaan kuin edelliseen!

    Huom2: löydät math -moduulista funktion, jonka avulla kokonaisluvun alaspäin pyöristäminen on helppoa

    Tiedostossa tentin_aloitus.csv on tenttien aloitusaikoja muodossa tunnus;hh:mm. Esimerkiksi:

    jarmo;09:00\ntimo;18:42\nkalle;13:23

    Lisäksi tiedostossa palautus.csv on tehtävien palautusaikoja muodossa tunnus;tehtävä;pisteet;hh:mm. Esimerkiksi:

    jarmo;1;8;16:05\ntimo;2;10;21:22\njarmo;2;10;19:15\njne...

    Tehtäväsi on etsiä ne opiskelijat, jotka ovat käyttäneet tenttiin yli 3 tuntia aikaa, eli opiskelijat, joiden jonkin tehtävän palautus on tehty yli 3 tuntia tentin aloitusajasta. Palautuksia voi siis olla useampi. Voit olettaa, että kaikki ajat ovat saman vuorokauden puolella.

    Kirjoita funktio huijarit(), joka palauttaa listan huijanneiden opiskelijoiden käyttäjätunnuksista.

    Käytössäsi on edellisessä tehtävässä määritellyt datatiedostot. Kirjoita funktio viralliset_pisteet(), joka palauttaa sanakirjassa (dict) opiskelijoiden koepisteet seuraavien sääntöjen mukaan:

      \n
    • Jos samaan tehtävänumeroon on tehty useita palautuksia, korkeimman pistemäärän palautus otetaan huomioon
    • \n
    • Jos tehtäväpalautus on tehty yli 3 tuntia tentin aloittamisen jälkeen, palautusta ei huomioida ollenkaan
    • \n

    Tehtävät on numeroitu 1–8 ja jokaisesta tehtävästä voi saada 0–6 pistettä.

    Palautetussa sanakirjassa tunnus on avain ja tehtävien yhteispistemäärä arvo.

    Vinkki: sisäkkäiset sanakirjat (dict) ovat mainio työkalua tallennettaessa eri opiskelijoiden pisteitä ja aikoja.

    Moduulien etsiminen

    Pythonin dokumentaatiosta löytyy tietoa kaikista standardikirjaston moduuleista:

    Standardikirjaston lisäksi verkosta löytyy lukuisia vapaasti käytettäviä kirjastoja eri tarpeisiin. Joitakin yleisesti käytettyjä moduuleja on täällä:

    Teemme tässä tehtävässä hieman parannellun version edellisen osan tehtävästä Spellchecker.

    Edellisen osan version tapaan ohjelma pyytää käyttäjää kirjoittamaan rivin englanninkielistä tekstiä. Ohjelma suorittaa tekstille oikeinkirjoitustarkistuksen ja tulostaa saman tekstin siten, että kaikki väärin kirjoitetut sanat on ympäröity tähdillä. Tämän lisäksi ohjelma antaa listan korjausehdotuksia väärin kirjotettuihin sanoihin.

    Seuraavassa kaksi käyttöesimerkkiä:

    write text: We use ptython to make a spell checker

    \nWe use *ptython* to make a spell checker\nkorjausehdotukset:\nptython: python, pythons, typhon\n

    write text: this is acually a good and usefull program

    \nthis is *acually* a good and *usefull* program\nkorjausehdotukset:\nacually: actually, tactually, factually\nusefull: usefully, useful, museful\n

    Korjausehdotukset etsitään standardikirjaston moduulin difflib tarjoaman funktion get_close_matches avulla.

    Huom: jotta testit toimisivat, käytä funktiota \"oletusasetuksilla\", eli antamalla sille kaksi parametria: virheellinen sana ja lista oikeista sanoista.

    ","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/4-datan-kasittely.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/5-omat-moduulit/page-data.json b/page-data/osa-7/5-omat-moduulit/page-data.json index c98e9da6c..8c920cc51 100644 --- a/page-data/osa-7/5-omat-moduulit/page-data.json +++ b/page-data/osa-7/5-omat-moduulit/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-7/5-omat-moduulit", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda oman moduulin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä Pythonin muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__name__"}]},{"type":"text","value":" ja sen arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__main__"}]},{"type":"text","value":" merkitsevät"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omien moduulien tekeminen on helppoa Pythonissa, koska mikä tahansa Python-koodia sisältävä tiedosto voi toimia moduulina. Tarkastellaan esimerkkinä seuraavaa tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.py"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sanojen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää tässä tiedostossa olevia funktioita toisessa tiedostossa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sanat\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vesihiisi\nhississä\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että moduulin kooditiedoston pitää sijaita joko samassa hakemistossa ohjelman kanssa tai jossakin Pythonin oletushakemistossa, jotta sen voi ottaa käyttöön "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-komennolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää omaa moduulia samalla periaatteella kuin standardikirjaston moduuleja. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" sanat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vika_sana\n\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lause: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eka sana oli: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen sana oli: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lause: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Python on metka ohjelmointikieli"}]},{"type":"text","value":"\nEka sana oli: Python\nViimeinen sana oli: ohjelmointikieli"}]}]},{"type":"element","tagName":"h2","properties":{"id":"hyotya-tyyppivihjeista","style":"position:relative;"},"children":[{"type":"text","value":"Hyötyä tyyppivihjeistä"},{"type":"element","tagName":"a","properties":{"href":"#hyotya-tyyppivihjeista","ariaLabel":"hyotya tyyppivihjeista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulissa on hyödyllistä, että funktioissa käytetään tyyppivihjeitä. Kun joku muu käyttää moduulia editorilla, joka ymmärtää tyyppivihjeitä, ne helpottavat moduulin käyttämistä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi Visual Studio Code näyttää funktion tyypit näin koodia kirjoittaessa:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 519px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/7772b5ee03bb1ca30f17560902916121/b23ad/7_vihje.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 23.91304347826087%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAsklEQVQY032Q2w6DIBBE+Q4DmpSLilwEtG82sf//T9OwxD7VPpzM7IadJcv6vscdQojbPuec/DAMxOXZv0AuOKy12Pcn1jUh54JSCo7jhfN8I4RI/WmaEeMK7wNY3XRH13Wwcwvctp2ooc55Gq5B4zjBmJF8VWaMglIKWmtIKWGMofrq5ZKRc/7+poZJqfB4SNL2VpOvsBAsvHeIMWJZFqRUh1qdcoILrt1McNLKdbdffADLIo82jUnA7AAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7772b5ee03bb1ca30f17560902916121/a0b58/7_vihje.webp 230w","/static/7772b5ee03bb1ca30f17560902916121/bc10c/7_vihje.webp 460w","/static/7772b5ee03bb1ca30f17560902916121/ad2dd/7_vihje.webp 519w"],"sizes":"(max-width: 519px) 100vw, 519px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7772b5ee03bb1ca30f17560902916121/81c8e/7_vihje.png 230w","/static/7772b5ee03bb1ca30f17560902916121/08a84/7_vihje.png 460w","/static/7772b5ee03bb1ca30f17560902916121/b23ad/7_vihje.png 519w"],"sizes":"(max-width: 519px) 100vw, 519px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7772b5ee03bb1ca30f17560902916121/b23ad/7_vihje.png","alt":"7 vihje","title":"7 vihje","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-paatason-koodi","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin päätason koodi"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-paatason-koodi","ariaLabel":"moduulin paatason koodi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos moduulissa on päätason koodia, joka ei ole funktion sisällä, koodi suoritetaan automaattisesti, kun moduuli otetaan mukaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-komennolla toisessa tiedostossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.py"}]},{"type":"text","value":"-tiedostoon on kirjoitettu muutama testitapaus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sanojen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testeistä toinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yks kaks kolme neljä viisi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun moduuli otetaan nyt käyttöön "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella, suoritetaan automaattisesti myös moduulissa funktioiden ulkopuolella oleva koodi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sanat\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä\ntoinen\n5\nVesihiisi\nhississä\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei ole hyvä, koska moduulin käyttäjän ohjelmaa sotkee moduulissa oleva testitulostus."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonista löytyy onneksi ratkaisu pulmaan. Ohjelmassa on mahdollista testata, suoritetaanko ohjelmaa itseään vai onko ohjelma otettu käyttöön moduulina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella. Tämä onnistuu muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__name__"}]},{"type":"text","value":" avulla. Python tallentaa muuttujaan tiedon suoritettavasta ohjelmasta: jos ohjelmaa suoritetaan sellaisenaan, muuttujan arvo on merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__main__"}]},{"type":"text","value":". Jos ohjelma on tuotu osaksi jotain toista ohjelmaa, muuttujan arvona on suoritettavan ohjelman nimi (eli tässä tapauksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduuliin voidaan siis lisätä edellistä tietoa hyödyntäen ehtolause, jonka avulla testikoodi suoritetaan ainoastaan silloin, kun ohjelma ajetaan omana itsenään eikä toisen ohjelman osaksi tuotuna:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sanojen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan funktioiden toimintaa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testeistä toinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanojen_lkm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yks kaks kolme neljä viisi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt moduulin itsensä suorittaminen suorittaa testikutsut:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä\ntoinen\n5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun moduuli sen sijaan tuodaan osaksi jotain muuta ohjelmaa, testejä ei suoriteta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sanat\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vesihiisi\nhississä\n3"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Merkkiapuri","tmcname":"osa07-17_merkkiapuri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee moduuli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkiapuri"}]},{"type":"text","value":", joka sisältää seuraavat funktiot:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaihda_koko(merkkijono: str)"}]},{"type":"text","value":" saa parametrikseen merkkijonon. Funktio luo ja palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon pienet kirjaimet on muutettu isoiksi kirjaimiksi ja päinvastoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"puolita(merkkijono: str)"}]},{"type":"text","value":" palauttaa tuplessa parametrinaan saamansa merkkijonon ensimmäisen ja toisen puolikkaan. Jos merkkijonossa on pariton määrä kirjaimia, ensimmäinen puolikas on lyhyempi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_erikoismerkit(merkkijono: str)"}]},{"type":"text","value":" palauttaa merkkijonon, josta on poistettu kaikki muut merkit paitsi aakkoset [a...ö, A...Ö], numerot ja välilyönnit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä moduulin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" merkkiapuri\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkiapuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaihda_koko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\np1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" p2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkkiapuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puolita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nm2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkkiapuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"poista_erikoismerkit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi, katsotaan miten käy!!!11!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"mOI KAIKKI!\nMoi k\naikki!\nTämä on testi katsotaan miten käy11"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda oman moduulin
    • \n
    • Tiedät, mitä Pythonin muuttuja __name__ ja sen arvo __main__ merkitsevät
    • \n

    Omien moduulien tekeminen on helppoa Pythonissa, koska mikä tahansa Python-koodia sisältävä tiedosto voi toimia moduulina. Tarkastellaan esimerkkinä seuraavaa tiedostoa sanat.py:

    def eka_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[0]\n\ndef vika_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[-1]\n\ndef sanojen_maara(mjono: str):\n    osat = mjono.split(\" \")\n    return len(osat)

    Voimme käyttää tässä tiedostossa olevia funktioita toisessa tiedostossa seuraavasti:

    import sanat\n\nmjono = \"Vesihiisi sihisi hississä\"\n\nprint(sanat.eka_sana(mjono))\nprint(sanat.vika_sana(mjono))\nprint(sanat.sanojen_maara(mjono))

    Vesihiisi\nhississä\n3

    Huomaa, että moduulin kooditiedoston pitää sijaita joko samassa hakemistossa ohjelman kanssa tai jossakin Pythonin oletushakemistossa, jotta sen voi ottaa käyttöön import-komennolla.

    Voimme käyttää omaa moduulia samalla periaatteella kuin standardikirjaston moduuleja. Esimerkiksi näin:

    from sanat import eka_sana, vika_sana\n\nlause = input(\"Anna lause: \")\n\nprint(\"Eka sana oli: \" + eka_sana(lause))\nprint(\"Viimeinen sana oli: \" + vika_sana(lause))

    Anna lause: Python on metka ohjelmointikieli\nEka sana oli: Python\nViimeinen sana oli: ohjelmointikieli

    Hyötyä tyyppivihjeistä

    Moduulissa on hyödyllistä, että funktioissa käytetään tyyppivihjeitä. Kun joku muu käyttää moduulia editorilla, joka ymmärtää tyyppivihjeitä, ne helpottavat moduulin käyttämistä.

    Esimerkiksi Visual Studio Code näyttää funktion tyypit näin koodia kirjoittaessa:

    \n \n \n \n \n \n \"7\n \n \n

    Moduulin päätason koodi

    Jos moduulissa on päätason koodia, joka ei ole funktion sisällä, koodi suoritetaan automaattisesti, kun moduuli otetaan mukaan import-komennolla toisessa tiedostossa.

    Oletetaan, että sanat.py-tiedostoon on kirjoitettu muutama testitapaus:

    def eka_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[0]\n\ndef vika_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[-1]\n\ndef sanojen_maara(mjono: str):\n    osat = mjono.split(\" \")\n    return len(osat)\n\nprint(eka_sana(\"Tämä on testi\"))\nprint(vika_sana(\"Tämä on testeistä toinen\"))\nprint(sanojen_maara(\"Yks kaks kolme neljä viisi\"))

    Kun moduuli otetaan nyt käyttöön import-lauseella, suoritetaan automaattisesti myös moduulissa funktioiden ulkopuolella oleva koodi:

    import sanat\n\nmjono = \"Vesihiisi sihisi hississä\"\n\nprint(sanat.eka_sana(mjono))\nprint(sanat.vika_sana(mjono))\nprint(sanat.sanojen_maara(mjono))

    Tämä\ntoinen\n5\nVesihiisi\nhississä\n3

    Tämä ei ole hyvä, koska moduulin käyttäjän ohjelmaa sotkee moduulissa oleva testitulostus.

    Pythonista löytyy onneksi ratkaisu pulmaan. Ohjelmassa on mahdollista testata, suoritetaanko ohjelmaa itseään vai onko ohjelma otettu käyttöön moduulina import-lauseella. Tämä onnistuu muuttujan __name__ avulla. Python tallentaa muuttujaan tiedon suoritettavasta ohjelmasta: jos ohjelmaa suoritetaan sellaisenaan, muuttujan arvo on merkkijono __main__. Jos ohjelma on tuotu osaksi jotain toista ohjelmaa, muuttujan arvona on suoritettavan ohjelman nimi (eli tässä tapauksessa sanat).

    Moduuliin voidaan siis lisätä edellistä tietoa hyödyntäen ehtolause, jonka avulla testikoodi suoritetaan ainoastaan silloin, kun ohjelma ajetaan omana itsenään eikä toisen ohjelman osaksi tuotuna:

    def eka_sana(mjono: str) -> str:\n    osat = mjono.split(\" \")\n    return osat[0]\n\ndef vika_sana(mjono: str) -> str:\n    osat = mjono.split(\" \")\n    return osat[-1]\n\ndef sanojen_maara(mjono: str) -> int:\n    osat = mjono.split(\" \")\n    return len(osat)\n\nif __name__ == \"__main__\":\n    # Testataan funktioiden toimintaa\n    print(eka_sana(\"Tämä on testi\"))\n    print(vika_sana(\"Tämä on testeistä toinen\"))\n    print(sanojen_lkm(\"Yks kaks kolme neljä viisi\"))

    Nyt moduulin itsensä suorittaminen suorittaa testikutsut:

    Tämä\ntoinen\n5

    Kun moduuli sen sijaan tuodaan osaksi jotain muuta ohjelmaa, testejä ei suoriteta:

    import sanat\n\nmjono = \"Vesihiisi sihisi hississä\"\n\nprint(sanat.eka_sana(mjono))\nprint(sanat.vika_sana(mjono))\nprint(sanat.sanojen_maara(mjono))

    Vesihiisi\nhississä\n3

    Tee moduuli merkkiapuri, joka sisältää seuraavat funktiot:

    Funktio vaihda_koko(merkkijono: str) saa parametrikseen merkkijonon. Funktio luo ja palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon pienet kirjaimet on muutettu isoiksi kirjaimiksi ja päinvastoin.

    Funktio puolita(merkkijono: str) palauttaa tuplessa parametrinaan saamansa merkkijonon ensimmäisen ja toisen puolikkaan. Jos merkkijonossa on pariton määrä kirjaimia, ensimmäinen puolikas on lyhyempi.

    Funktio poista_erikoismerkit(merkkijono: str) palauttaa merkkijonon, josta on poistettu kaikki muut merkit paitsi aakkoset [a...ö, A...Ö], numerot ja välilyönnit.

    Esimerkkejä moduulin toiminnasta:

    import merkkiapuri\n\nmjono = \"Moi kaikki!\"\n\nprint(merkkiapuri.vaihda_koko(mjono))\n\np1, p2 = merkkiapuri.puolita(mjono)\n\nprint(p1)\nprint(p2)\n\nm2 = merkkiapuri.poista_erikoismerkit(\"Tämä on testi, katsotaan miten käy!!!11!\")\nprint(m2)

    mOI KAIKKI!\nMoi k\naikki!\nTämä on testi katsotaan miten käy11

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/5-omat-moduulit.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda oman moduulin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä Pythonin muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__name__"}]},{"type":"text","value":" ja sen arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__main__"}]},{"type":"text","value":" merkitsevät"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omien moduulien tekeminen on helppoa Pythonissa, koska mikä tahansa Python-koodia sisältävä tiedosto voi toimia moduulina. Tarkastellaan esimerkkinä seuraavaa tiedostoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.py"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sanojen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää tässä tiedostossa olevia funktioita toisessa tiedostossa seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sanat\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vesihiisi\nhississä\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että moduulin kooditiedoston pitää sijaita joko samassa hakemistossa ohjelman kanssa tai jossakin Pythonin oletushakemistossa, jotta sen voi ottaa käyttöön "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-komennolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voimme käyttää omaa moduulia samalla periaatteella kuin standardikirjaston moduuleja. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" sanat "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vika_sana\n\nlause "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"input"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Anna lause: \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eka sana oli: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viimeinen sana oli: \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lause"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lause: "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Python on metka ohjelmointikieli"}]},{"type":"text","value":"\nEka sana oli: Python\nViimeinen sana oli: ohjelmointikieli"}]}]},{"type":"element","tagName":"h2","properties":{"id":"hyotya-tyyppivihjeista","style":"position:relative;"},"children":[{"type":"text","value":"Hyötyä tyyppivihjeistä"},{"type":"element","tagName":"a","properties":{"href":"#hyotya-tyyppivihjeista","ariaLabel":"hyotya tyyppivihjeista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduulissa on hyödyllistä, että funktioissa käytetään tyyppivihjeitä. Kun joku muu käyttää moduulia editorilla, joka ymmärtää tyyppivihjeitä, ne helpottavat moduulin käyttämistä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi Visual Studio Code näyttää funktion tyypit näin koodia kirjoittaessa:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 519px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/7772b5ee03bb1ca30f17560902916121/b23ad/7_vihje.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 23.91304347826087%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAsklEQVQY032Q2w6DIBBE+Q4DmpSLilwEtG82sf//T9OwxD7VPpzM7IadJcv6vscdQojbPuec/DAMxOXZv0AuOKy12Pcn1jUh54JSCo7jhfN8I4RI/WmaEeMK7wNY3XRH13Wwcwvctp2ooc55Gq5B4zjBmJF8VWaMglIKWmtIKWGMofrq5ZKRc/7+poZJqfB4SNL2VpOvsBAsvHeIMWJZFqRUh1qdcoILrt1McNLKdbdffADLIo82jUnA7AAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7772b5ee03bb1ca30f17560902916121/a0b58/7_vihje.webp 230w","/static/7772b5ee03bb1ca30f17560902916121/bc10c/7_vihje.webp 460w","/static/7772b5ee03bb1ca30f17560902916121/ad2dd/7_vihje.webp 519w"],"sizes":"(max-width: 519px) 100vw, 519px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/7772b5ee03bb1ca30f17560902916121/81c8e/7_vihje.png 230w","/static/7772b5ee03bb1ca30f17560902916121/08a84/7_vihje.png 460w","/static/7772b5ee03bb1ca30f17560902916121/b23ad/7_vihje.png 519w"],"sizes":"(max-width: 519px) 100vw, 519px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/7772b5ee03bb1ca30f17560902916121/b23ad/7_vihje.png","alt":"7 vihje","title":"7 vihje","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"moduulin-paatason-koodi","style":"position:relative;"},"children":[{"type":"text","value":"Moduulin päätason koodi"},{"type":"element","tagName":"a","properties":{"href":"#moduulin-paatason-koodi","ariaLabel":"moduulin paatason koodi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos moduulissa on päätason koodia, joka ei ole funktion sisällä, koodi suoritetaan automaattisesti, kun moduuli otetaan mukaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-komennolla toisessa tiedostossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat.py"}]},{"type":"text","value":"-tiedostoon on kirjoitettu muutama testitapaus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sanojen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testeistä toinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yks kaks kolme neljä viisi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun moduuli otetaan nyt käyttöön "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella, suoritetaan automaattisesti myös moduulissa funktioiden ulkopuolella oleva koodi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sanat\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä\ntoinen\n5\nVesihiisi\nhississä\n3"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä ei ole hyvä, koska moduulin käyttäjän ohjelmaa sotkee moduulissa oleva testitulostus."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonista löytyy onneksi ratkaisu pulmaan. Ohjelmassa on mahdollista testata, suoritetaanko ohjelmaa itseään vai onko ohjelma otettu käyttöön moduulina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella. Tämä onnistuu muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__name__"}]},{"type":"text","value":" avulla. Python tallentaa muuttujaan tiedon suoritettavasta ohjelmasta: jos ohjelmaa suoritetaan sellaisenaan, muuttujan arvo on merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__main__"}]},{"type":"text","value":". Jos ohjelma on tuotu osaksi jotain toista ohjelmaa, muuttujan arvona on suoritettavan ohjelman nimi (eli tässä tapauksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sanat"}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moduuliin voidaan siis lisätä edellistä tietoa hyödyntäen ehtolause, jonka avulla testikoodi suoritetaan ainoastaan silloin, kun ohjelma ajetaan omana itsenään eikä toisen ohjelman osaksi tuotuna:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"eka_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vika_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sanojen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n osat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"osat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Testataan funktioiden toimintaa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testeistä toinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanojen_lkm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yks kaks kolme neljä viisi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt moduulin itsensä suorittaminen suorittaa testikutsut:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä\ntoinen\n5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun moduuli sen sijaan tuodaan osaksi jotain muuta ohjelmaa, testejä ei suoriteta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" sanat\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vesihiisi sihisi hississä\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"eka_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vika_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vesihiisi\nhississä\n3"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Merkkiapuri","tmcname":"osa07-17_merkkiapuri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee moduuli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkkiapuri"}]},{"type":"text","value":", joka sisältää seuraavat funktiot:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vaihda_koko(merkkijono: str)"}]},{"type":"text","value":" saa parametrikseen merkkijonon. Funktio luo ja palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon pienet kirjaimet on muutettu isoiksi kirjaimiksi ja päinvastoin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"puolita(merkkijono: str)"}]},{"type":"text","value":" palauttaa tuplessa parametrinaan saamansa merkkijonon ensimmäisen ja toisen puolikkaan. Jos merkkijonossa on pariton määrä kirjaimia, ensimmäinen puolikas on lyhyempi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_erikoismerkit(merkkijono: str)"}]},{"type":"text","value":" palauttaa merkkijonon, josta on poistettu kaikki muut merkit paitsi aakkoset [a...ö, A...Ö], numerot ja välilyönnit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkejä moduulin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" merkkiapuri\n\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkiapuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vaihda_koko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\np1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" p2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkkiapuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puolita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mjono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"p2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nm2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkkiapuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"poista_erikoismerkit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on testi, katsotaan miten käy!!!11!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"m2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"mOI KAIKKI!\nMoi k\naikki!\nTämä on testi katsotaan miten käy11"}]}]}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2"},"children":[]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda oman moduulin
    • \n
    • Tiedät, mitä Pythonin muuttuja __name__ ja sen arvo __main__ merkitsevät
    • \n

    Omien moduulien tekeminen on helppoa Pythonissa, koska mikä tahansa Python-koodia sisältävä tiedosto voi toimia moduulina. Tarkastellaan esimerkkinä seuraavaa tiedostoa sanat.py:

    def eka_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[0]\n\ndef vika_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[-1]\n\ndef sanojen_maara(mjono: str):\n    osat = mjono.split(\" \")\n    return len(osat)

    Voimme käyttää tässä tiedostossa olevia funktioita toisessa tiedostossa seuraavasti:

    import sanat\n\nmjono = \"Vesihiisi sihisi hississä\"\n\nprint(sanat.eka_sana(mjono))\nprint(sanat.vika_sana(mjono))\nprint(sanat.sanojen_maara(mjono))

    Vesihiisi\nhississä\n3

    Huomaa, että moduulin kooditiedoston pitää sijaita joko samassa hakemistossa ohjelman kanssa tai jossakin Pythonin oletushakemistossa, jotta sen voi ottaa käyttöön import-komennolla.

    Voimme käyttää omaa moduulia samalla periaatteella kuin standardikirjaston moduuleja. Esimerkiksi näin:

    from sanat import eka_sana, vika_sana\n\nlause = input(\"Anna lause: \")\n\nprint(\"Eka sana oli: \" + eka_sana(lause))\nprint(\"Viimeinen sana oli: \" + vika_sana(lause))

    Anna lause: Python on metka ohjelmointikieli\nEka sana oli: Python\nViimeinen sana oli: ohjelmointikieli

    Hyötyä tyyppivihjeistä

    Moduulissa on hyödyllistä, että funktioissa käytetään tyyppivihjeitä. Kun joku muu käyttää moduulia editorilla, joka ymmärtää tyyppivihjeitä, ne helpottavat moduulin käyttämistä.

    Esimerkiksi Visual Studio Code näyttää funktion tyypit näin koodia kirjoittaessa:

    \n \n \n \n \n \n \"7\n \n \n

    Moduulin päätason koodi

    Jos moduulissa on päätason koodia, joka ei ole funktion sisällä, koodi suoritetaan automaattisesti, kun moduuli otetaan mukaan import-komennolla toisessa tiedostossa.

    Oletetaan, että sanat.py-tiedostoon on kirjoitettu muutama testitapaus:

    def eka_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[0]\n\ndef vika_sana(mjono: str):\n    osat = mjono.split(\" \")\n    return osat[-1]\n\ndef sanojen_maara(mjono: str):\n    osat = mjono.split(\" \")\n    return len(osat)\n\nprint(eka_sana(\"Tämä on testi\"))\nprint(vika_sana(\"Tämä on testeistä toinen\"))\nprint(sanojen_maara(\"Yks kaks kolme neljä viisi\"))

    Kun moduuli otetaan nyt käyttöön import-lauseella, suoritetaan automaattisesti myös moduulissa funktioiden ulkopuolella oleva koodi:

    import sanat\n\nmjono = \"Vesihiisi sihisi hississä\"\n\nprint(sanat.eka_sana(mjono))\nprint(sanat.vika_sana(mjono))\nprint(sanat.sanojen_maara(mjono))

    Tämä\ntoinen\n5\nVesihiisi\nhississä\n3

    Tämä ei ole hyvä, koska moduulin käyttäjän ohjelmaa sotkee moduulissa oleva testitulostus.

    Pythonista löytyy onneksi ratkaisu pulmaan. Ohjelmassa on mahdollista testata, suoritetaanko ohjelmaa itseään vai onko ohjelma otettu käyttöön moduulina import-lauseella. Tämä onnistuu muuttujan __name__ avulla. Python tallentaa muuttujaan tiedon suoritettavasta ohjelmasta: jos ohjelmaa suoritetaan sellaisenaan, muuttujan arvo on merkkijono __main__. Jos ohjelma on tuotu osaksi jotain toista ohjelmaa, muuttujan arvona on suoritettavan ohjelman nimi (eli tässä tapauksessa sanat).

    Moduuliin voidaan siis lisätä edellistä tietoa hyödyntäen ehtolause, jonka avulla testikoodi suoritetaan ainoastaan silloin, kun ohjelma ajetaan omana itsenään eikä toisen ohjelman osaksi tuotuna:

    def eka_sana(mjono: str) -> str:\n    osat = mjono.split(\" \")\n    return osat[0]\n\ndef vika_sana(mjono: str) -> str:\n    osat = mjono.split(\" \")\n    return osat[-1]\n\ndef sanojen_maara(mjono: str) -> int:\n    osat = mjono.split(\" \")\n    return len(osat)\n\nif __name__ == \"__main__\":\n    # Testataan funktioiden toimintaa\n    print(eka_sana(\"Tämä on testi\"))\n    print(vika_sana(\"Tämä on testeistä toinen\"))\n    print(sanojen_lkm(\"Yks kaks kolme neljä viisi\"))

    Nyt moduulin itsensä suorittaminen suorittaa testikutsut:

    Tämä\ntoinen\n5

    Kun moduuli sen sijaan tuodaan osaksi jotain muuta ohjelmaa, testejä ei suoriteta:

    import sanat\n\nmjono = \"Vesihiisi sihisi hississä\"\n\nprint(sanat.eka_sana(mjono))\nprint(sanat.vika_sana(mjono))\nprint(sanat.sanojen_maara(mjono))

    Vesihiisi\nhississä\n3

    Tee moduuli merkkiapuri, joka sisältää seuraavat funktiot:

    Funktio vaihda_koko(merkkijono: str) saa parametrikseen merkkijonon. Funktio luo ja palauttaa uuden merkkijonon, jossa alkuperäisen merkkijonon pienet kirjaimet on muutettu isoiksi kirjaimiksi ja päinvastoin.

    Funktio puolita(merkkijono: str) palauttaa tuplessa parametrinaan saamansa merkkijonon ensimmäisen ja toisen puolikkaan. Jos merkkijonossa on pariton määrä kirjaimia, ensimmäinen puolikas on lyhyempi.

    Funktio poista_erikoismerkit(merkkijono: str) palauttaa merkkijonon, josta on poistettu kaikki muut merkit paitsi aakkoset [a...ö, A...Ö], numerot ja välilyönnit.

    Esimerkkejä moduulin toiminnasta:

    import merkkiapuri\n\nmjono = \"Moi kaikki!\"\n\nprint(merkkiapuri.vaihda_koko(mjono))\n\np1, p2 = merkkiapuri.puolita(mjono)\n\nprint(p1)\nprint(p2)\n\nm2 = merkkiapuri.poista_erikoismerkit(\"Tämä on testi, katsotaan miten käy!!!11!\")\nprint(m2)

    mOI KAIKKI!\nMoi k\naikki!\nTämä on testi katsotaan miten käy11

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/5-omat-moduulit.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/6-lisaa-pythonista/page-data.json b/page-data/osa-7/6-lisaa-pythonista/page-data.json index 95fe348fa..be7926951 100644 --- a/page-data/osa-7/6-lisaa-pythonista/page-data.json +++ b/page-data/osa-7/6-lisaa-pythonista/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-7/6-lisaa-pythonista", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät lisää Pythonin ominaisuuksia"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän lukuun on koottu vielä joukko erinäisiä hyödyllisiä Pythoniin liittyviä ominaisuuksia."}]},{"type":"element","tagName":"h2","properties":{"id":"yhden-rivin-ehto","style":"position:relative;"},"children":[{"type":"text","value":"Yhden rivin ehto"},{"type":"element","tagName":"a","properties":{"href":"#yhden-rivin-ehto","ariaLabel":"yhden rivin ehto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavat koodit toimivat samalla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"parillinen\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jälkimmäisessä koodissa on yhden rivin ehto muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a if [ehto] else b"}]},{"type":"text","value":". Tällaisen lausekkeen arvo on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":", jos ehto pätee, ja muuten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama rakenne on joskus hyödyllinen kun tehdään ehdollinen sijoituslause. Esimerkiksi jos haluaisimme joko kasvattaa muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":" tai nollata sen riippuen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" arvon parillisuudesta, sen sijaan että kirjoittaisimme"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sama voitaisiin tehdä yhden rivin ehdolla seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tyhja-komento","style":"position:relative;"},"children":[{"type":"text","value":"Tyhjä komento"},{"type":"element","tagName":"a","properties":{"href":"#tyhja-komento","ariaLabel":"tyhja komento permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":" ei tee mitään. Voimme tehdä sen avulla esimerkiksi funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":", joka ei tee mitään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että lohko ei voi olla tyhjä eli seuraava koodi ei toimisi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"silmukan-else-osa","style":"position:relative;"},"children":[{"type":"text","value":"Silmukan else-osa"},{"type":"element","tagName":"a","properties":{"href":"#silmukan-else-osa","ariaLabel":"silmukan else osa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kiinnostava Pythonin ominaisuus on, että ehtolauseen lisäksi myös silmukassa voi olla else-osa. Tämä osa suoritetaan, jos silmukka pääsee loppuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi etsii listalta parillista lukua. Jos sellainen löytyy, koodi tulostaa luvun ja silmukka päättyy. Kuitenkin jos lukua ei löytynyt, tästä tulee ilmoitus lopuksi."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"löytyi parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ei löytynyt parillista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perinteinen tapa tehdä tällainen silmukka olisi käyttää apumuuttujaa, joka muistaa, löytyikö haluttua asiaa silmukan aikana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nloytyi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"löytyi parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n loytyi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" loytyi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ei löytynyt parillista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkin silmukan else-osan avulla vältymme muuttujan tekemiseltä."}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-oletusparametri","style":"position:relative;"},"children":[{"type":"text","value":"Funktion oletusparametri"},{"type":"element","tagName":"a","properties":{"href":"#funktion-oletusparametri","ariaLabel":"funktion oletusparametri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion parametrilla voi olla oletusarvo, joka tulee käyttöön silloin, jos parametria ei anneta. Näin on esimerkiksi seuraavassa funktiossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\nMoikka, Erkki\nMoikka, Matti"}]}]},{"type":"element","tagName":"h2","properties":{"id":"muuttuva-maara-parametreja","style":"position:relative;"},"children":[{"type":"text","value":"Muuttuva määrä parametreja"},{"type":"element","tagName":"a","properties":{"href":"#muuttuva-maara-parametreja","ariaLabel":"muuttuva maara parametreja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla voi olla myös muuttuva määrä parametreja, mikä merkitään laittamalla tähti parametrin eteen. Tällöin kaikki loput parametrit kasautuvat listaksi tähän parametriin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava funktio kertoo parametrien määrän ja summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Annoit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"parametria\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Niiden summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Annoit 5 parametria\nNiiden summa on 15"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Oma ohjelmointikieli","tmcname":"osa07-18_oma_ohjelmointikieli"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan oman ohjelmointikielen suorittaja. Voit käyttää tehtävässä kaikkia kurssilla oppimiasi taitoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma muodostuu riveistä, joista jokainen on yksi seuraavista:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PRINT [arvo]"}]},{"type":"text","value":": tulostaa annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MOV [muuttuja] [arvo]"}]},{"type":"text","value":": asettaa muuttujaan annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ADD [muuttuja] [arvo]"}]},{"type":"text","value":": lisää muuttujaan annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SUB [muuttuja] [arvo}"}]},{"type":"text","value":": vähentää muuttujasta annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MUL [muuttuja] [arvo]"}]},{"type":"text","value":": kertoo muuttujan annetulla arvolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[kohta]:"}]},{"type":"text","value":": määrittelee kohdan, johon voidaan hypätä muualta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"JUMP [kohta]"}]},{"type":"text","value":": hyppää annettuun kohtaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"IF [ehto] JUMP [kohta]"}]},{"type":"text","value":": jos ehto pätee, hyppää annettuun kohtaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"END"}]},{"type":"text","value":": lopettaa ohjelman"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmaa suoritetaan rivi kerrallaan ensimmäisestä rivistä aloittaen. Ohjelma päättyy, kun vastaan tulee komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"END"}]},{"type":"text","value":" tai suoritus menee ohjelman viimeisen rivin yli."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisessa ohjelmassa on 26 muuttujaa, joiden nimet ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"A"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Z"}]},{"type":"text","value":". Jokaisen muuttujan arvo on 0 ohjelman alussa. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[muuttuja]"}]},{"type":"text","value":" viittaa tällaiseen muuttujaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikki ohjelman käsittelemät arvot ovat kokonaislukuja. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[arvo]"}]},{"type":"text","value":" viittaa joko muuttujaan tai kokonaislukuna annettuun arvoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[kohta]"}]},{"type":"text","value":" on mikä tahansa kohdan nimi, joka muodostuu pienistä kirjaimista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"z"}]},{"type":"text","value":" sekä numeroista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9"}]},{"type":"text","value":". Kahdella kohdalla ei saa olla samaa nimeä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ehto]"}]},{"type":"text","value":" tarkoittaa ehtoa muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[arvo] [vertailu] [arvo]"}]},{"type":"text","value":". Tässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[vertailu]"}]},{"type":"text","value":" on aina yksi seuraavista: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorita(ohjelma)"}]},{"type":"text","value":", jolle annetaan ohjelma listana. Jokainen listan alkio on yksi ohjelman rivi. Funktion tulee palauttaa listana kaikki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PRINT"}]},{"type":"text","value":"-komentojen tulokset ohjelman suorituksen aikana."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että funktiolle annettu ohjelma on oikeanmuotoinen, eli funktion ei tarvitse toteuttaa virheenkäsittelyä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävästä on saatavilla kaksi pistettä: saat yhden pisteen, jos komennot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PRINT"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MOV"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ADD"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SUB"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MUL"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"END"}]},{"type":"text","value":" toimivat, ja vielä toisen pisteen, jos myös loput silmukoihin liittyvät komennot toimivat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD A B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"END\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 2:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 10\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alku:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF A >= B JUMP loppu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"SUB B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"JUMP alku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"loppu:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"END\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 10, 2, 9, 3, 8, 4, 7, 5, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 3 (kertoma):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alku:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MUL A B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF B <= 10 JUMP alku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"END\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 4 (alkuluvut):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV N 50\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alku:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV Z 0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV C B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF C == A JUMP virhe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF C > A JUMP ohi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD C B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"JUMP uusi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"virhe:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV Z 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"JUMP ohi2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF B < A JUMP testi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohi2:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF Z == 1 JUMP ohi3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohi3:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF A <= N JUMP alku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa kurssin lopuksi loppukyselyyn. Kyselyn tuloksia käytetään kurssimateriaalin kehittämiseen."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät lisää Pythonin ominaisuuksia
    • \n

    Tähän lukuun on koottu vielä joukko erinäisiä hyödyllisiä Pythoniin liittyviä ominaisuuksia.

    Yhden rivin ehto

    Seuraavat koodit toimivat samalla tavalla:

    if x%2 == 0:\n    print(\"parillinen\")\nelse:\n    print(\"pariton\")
    print(\"parillinen\" if x%2 == 0 else \"pariton\")

    Jälkimmäisessä koodissa on yhden rivin ehto muotoa a if [ehto] else b. Tällaisen lausekkeen arvo on a, jos ehto pätee, ja muuten b.

    Sama rakenne on joskus hyödyllinen kun tehdään ehdollinen sijoituslause. Esimerkiksi jos haluaisimme joko kasvattaa muuttujaa y tai nollata sen riippuen muuttujan x arvon parillisuudesta, sen sijaan että kirjoittaisimme

    if x%2 == 0:\n    y += 1\nelse:\n    y = 0

    sama voitaisiin tehdä yhden rivin ehdolla seuraavasti

    y = y + 1 if x%2 == 0 else 0

    Tyhjä komento

    Komento pass ei tee mitään. Voimme tehdä sen avulla esimerkiksi funktion testi, joka ei tee mitään:

    def testi():\n    pass

    Huomaa, että lohko ei voi olla tyhjä eli seuraava koodi ei toimisi:

    def testi():

    Silmukan else-osa

    Kiinnostava Pythonin ominaisuus on, että ehtolauseen lisäksi myös silmukassa voi olla else-osa. Tämä osa suoritetaan, jos silmukka pääsee loppuun.

    Esimerkiksi seuraava koodi etsii listalta parillista lukua. Jos sellainen löytyy, koodi tulostaa luvun ja silmukka päättyy. Kuitenkin jos lukua ei löytynyt, tästä tulee ilmoitus lopuksi.

    lista = [3,5,2,8,1]\nfor x in lista:\n    if x%2 == 0:\n        print(\"löytyi parillinen\", x)\n        break\nelse:\n    print(\"ei löytynyt parillista\")

    Perinteinen tapa tehdä tällainen silmukka olisi käyttää apumuuttujaa, joka muistaa, löytyikö haluttua asiaa silmukan aikana:

    lista = [3,5,2,8,1]\nloytyi = False\nfor x in lista:\n    if x%2 == 0:\n        print(\"löytyi parillinen\", x)\n        loytyi = True\n        break\nif not loytyi:\n    print(\"ei löytynyt parillista\")

    Kuitenkin silmukan else-osan avulla vältymme muuttujan tekemiseltä.

    Funktion oletusparametri

    Funktion parametrilla voi olla oletusarvo, joka tulee käyttöön silloin, jos parametria ei anneta. Näin on esimerkiksi seuraavassa funktiossa:

    def tervehdi(nimi=\"Emilia\"):\n    print(\"Moikka,\", nimi)\n\ntervehdi()\ntervehdi(\"Erkki\")\ntervehdi(\"Matti\")

    Moikka, Emilia\nMoikka, Erkki\nMoikka, Matti

    Muuttuva määrä parametreja

    Funktiolla voi olla myös muuttuva määrä parametreja, mikä merkitään laittamalla tähti parametrin eteen. Tällöin kaikki loput parametrit kasautuvat listaksi tähän parametriin.

    Esimerkiksi seuraava funktio kertoo parametrien määrän ja summan:

    def testi(*lista):\n    print(\"Annoit\", len(lista), \"parametria\")\n    print(\"Niiden summa on\", sum(lista))\n\ntesti(1, 2, 3, 4, 5)

    Annoit 5 parametria\nNiiden summa on 15

    Tässä tehtävässä toteutetaan oman ohjelmointikielen suorittaja. Voit käyttää tehtävässä kaikkia kurssilla oppimiasi taitoja.

    Ohjelma muodostuu riveistä, joista jokainen on yksi seuraavista:

      \n
    • PRINT [arvo]: tulostaa annetun arvon
    • \n
    • MOV [muuttuja] [arvo]: asettaa muuttujaan annetun arvon
    • \n
    • ADD [muuttuja] [arvo]: lisää muuttujaan annetun arvon
    • \n
    • SUB [muuttuja] [arvo}: vähentää muuttujasta annetun arvon
    • \n
    • MUL [muuttuja] [arvo]: kertoo muuttujan annetulla arvolla
    • \n
    • [kohta]:: määrittelee kohdan, johon voidaan hypätä muualta
    • \n
    • JUMP [kohta]: hyppää annettuun kohtaan
    • \n
    • IF [ehto] JUMP [kohta]: jos ehto pätee, hyppää annettuun kohtaan
    • \n
    • END: lopettaa ohjelman
    • \n

    Ohjelmaa suoritetaan rivi kerrallaan ensimmäisestä rivistä aloittaen. Ohjelma päättyy, kun vastaan tulee komento END tai suoritus menee ohjelman viimeisen rivin yli.

    Jokaisessa ohjelmassa on 26 muuttujaa, joiden nimet ovat A...Z. Jokaisen muuttujan arvo on 0 ohjelman alussa. Merkintä [muuttuja] viittaa tällaiseen muuttujaan.

    Kaikki ohjelman käsittelemät arvot ovat kokonaislukuja. Merkintä [arvo] viittaa joko muuttujaan tai kokonaislukuna annettuun arvoon.

    Merkintä [kohta] on mikä tahansa kohdan nimi, joka muodostuu pienistä kirjaimista a...z sekä numeroista 0...9. Kahdella kohdalla ei saa olla samaa nimeä.

    Merkintä [ehto] tarkoittaa ehtoa muotoa [arvo] [vertailu] [arvo]. Tässä [vertailu] on aina yksi seuraavista: ==, !=, <, <=, > tai >=.

    Tee funktio suorita(ohjelma), jolle annetaan ohjelma listana. Jokainen listan alkio on yksi ohjelman rivi. Funktion tulee palauttaa listana kaikki PRINT-komentojen tulokset ohjelman suorituksen aikana.

    Voit olettaa, että funktiolle annettu ohjelma on oikeanmuotoinen, eli funktion ei tarvitse toteuttaa virheenkäsittelyä.

    Tehtävästä on saatavilla kaksi pistettä: saat yhden pisteen, jos komennot PRINT, MOV, ADD, SUB, MUL ja END toimivat, ja vielä toisen pisteen, jos myös loput silmukoihin liittyvät komennot toimivat.

    Esimerkki 1:

    ohjelma1 = []\nohjelma1.append(\"MOV A 1\")\nohjelma1.append(\"MOV B 2\")\nohjelma1.append(\"PRINT A\")\nohjelma1.append(\"PRINT B\")\nohjelma1.append(\"ADD A B\")\nohjelma1.append(\"PRINT A\")\nohjelma1.append(\"END\")\ntulos = suorita(ohjelma1)\nprint(tulos)

    [1, 2, 3]

    Esimerkki 2:

    ohjelma2 = []\nohjelma2.append(\"MOV A 1\")\nohjelma2.append(\"MOV B 10\")\nohjelma2.append(\"alku:\")\nohjelma2.append(\"IF A >= B JUMP loppu\")\nohjelma2.append(\"PRINT A\")\nohjelma2.append(\"PRINT B\")\nohjelma2.append(\"ADD A 1\")\nohjelma2.append(\"SUB B 1\")\nohjelma2.append(\"JUMP alku\")\nohjelma2.append(\"loppu:\")\nohjelma2.append(\"END\")\ntulos = suorita(ohjelma2)\nprint(tulos)

    [1, 10, 2, 9, 3, 8, 4, 7, 5, 6]

    Esimerkki 3 (kertoma):

    ohjelma3 = []\nohjelma3.append(\"MOV A 1\")\nohjelma3.append(\"MOV B 1\")\nohjelma3.append(\"alku:\")\nohjelma3.append(\"PRINT A\")\nohjelma3.append(\"ADD B 1\")\nohjelma3.append(\"MUL A B\")\nohjelma3.append(\"IF B <= 10 JUMP alku\")\nohjelma3.append(\"END\")\ntulos = suorita(ohjelma3)\nprint(tulos)

    [1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]

    Esimerkki 4 (alkuluvut):

    ohjelma4 = []\nohjelma4.append(\"MOV N 50\")\nohjelma4.append(\"PRINT 2\")\nohjelma4.append(\"MOV A 3\")\nohjelma4.append(\"alku:\")\nohjelma4.append(\"MOV B 2\")\nohjelma4.append(\"MOV Z 0\")\nohjelma4.append(\"testi:\")\nohjelma4.append(\"MOV C B\")\nohjelma4.append(\"uusi:\")\nohjelma4.append(\"IF C == A JUMP virhe\")\nohjelma4.append(\"IF C > A JUMP ohi\")\nohjelma4.append(\"ADD C B\")\nohjelma4.append(\"JUMP uusi\")\nohjelma4.append(\"virhe:\")\nohjelma4.append(\"MOV Z 1\")\nohjelma4.append(\"JUMP ohi2\")\nohjelma4.append(\"ohi:\")\nohjelma4.append(\"ADD B 1\")\nohjelma4.append(\"IF B < A JUMP testi\")\nohjelma4.append(\"ohi2:\")\nohjelma4.append(\"IF Z == 1 JUMP ohi3\")\nohjelma4.append(\"PRINT A\")\nohjelma4.append(\"ohi3:\")\nohjelma4.append(\"ADD A 1\")\nohjelma4.append(\"IF A <= N JUMP alku\")\ntulos = suorita(ohjelma4)\nprint(tulos)

    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

    Vastaa kurssin lopuksi loppukyselyyn. Kyselyn tuloksia käytetään kurssimateriaalin kehittämiseen.

    ","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/6-lisaa-pythonista.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät lisää Pythonin ominaisuuksia"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän lukuun on koottu vielä joukko erinäisiä hyödyllisiä Pythoniin liittyviä ominaisuuksia."}]},{"type":"element","tagName":"h2","properties":{"id":"yhden-rivin-ehto","style":"position:relative;"},"children":[{"type":"text","value":"Yhden rivin ehto"},{"type":"element","tagName":"a","properties":{"href":"#yhden-rivin-ehto","ariaLabel":"yhden rivin ehto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavat koodit toimivat samalla tavalla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"parillinen\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pariton\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jälkimmäisessä koodissa on yhden rivin ehto muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a if [ehto] else b"}]},{"type":"text","value":". Tällaisen lausekkeen arvo on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":", jos ehto pätee, ja muuten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"b"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sama rakenne on joskus hyödyllinen kun tehdään ehdollinen sijoituslause. Esimerkiksi jos haluaisimme joko kasvattaa muuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"y"}]},{"type":"text","value":" tai nollata sen riippuen muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"x"}]},{"type":"text","value":" arvon parillisuudesta, sen sijaan että kirjoittaisimme"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"sama voitaisiin tehdä yhden rivin ehdolla seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"tyhja-komento","style":"position:relative;"},"children":[{"type":"text","value":"Tyhjä komento"},{"type":"element","tagName":"a","properties":{"href":"#tyhja-komento","ariaLabel":"tyhja komento permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":" ei tee mitään. Voimme tehdä sen avulla esimerkiksi funktion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"testi"}]},{"type":"text","value":", joka ei tee mitään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että lohko ei voi olla tyhjä eli seuraava koodi ei toimisi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"silmukan-else-osa","style":"position:relative;"},"children":[{"type":"text","value":"Silmukan else-osa"},{"type":"element","tagName":"a","properties":{"href":"#silmukan-else-osa","ariaLabel":"silmukan else osa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kiinnostava Pythonin ominaisuus on, että ehtolauseen lisäksi myös silmukassa voi olla else-osa. Tämä osa suoritetaan, jos silmukka pääsee loppuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava koodi etsii listalta parillista lukua. Jos sellainen löytyy, koodi tulostaa luvun ja silmukka päättyy. Kuitenkin jos lukua ei löytynyt, tästä tulee ilmoitus lopuksi."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"löytyi parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ei löytynyt parillista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Perinteinen tapa tehdä tällainen silmukka olisi käyttää apumuuttujaa, joka muistaa, löytyikö haluttua asiaa silmukan aikana:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nloytyi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" x "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"%"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"löytyi parillinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n loytyi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"break"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" loytyi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ei löytynyt parillista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuitenkin silmukan else-osan avulla vältymme muuttujan tekemiseltä."}]},{"type":"element","tagName":"h2","properties":{"id":"funktion-oletusparametri","style":"position:relative;"},"children":[{"type":"text","value":"Funktion oletusparametri"},{"type":"element","tagName":"a","properties":{"href":"#funktion-oletusparametri","ariaLabel":"funktion oletusparametri permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktion parametrilla voi olla oletusarvo, joka tulee käyttöön silloin, jos parametria ei anneta. Näin on esimerkiksi seuraavassa funktiossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tervehdi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moikka,\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntervehdi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Moikka, Emilia\nMoikka, Erkki\nMoikka, Matti"}]}]},{"type":"element","tagName":"h2","properties":{"id":"muuttuva-maara-parametreja","style":"position:relative;"},"children":[{"type":"text","value":"Muuttuva määrä parametreja"},{"type":"element","tagName":"a","properties":{"href":"#muuttuva-maara-parametreja","ariaLabel":"muuttuva maara parametreja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiolla voi olla myös muuttuva määrä parametreja, mikä merkitään laittamalla tähti parametrin eteen. Tällöin kaikki loput parametrit kasautuvat listaksi tähän parametriin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi seuraava funktio kertoo parametrien määrän ja summan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"testi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Annoit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"parametria\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Niiden summa on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sum"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Annoit 5 parametria\nNiiden summa on 15"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Oma ohjelmointikieli","tmcname":"osa07-18_oma_ohjelmointikieli"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan oman ohjelmointikielen suorittaja. Voit käyttää tehtävässä kaikkia kurssilla oppimiasi taitoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma muodostuu riveistä, joista jokainen on yksi seuraavista:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PRINT [arvo]"}]},{"type":"text","value":": tulostaa annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MOV [muuttuja] [arvo]"}]},{"type":"text","value":": asettaa muuttujaan annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ADD [muuttuja] [arvo]"}]},{"type":"text","value":": lisää muuttujaan annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SUB [muuttuja] [arvo}"}]},{"type":"text","value":": vähentää muuttujasta annetun arvon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MUL [muuttuja] [arvo]"}]},{"type":"text","value":": kertoo muuttujan annetulla arvolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[kohta]:"}]},{"type":"text","value":": määrittelee kohdan, johon voidaan hypätä muualta"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"JUMP [kohta]"}]},{"type":"text","value":": hyppää annettuun kohtaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"IF [ehto] JUMP [kohta]"}]},{"type":"text","value":": jos ehto pätee, hyppää annettuun kohtaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"END"}]},{"type":"text","value":": lopettaa ohjelman"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmaa suoritetaan rivi kerrallaan ensimmäisestä rivistä aloittaen. Ohjelma päättyy, kun vastaan tulee komento "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"END"}]},{"type":"text","value":" tai suoritus menee ohjelman viimeisen rivin yli."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisessa ohjelmassa on 26 muuttujaa, joiden nimet ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"A"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Z"}]},{"type":"text","value":". Jokaisen muuttujan arvo on 0 ohjelman alussa. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[muuttuja]"}]},{"type":"text","value":" viittaa tällaiseen muuttujaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikki ohjelman käsittelemät arvot ovat kokonaislukuja. Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[arvo]"}]},{"type":"text","value":" viittaa joko muuttujaan tai kokonaislukuna annettuun arvoon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[kohta]"}]},{"type":"text","value":" on mikä tahansa kohdan nimi, joka muodostuu pienistä kirjaimista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"z"}]},{"type":"text","value":" sekä numeroista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"..."},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"9"}]},{"type":"text","value":". Kahdella kohdalla ei saa olla samaa nimeä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkintä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[ehto]"}]},{"type":"text","value":" tarkoittaa ehtoa muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[arvo] [vertailu] [arvo]"}]},{"type":"text","value":". Tässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"[vertailu]"}]},{"type":"text","value":" on aina yksi seuraavista: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorita(ohjelma)"}]},{"type":"text","value":", jolle annetaan ohjelma listana. Jokainen listan alkio on yksi ohjelman rivi. Funktion tulee palauttaa listana kaikki "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PRINT"}]},{"type":"text","value":"-komentojen tulokset ohjelman suorituksen aikana."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että funktiolle annettu ohjelma on oikeanmuotoinen, eli funktion ei tarvitse toteuttaa virheenkäsittelyä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävästä on saatavilla kaksi pistettä: saat yhden pisteen, jos komennot "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PRINT"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MOV"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ADD"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"SUB"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"MUL"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"END"}]},{"type":"text","value":" toimivat, ja vielä toisen pisteen, jos myös loput silmukoihin liittyvät komennot toimivat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 1:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD A B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"END\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 2:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 10\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alku:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF A >= B JUMP loppu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"SUB B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"JUMP alku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"loppu:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"END\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 10, 2, 9, 3, 8, 4, 7, 5, 6]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 3 (kertoma):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alku:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MUL A B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF B <= 10 JUMP alku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"END\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki 4 (alkuluvut):"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ohjelma4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV N 50\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV A 3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"alku:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV B 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV Z 0\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"testi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV C B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"uusi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF C == A JUMP virhe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF C > A JUMP ohi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD C B\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"JUMP uusi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"virhe:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"MOV Z 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"JUMP ohi2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD B 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF B < A JUMP testi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohi2:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF Z == 1 JUMP ohi3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"PRINT A\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohi3:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ADD A 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"IF A <= N JUMP alku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohjelma4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa kurssin lopuksi loppukyselyyn. Kyselyn tuloksia käytetään kurssimateriaalin kehittämiseen."}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät lisää Pythonin ominaisuuksia
    • \n

    Tähän lukuun on koottu vielä joukko erinäisiä hyödyllisiä Pythoniin liittyviä ominaisuuksia.

    Yhden rivin ehto

    Seuraavat koodit toimivat samalla tavalla:

    if x%2 == 0:\n    print(\"parillinen\")\nelse:\n    print(\"pariton\")
    print(\"parillinen\" if x%2 == 0 else \"pariton\")

    Jälkimmäisessä koodissa on yhden rivin ehto muotoa a if [ehto] else b. Tällaisen lausekkeen arvo on a, jos ehto pätee, ja muuten b.

    Sama rakenne on joskus hyödyllinen kun tehdään ehdollinen sijoituslause. Esimerkiksi jos haluaisimme joko kasvattaa muuttujaa y tai nollata sen riippuen muuttujan x arvon parillisuudesta, sen sijaan että kirjoittaisimme

    if x%2 == 0:\n    y += 1\nelse:\n    y = 0

    sama voitaisiin tehdä yhden rivin ehdolla seuraavasti

    y = y + 1 if x%2 == 0 else 0

    Tyhjä komento

    Komento pass ei tee mitään. Voimme tehdä sen avulla esimerkiksi funktion testi, joka ei tee mitään:

    def testi():\n    pass

    Huomaa, että lohko ei voi olla tyhjä eli seuraava koodi ei toimisi:

    def testi():

    Silmukan else-osa

    Kiinnostava Pythonin ominaisuus on, että ehtolauseen lisäksi myös silmukassa voi olla else-osa. Tämä osa suoritetaan, jos silmukka pääsee loppuun.

    Esimerkiksi seuraava koodi etsii listalta parillista lukua. Jos sellainen löytyy, koodi tulostaa luvun ja silmukka päättyy. Kuitenkin jos lukua ei löytynyt, tästä tulee ilmoitus lopuksi.

    lista = [3,5,2,8,1]\nfor x in lista:\n    if x%2 == 0:\n        print(\"löytyi parillinen\", x)\n        break\nelse:\n    print(\"ei löytynyt parillista\")

    Perinteinen tapa tehdä tällainen silmukka olisi käyttää apumuuttujaa, joka muistaa, löytyikö haluttua asiaa silmukan aikana:

    lista = [3,5,2,8,1]\nloytyi = False\nfor x in lista:\n    if x%2 == 0:\n        print(\"löytyi parillinen\", x)\n        loytyi = True\n        break\nif not loytyi:\n    print(\"ei löytynyt parillista\")

    Kuitenkin silmukan else-osan avulla vältymme muuttujan tekemiseltä.

    Funktion oletusparametri

    Funktion parametrilla voi olla oletusarvo, joka tulee käyttöön silloin, jos parametria ei anneta. Näin on esimerkiksi seuraavassa funktiossa:

    def tervehdi(nimi=\"Emilia\"):\n    print(\"Moikka,\", nimi)\n\ntervehdi()\ntervehdi(\"Erkki\")\ntervehdi(\"Matti\")

    Moikka, Emilia\nMoikka, Erkki\nMoikka, Matti

    Muuttuva määrä parametreja

    Funktiolla voi olla myös muuttuva määrä parametreja, mikä merkitään laittamalla tähti parametrin eteen. Tällöin kaikki loput parametrit kasautuvat listaksi tähän parametriin.

    Esimerkiksi seuraava funktio kertoo parametrien määrän ja summan:

    def testi(*lista):\n    print(\"Annoit\", len(lista), \"parametria\")\n    print(\"Niiden summa on\", sum(lista))\n\ntesti(1, 2, 3, 4, 5)

    Annoit 5 parametria\nNiiden summa on 15

    Tässä tehtävässä toteutetaan oman ohjelmointikielen suorittaja. Voit käyttää tehtävässä kaikkia kurssilla oppimiasi taitoja.

    Ohjelma muodostuu riveistä, joista jokainen on yksi seuraavista:

      \n
    • PRINT [arvo]: tulostaa annetun arvon
    • \n
    • MOV [muuttuja] [arvo]: asettaa muuttujaan annetun arvon
    • \n
    • ADD [muuttuja] [arvo]: lisää muuttujaan annetun arvon
    • \n
    • SUB [muuttuja] [arvo}: vähentää muuttujasta annetun arvon
    • \n
    • MUL [muuttuja] [arvo]: kertoo muuttujan annetulla arvolla
    • \n
    • [kohta]:: määrittelee kohdan, johon voidaan hypätä muualta
    • \n
    • JUMP [kohta]: hyppää annettuun kohtaan
    • \n
    • IF [ehto] JUMP [kohta]: jos ehto pätee, hyppää annettuun kohtaan
    • \n
    • END: lopettaa ohjelman
    • \n

    Ohjelmaa suoritetaan rivi kerrallaan ensimmäisestä rivistä aloittaen. Ohjelma päättyy, kun vastaan tulee komento END tai suoritus menee ohjelman viimeisen rivin yli.

    Jokaisessa ohjelmassa on 26 muuttujaa, joiden nimet ovat A...Z. Jokaisen muuttujan arvo on 0 ohjelman alussa. Merkintä [muuttuja] viittaa tällaiseen muuttujaan.

    Kaikki ohjelman käsittelemät arvot ovat kokonaislukuja. Merkintä [arvo] viittaa joko muuttujaan tai kokonaislukuna annettuun arvoon.

    Merkintä [kohta] on mikä tahansa kohdan nimi, joka muodostuu pienistä kirjaimista a...z sekä numeroista 0...9. Kahdella kohdalla ei saa olla samaa nimeä.

    Merkintä [ehto] tarkoittaa ehtoa muotoa [arvo] [vertailu] [arvo]. Tässä [vertailu] on aina yksi seuraavista: ==, !=, <, <=, > tai >=.

    Tee funktio suorita(ohjelma), jolle annetaan ohjelma listana. Jokainen listan alkio on yksi ohjelman rivi. Funktion tulee palauttaa listana kaikki PRINT-komentojen tulokset ohjelman suorituksen aikana.

    Voit olettaa, että funktiolle annettu ohjelma on oikeanmuotoinen, eli funktion ei tarvitse toteuttaa virheenkäsittelyä.

    Tehtävästä on saatavilla kaksi pistettä: saat yhden pisteen, jos komennot PRINT, MOV, ADD, SUB, MUL ja END toimivat, ja vielä toisen pisteen, jos myös loput silmukoihin liittyvät komennot toimivat.

    Esimerkki 1:

    ohjelma1 = []\nohjelma1.append(\"MOV A 1\")\nohjelma1.append(\"MOV B 2\")\nohjelma1.append(\"PRINT A\")\nohjelma1.append(\"PRINT B\")\nohjelma1.append(\"ADD A B\")\nohjelma1.append(\"PRINT A\")\nohjelma1.append(\"END\")\ntulos = suorita(ohjelma1)\nprint(tulos)

    [1, 2, 3]

    Esimerkki 2:

    ohjelma2 = []\nohjelma2.append(\"MOV A 1\")\nohjelma2.append(\"MOV B 10\")\nohjelma2.append(\"alku:\")\nohjelma2.append(\"IF A >= B JUMP loppu\")\nohjelma2.append(\"PRINT A\")\nohjelma2.append(\"PRINT B\")\nohjelma2.append(\"ADD A 1\")\nohjelma2.append(\"SUB B 1\")\nohjelma2.append(\"JUMP alku\")\nohjelma2.append(\"loppu:\")\nohjelma2.append(\"END\")\ntulos = suorita(ohjelma2)\nprint(tulos)

    [1, 10, 2, 9, 3, 8, 4, 7, 5, 6]

    Esimerkki 3 (kertoma):

    ohjelma3 = []\nohjelma3.append(\"MOV A 1\")\nohjelma3.append(\"MOV B 1\")\nohjelma3.append(\"alku:\")\nohjelma3.append(\"PRINT A\")\nohjelma3.append(\"ADD B 1\")\nohjelma3.append(\"MUL A B\")\nohjelma3.append(\"IF B <= 10 JUMP alku\")\nohjelma3.append(\"END\")\ntulos = suorita(ohjelma3)\nprint(tulos)

    [1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]

    Esimerkki 4 (alkuluvut):

    ohjelma4 = []\nohjelma4.append(\"MOV N 50\")\nohjelma4.append(\"PRINT 2\")\nohjelma4.append(\"MOV A 3\")\nohjelma4.append(\"alku:\")\nohjelma4.append(\"MOV B 2\")\nohjelma4.append(\"MOV Z 0\")\nohjelma4.append(\"testi:\")\nohjelma4.append(\"MOV C B\")\nohjelma4.append(\"uusi:\")\nohjelma4.append(\"IF C == A JUMP virhe\")\nohjelma4.append(\"IF C > A JUMP ohi\")\nohjelma4.append(\"ADD C B\")\nohjelma4.append(\"JUMP uusi\")\nohjelma4.append(\"virhe:\")\nohjelma4.append(\"MOV Z 1\")\nohjelma4.append(\"JUMP ohi2\")\nohjelma4.append(\"ohi:\")\nohjelma4.append(\"ADD B 1\")\nohjelma4.append(\"IF B < A JUMP testi\")\nohjelma4.append(\"ohi2:\")\nohjelma4.append(\"IF Z == 1 JUMP ohi3\")\nohjelma4.append(\"PRINT A\")\nohjelma4.append(\"ohi3:\")\nohjelma4.append(\"ADD A 1\")\nohjelma4.append(\"IF A <= N JUMP alku\")\ntulos = suorita(ohjelma4)\nprint(tulos)

    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

    Vastaa kurssin lopuksi loppukyselyyn. Kyselyn tuloksia käytetään kurssimateriaalin kehittämiseen.

    ","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/6-lisaa-pythonista.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-7/page-data.json b/page-data/osa-7/page-data.json index 8c2261159..626438c31 100644 --- a/page-data/osa-7/page-data.json +++ b/page-data/osa-7/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-7", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-7","title":"Osa 7"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-7","title":"Osa 7"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-7/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-8/1-oliot-ja-metodit/page-data.json b/page-data/osa-8/1-oliot-ja-metodit/page-data.json index a25732f63..01e595680 100644 --- a/page-data/osa-8/1-oliot-ja-metodit/page-data.json +++ b/page-data/osa-8/1-oliot-ja-metodit/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-8/1-oliot-ja-metodit", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan oliolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mitä tarkoitetaan olioiden itsenäisyydellä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa ja käsitellä olioita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on Ohjelmoinnin jatkokurssin ensimmäinen osa, ja kurssilla käytetään VS Codea samaan tapaan kuin Ohjelmoinnin perusteissa. Jos et ole käyttänyt ennen VS Codea, löydät "},{"type":"element","tagName":"a","properties":{"href":"https://www.mooc.fi/fi/installation/vscode","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tästä"}]},{"type":"text","value":" ohjeet ympäristön asentamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jatkokurssi ja peruskurssi ovat TMC:ssä yhtenä kurssina. Jos lopetit juuri peruskurssin tekemisen, jatkokurssin tehtävät löytyvät samasta kurssista. Tämän jatkokurssin ensimmäisen osan numero on "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Osa 8"}]},{"type":"text","value":". Mikäli et ole tehnyt tähän jatkokurssin liittyvää peruskurssia, valitse TMC-pluginissa organisaatioksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"MOOC"}]},{"type":"text","value":" ja kurssiksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin MOOC 2023"}]},{"type":"text","value":" ja aloita kurssin tekeminen osasta 8."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten kurssin ensimmäisen puolikkaan aikana huomattiin, on usein hyödyllistä yhdistää samaan asiaan liittyvät tiedot yhdeksi kokonaisuudeksi. Esimerkiksi kirjaa on kätevä mallintaa vaikkapa tuplen tai sanakirjan avulla, kun kaikki kirjaan liittyvät tiedot voidaan tallentaa samaan rakenteeseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplea käyttämällä esimerkki voisi näyttää tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nuoruuteni näppäilyt\""}]},{"type":"text","value":"\nkirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\nvuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1992"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yhdistetään yhdeksi tupleksi"}]},{"type":"text","value":"\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kirjan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjassa on tässä yhteydessä se etu, että avaimina voidaan käyttää merkkijonoja kokonaislukujen sijasta. Näin ollen alkioille voidaan antaa niiden sisältöä kuvaavat nimet:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nuoruuteni näppäilyt\""}]},{"type":"text","value":"\nkirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\nvuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1992"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yhdistetään yhdeksi sanakirjaksi"}]},{"type":"text","value":"\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kirjan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molemmissa tapauksissa tietojen tallentaminen tietorakenteeseen muodostaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olion"}]},{"type":"text","value":". Olio on itsenäinen kokonaisuus, joka sisältää (tässä tapauksessa) toisiinsa liittyvää tietoa. Itsenäisyys tarkoittaa sitä, että olioon tehdyt muutokset eivät vaikuta muihin olioihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos esimerkiksi muodostetaan sanakirjaa käyttäen kaksi kirjaoliota, ensimmäiseen kirjaan tehdyt muutokset eivät vaikuta toiseen kirjaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nkirja2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Seitsemän Pythonia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aleksis Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1894"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkirja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jäähyväiset aaseille\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vanhus ja Python\nSeitsemän Pythonia\nJäähyväiset aaseille\nSeitsemän Pythonia"}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 341px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/74b678969e8df323e37bea6c8b4fae79/4c0ad/8_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 45.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRUlEQVQoz41Sa6uCUBD0//+U/oURERpaRollUmnlIx+V9qKay+zlXIg+eBeGg4tnZnfmaGip8/mMNE0RRRHKskQQBNhut0iSBGEYYrPZSJ/V7/ehrVYr+aFpGtR1/YHj8Yjlcon1eo1erwfTNOE4DgaDgYC9breL0WgkhOPxGBrVD4cD7vc7rtfrBy6Xi0wRx7Fcnk6nmM1mmM/nIlhVlYDTsmzbhvaflbkSL3ELnvy+3W4iqISfzyeGwyG01+sF4v1+f4HFSYqiwOl0Qp7nIsCpSMo+T4I9WtM6IQnVhCSl51mWYb/fy7nb7SQwTmxZFjSmRPAi1RVUKL7vC4kyn6HQT13XJSSeTPfxePx6yFCozlCooqBCYiBch/4sFgt5NkyenpGE/il7GFrryiQkmWEYmEwm8ly4muu6f6lzas/z0Ol08AM2IqK5S7nUBQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/74b678969e8df323e37bea6c8b4fae79/a0b58/8_1_1.webp 230w","/static/74b678969e8df323e37bea6c8b4fae79/5af35/8_1_1.webp 341w"],"sizes":"(max-width: 341px) 100vw, 341px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/74b678969e8df323e37bea6c8b4fae79/81c8e/8_1_1.png 230w","/static/74b678969e8df323e37bea6c8b4fae79/4c0ad/8_1_1.png 341w"],"sizes":"(max-width: 341px) 100vw, 341px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/74b678969e8df323e37bea6c8b4fae79/4c0ad/8_1_1.png","alt":"8 1 1","title":"8 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"text-box","properties":{"variant":"info","name":"Oliot Pythonissa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten kurssin ensimmäisen puolikkaan aikana kerrottiin, Pythonissa kaikki arvot ovat itse asiassa olioita. Tämä tarkoittaa, että muuttujan arvo on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus olioon"}]},{"type":"text","value":", ja varsinainen tieto on tallennettu olioon. Kun esimerkiksi alustetaan muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a = 3"}]},{"type":"text","value":", ei muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" arvo ole 3 vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus olioon, jonka sisältö on arvo 3"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Useimmissa muissa ohjelmointikielissä on olioiden lisäksi ns. perustyyppisiä arvoja (esimerkiksi kokonais- ja liukuluvut sekä totuusarvot), jotka tallennetaan sellaisenaan muuttujiin. Pythonissakin perustyyppiset oliot (kuten vaikkapa luvut, totuusarvot tai merkkijonot) ovat kuitenkin muuttumattomia eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mutatoitumattomia"}]},{"type":"text","value":". Ohjelmoijan kannalta niiden käyttö ei siis käytännössä eroa perustyyppisistä arvoista."}]}]},{"type":"element","tagName":"h2","properties":{"id":"oliot-ja-metodit","style":"position:relative;"},"children":[{"type":"text","value":"Oliot ja metodit"},{"type":"element","tagName":"a","properties":{"href":"#oliot-ja-metodit","ariaLabel":"oliot ja metodit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olioiden tietosisältöä voidaaan havainnoida ja muuttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodien"}]},{"type":"text","value":" avulla. Metodi on funktio, jonka toiminta kohdistuu annettuun olioon. Metodin erottaa muista funktioista tapa, jolla sitä kutsutaan: ensin kirjoitetaan kohdeolio ja sen perään kutsuttava metodi pisteellä erotettuna. Esimerkiksi sanakirja-olion kaikki arvot voidaan palauttaa metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"values"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muodostetaan sanakirjatyyppinen kirjaolio"}]},{"type":"text","value":"\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikki arvot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodikutsu values() kirjoitetaan muuttujan perään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pisteellä erotettuna"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"values"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vanhus ja Python\nErnest Pythonen\n1952"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samalla tavalla merkkijonometodit kohdistuvat siihen merkkijonoon, jonka kautta niitä kutsutaan. Esimerkiksi merkkijonon metodeja ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Keksitty\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan K-kirjaimien määrä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"K\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# K-kirjaimien määrä toisessa jonossa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Karkkilan Kolisevat Karjut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"K\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Osajonon Keksitty indeksi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keksitty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tästä merkkijonosta osajonoa ei löydy"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ihan eri jono\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keksitty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3\n6\n-1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonometodit palauttavat arvoja, mutta niiden avulla ei voida muuttaa merkkijonoa. Kuitenkin esimerkiksi lista-olion metodien avulla voidaan muuttaa listan sisältöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään pari alkiota"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poistetaan alkio alusta"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3, 5, 1]\n[2, 3, 5, 1]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pienin keskiarvo","tmcname":"osa08-01_pienin_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pienin_keskiarvo(henkilo1: dict, henkilo2: dict, henkilo3: dict)"}]},{"type":"text","value":", joka saa parametrikseen kolme sanakirjaoliota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisessa sanakirjaoliossa on alkiot, joihin viittaavat nämä avaimet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"text","value":": kilpailijan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"text","value":": kilpailijan ensimmäinen tulos (kokonaisluku väliltä 1...10)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"text","value":": kilpailijan toinen tulos (kuten yllä)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"text","value":": kilpailijan kolmas tulos (kuten yllä)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio laskee kaikkien kilpailijoiden tulosten keskiarvot ja palauttaa sen kilpailijan, jonka keskiarvo on pienin. Funktion palautusarvona on sanakirjaolio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että vain yhdellä henkilöllä on pienin keskiarvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Veijo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin_keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'nimi': 'Veijo', 'tulos1': 3, 'tulos2': 1, 'tulos3': 1}"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Rivien summat","tmcname":"osa08-02_rivien_summmat "},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkioiden arvot ovat viittauksia olioihin. Tämä pätee myös silloin, kun mallinnetaan matriisia: jokainen päälistan alkion arvo on viittaus toiseen listaan (jonka alkiot taas ovat viittauksia arvoihin)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivien_summat(matriisi: list)"}]},{"type":"text","value":", joka saa parametrikseen kokonaislukuja sisältävän matriisin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio lisää jokaiselle matriisin riville uuden alkion, jonka arvo on rivin alkioiden summa. Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nrivien_summat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[1, 2, 3], [3, 4, 7]]"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan oliolla
    • \n
    • Ymmärrät, mitä tarkoitetaan olioiden itsenäisyydellä
    • \n
    • Osaat muodostaa ja käsitellä olioita
    • \n

    Tämä on Ohjelmoinnin jatkokurssin ensimmäinen osa, ja kurssilla käytetään VS Codea samaan tapaan kuin Ohjelmoinnin perusteissa. Jos et ole käyttänyt ennen VS Codea, löydät tästä ohjeet ympäristön asentamiseen.

    Jatkokurssi ja peruskurssi ovat TMC:ssä yhtenä kurssina. Jos lopetit juuri peruskurssin tekemisen, jatkokurssin tehtävät löytyvät samasta kurssista. Tämän jatkokurssin ensimmäisen osan numero on Osa 8. Mikäli et ole tehnyt tähän jatkokurssin liittyvää peruskurssia, valitse TMC-pluginissa organisaatioksi MOOC ja kurssiksi Ohjelmoinnin MOOC 2023 ja aloita kurssin tekeminen osasta 8.

    Kuten kurssin ensimmäisen puolikkaan aikana huomattiin, on usein hyödyllistä yhdistää samaan asiaan liittyvät tiedot yhdeksi kokonaisuudeksi. Esimerkiksi kirjaa on kätevä mallintaa vaikkapa tuplen tai sanakirjan avulla, kun kaikki kirjaan liittyvät tiedot voidaan tallentaa samaan rakenteeseen.

    Tuplea käyttämällä esimerkki voisi näyttää tältä:

    nimi = \"Nuoruuteni näppäilyt\"\nkirjailija = \"Pekka Python\"\nvuosi = 1992\n\n# Yhdistetään yhdeksi tupleksi\nkirja = (nimi, kirjailija, vuosi)\n\n# Tulostetaan kirjan nimi\nprint(kirja[0])

    Sanakirjassa on tässä yhteydessä se etu, että avaimina voidaan käyttää merkkijonoja kokonaislukujen sijasta. Näin ollen alkioille voidaan antaa niiden sisältöä kuvaavat nimet:

    nimi = \"Nuoruuteni näppäilyt\"\nkirjailija = \"Pekka Python\"\nvuosi = 1992\n\n# Yhdistetään yhdeksi sanakirjaksi\nkirja = {\"nimi\": nimi, \"kirjailija\": kirjailija, \"vuosi\": vuosi}\n\n# Tulostetaan kirjan nimi\nprint(kirja[\"nimi\"])

    Molemmissa tapauksissa tietojen tallentaminen tietorakenteeseen muodostaa olion. Olio on itsenäinen kokonaisuus, joka sisältää (tässä tapauksessa) toisiinsa liittyvää tietoa. Itsenäisyys tarkoittaa sitä, että olioon tehdyt muutokset eivät vaikuta muihin olioihin.

    Jos esimerkiksi muodostetaan sanakirjaa käyttäen kaksi kirjaoliota, ensimmäiseen kirjaan tehdyt muutokset eivät vaikuta toiseen kirjaan:

    kirja1 = {\"nimi\": \"Vanhus ja Python\", \"kirjailija\": \"Ernest Pythonen\", \"vuosi\": 1952}\nkirja2 = {\"nimi\": \"Seitsemän Pythonia\", \"kirjailija\": \"Aleksis Python\", \"vuosi\": 1894}\n\nprint(kirja1[\"nimi\"])\nprint(kirja2[\"nimi\"])\n\nkirja1[\"nimi\"] = \"Jäähyväiset aaseille\"\n\nprint(kirja1[\"nimi\"])\nprint(kirja2[\"nimi\"])

    Vanhus ja Python\nSeitsemän Pythonia\nJäähyväiset aaseille\nSeitsemän Pythonia

    \n \n \n \n \n \n \"8\n \n \n

    Kuten kurssin ensimmäisen puolikkaan aikana kerrottiin, Pythonissa kaikki arvot ovat itse asiassa olioita. Tämä tarkoittaa, että muuttujan arvo on viittaus olioon, ja varsinainen tieto on tallennettu olioon. Kun esimerkiksi alustetaan muuttuja a = 3, ei muuttujan a arvo ole 3 vaan viittaus olioon, jonka sisältö on arvo 3.

    Useimmissa muissa ohjelmointikielissä on olioiden lisäksi ns. perustyyppisiä arvoja (esimerkiksi kokonais- ja liukuluvut sekä totuusarvot), jotka tallennetaan sellaisenaan muuttujiin. Pythonissakin perustyyppiset oliot (kuten vaikkapa luvut, totuusarvot tai merkkijonot) ovat kuitenkin muuttumattomia eli mutatoitumattomia. Ohjelmoijan kannalta niiden käyttö ei siis käytännössä eroa perustyyppisistä arvoista.

    Oliot ja metodit

    Olioiden tietosisältöä voidaaan havainnoida ja muuttaa metodien avulla. Metodi on funktio, jonka toiminta kohdistuu annettuun olioon. Metodin erottaa muista funktioista tapa, jolla sitä kutsutaan: ensin kirjoitetaan kohdeolio ja sen perään kutsuttava metodi pisteellä erotettuna. Esimerkiksi sanakirja-olion kaikki arvot voidaan palauttaa metodin values avulla:

    # muodostetaan sanakirjatyyppinen kirjaolio\nkirja = {\"nimi\": \"Vanhus ja Python\", \"kirjailija\": \"Ernest Pythonen\", \"vuosi\": 1952}\n\n# Tulostetaan kaikki arvot\n# Metodikutsu values() kirjoitetaan muuttujan perään\n# pisteellä erotettuna\nfor arvo in kirja.values():\n    print(arvo)

    Vanhus ja Python\nErnest Pythonen\n1952

    Samalla tavalla merkkijonometodit kohdistuvat siihen merkkijonoon, jonka kautta niitä kutsutaan. Esimerkiksi merkkijonon metodeja ovat count ja find:

    nimi = \"Keijo Keksitty\"\n\n# Tulostetaan K-kirjaimien määrä\nprint(nimi.count(\"K\"))\n\n# K-kirjaimien määrä toisessa jonossa\nprint(\"Karkkilan Kolisevat Karjut\".count(\"K\"))\n\n# Osajonon Keksitty indeksi\nprint(nimi.find(\"Keksitty\"))\n\n# Tästä merkkijonosta osajonoa ei löydy\nprint(\"Ihan eri jono\".find(\"Keksitty\"))

    2\n3\n6\n-1

    Merkkijonometodit palauttavat arvoja, mutta niiden avulla ei voida muuttaa merkkijonoa. Kuitenkin esimerkiksi lista-olion metodien avulla voidaan muuttaa listan sisältöä:

    lista = [1,2,3]\n\n# Lisätään pari alkiota\nlista.append(5)\nlista.append(1)\n\nprint(lista)\n\n# Poistetaan alkio alusta\nlista.pop(0)\n\nprint(lista)

    [1, 2, 3, 5, 1]\n[2, 3, 5, 1]

    Tee funktio pienin_keskiarvo(henkilo1: dict, henkilo2: dict, henkilo3: dict), joka saa parametrikseen kolme sanakirjaoliota.

    Jokaisessa sanakirjaoliossa on alkiot, joihin viittaavat nämä avaimet:

      \n
    • \"nimi\": kilpailijan nimi
    • \n
    • \"tulos1\": kilpailijan ensimmäinen tulos (kokonaisluku väliltä 1...10)
    • \n
    • \"tulos2\": kilpailijan toinen tulos (kuten yllä)
    • \n
    • \"tulos3\": kilpailijan kolmas tulos (kuten yllä)
    • \n

    Funktio laskee kaikkien kilpailijoiden tulosten keskiarvot ja palauttaa sen kilpailijan, jonka keskiarvo on pienin. Funktion palautusarvona on sanakirjaolio.

    Voit olettaa, että vain yhdellä henkilöllä on pienin keskiarvo.

    Esimerkki funktion kutsumisesta:

    henkilo1 = {\"nimi\": \"Keijo\", \"tulos1\": 2, \"tulos2\": 3, \"tulos3\": 3}\nhenkilo2 = {\"nimi\": \"Reijo\", \"tulos1\": 5, \"tulos2\": 1, \"tulos3\": 8}\nhenkilo3 = {\"nimi\": \"Veijo\", \"tulos1\": 3, \"tulos2\": 1, \"tulos3\": 1}\n\nprint(pienin_keskiarvo(henkilo1, henkilo2, henkilo3))

    {'nimi': 'Veijo', 'tulos1': 3, 'tulos2': 1, 'tulos3': 1}

    Listan alkioiden arvot ovat viittauksia olioihin. Tämä pätee myös silloin, kun mallinnetaan matriisia: jokainen päälistan alkion arvo on viittaus toiseen listaan (jonka alkiot taas ovat viittauksia arvoihin).

    Tee funktio rivien_summat(matriisi: list), joka saa parametrikseen kokonaislukuja sisältävän matriisin.

    Funktio lisää jokaiselle matriisin riville uuden alkion, jonka arvo on rivin alkioiden summa. Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia.

    Esimerkki funktion kutsumisesta:

    matriisi = [[1, 2], [3, 4]]\nrivien_summat(matriisi)\nprint(matriisi)

    [[1, 2, 3], [3, 4, 7]]

    ","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/1-oliot-ja-metodit.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan oliolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mitä tarkoitetaan olioiden itsenäisyydellä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa ja käsitellä olioita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on Ohjelmoinnin jatkokurssin ensimmäinen osa, ja kurssilla käytetään VS Codea samaan tapaan kuin Ohjelmoinnin perusteissa. Jos et ole käyttänyt ennen VS Codea, löydät "},{"type":"element","tagName":"a","properties":{"href":"https://www.mooc.fi/fi/installation/vscode","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"tästä"}]},{"type":"text","value":" ohjeet ympäristön asentamiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jatkokurssi ja peruskurssi ovat TMC:ssä yhtenä kurssina. Jos lopetit juuri peruskurssin tekemisen, jatkokurssin tehtävät löytyvät samasta kurssista. Tämän jatkokurssin ensimmäisen osan numero on "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Osa 8"}]},{"type":"text","value":". Mikäli et ole tehnyt tähän jatkokurssin liittyvää peruskurssia, valitse TMC-pluginissa organisaatioksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"MOOC"}]},{"type":"text","value":" ja kurssiksi "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Ohjelmoinnin MOOC 2023"}]},{"type":"text","value":" ja aloita kurssin tekeminen osasta 8."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten kurssin ensimmäisen puolikkaan aikana huomattiin, on usein hyödyllistä yhdistää samaan asiaan liittyvät tiedot yhdeksi kokonaisuudeksi. Esimerkiksi kirjaa on kätevä mallintaa vaikkapa tuplen tai sanakirjan avulla, kun kaikki kirjaan liittyvät tiedot voidaan tallentaa samaan rakenteeseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tuplea käyttämällä esimerkki voisi näyttää tältä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nuoruuteni näppäilyt\""}]},{"type":"text","value":"\nkirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\nvuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1992"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yhdistetään yhdeksi tupleksi"}]},{"type":"text","value":"\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kirjan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjassa on tässä yhteydessä se etu, että avaimina voidaan käyttää merkkijonoja kokonaislukujen sijasta. Näin ollen alkioille voidaan antaa niiden sisältöä kuvaavat nimet:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nuoruuteni näppäilyt\""}]},{"type":"text","value":"\nkirjailija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\nvuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1992"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yhdistetään yhdeksi sanakirjaksi"}]},{"type":"text","value":"\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" kirjailija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kirjan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Molemmissa tapauksissa tietojen tallentaminen tietorakenteeseen muodostaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olion"}]},{"type":"text","value":". Olio on itsenäinen kokonaisuus, joka sisältää (tässä tapauksessa) toisiinsa liittyvää tietoa. Itsenäisyys tarkoittaa sitä, että olioon tehdyt muutokset eivät vaikuta muihin olioihin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos esimerkiksi muodostetaan sanakirjaa käyttäen kaksi kirjaoliota, ensimmäiseen kirjaan tehdyt muutokset eivät vaikuta toiseen kirjaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nkirja2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Seitsemän Pythonia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aleksis Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1894"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkirja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jäähyväiset aaseille\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vanhus ja Python\nSeitsemän Pythonia\nJäähyväiset aaseille\nSeitsemän Pythonia"}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 341px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/74b678969e8df323e37bea6c8b4fae79/4c0ad/8_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 45.65217391304348%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRUlEQVQoz41Sa6uCUBD0//+U/oURERpaRollUmnlIx+V9qKay+zlXIg+eBeGg4tnZnfmaGip8/mMNE0RRRHKskQQBNhut0iSBGEYYrPZSJ/V7/ehrVYr+aFpGtR1/YHj8Yjlcon1eo1erwfTNOE4DgaDgYC9breL0WgkhOPxGBrVD4cD7vc7rtfrBy6Xi0wRx7Fcnk6nmM1mmM/nIlhVlYDTsmzbhvaflbkSL3ELnvy+3W4iqISfzyeGwyG01+sF4v1+f4HFSYqiwOl0Qp7nIsCpSMo+T4I9WtM6IQnVhCSl51mWYb/fy7nb7SQwTmxZFjSmRPAi1RVUKL7vC4kyn6HQT13XJSSeTPfxePx6yFCozlCooqBCYiBch/4sFgt5NkyenpGE/il7GFrryiQkmWEYmEwm8ly4muu6f6lzas/z0Ol08AM2IqK5S7nUBQAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/74b678969e8df323e37bea6c8b4fae79/a0b58/8_1_1.webp 230w","/static/74b678969e8df323e37bea6c8b4fae79/5af35/8_1_1.webp 341w"],"sizes":"(max-width: 341px) 100vw, 341px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/74b678969e8df323e37bea6c8b4fae79/81c8e/8_1_1.png 230w","/static/74b678969e8df323e37bea6c8b4fae79/4c0ad/8_1_1.png 341w"],"sizes":"(max-width: 341px) 100vw, 341px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/74b678969e8df323e37bea6c8b4fae79/4c0ad/8_1_1.png","alt":"8 1 1","title":"8 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"text-box","properties":{"variant":"info","name":"Oliot Pythonissa"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten kurssin ensimmäisen puolikkaan aikana kerrottiin, Pythonissa kaikki arvot ovat itse asiassa olioita. Tämä tarkoittaa, että muuttujan arvo on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus olioon"}]},{"type":"text","value":", ja varsinainen tieto on tallennettu olioon. Kun esimerkiksi alustetaan muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a = 3"}]},{"type":"text","value":", ei muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"a"}]},{"type":"text","value":" arvo ole 3 vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaus olioon, jonka sisältö on arvo 3"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Useimmissa muissa ohjelmointikielissä on olioiden lisäksi ns. perustyyppisiä arvoja (esimerkiksi kokonais- ja liukuluvut sekä totuusarvot), jotka tallennetaan sellaisenaan muuttujiin. Pythonissakin perustyyppiset oliot (kuten vaikkapa luvut, totuusarvot tai merkkijonot) ovat kuitenkin muuttumattomia eli "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"mutatoitumattomia"}]},{"type":"text","value":". Ohjelmoijan kannalta niiden käyttö ei siis käytännössä eroa perustyyppisistä arvoista."}]}]},{"type":"element","tagName":"h2","properties":{"id":"oliot-ja-metodit","style":"position:relative;"},"children":[{"type":"text","value":"Oliot ja metodit"},{"type":"element","tagName":"a","properties":{"href":"#oliot-ja-metodit","ariaLabel":"oliot ja metodit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olioiden tietosisältöä voidaaan havainnoida ja muuttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodien"}]},{"type":"text","value":" avulla. Metodi on funktio, jonka toiminta kohdistuu annettuun olioon. Metodin erottaa muista funktioista tapa, jolla sitä kutsutaan: ensin kirjoitetaan kohdeolio ja sen perään kutsuttava metodi pisteellä erotettuna. Esimerkiksi sanakirja-olion kaikki arvot voidaan palauttaa metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"values"}]},{"type":"text","value":" avulla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muodostetaan sanakirjatyyppinen kirjaolio"}]},{"type":"text","value":"\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vanhus ja Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kirjailija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ernest Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1952"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikki arvot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodikutsu values() kirjoitetaan muuttujan perään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# pisteellä erotettuna"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" arvo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"values"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vanhus ja Python\nErnest Pythonen\n1952"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samalla tavalla merkkijonometodit kohdistuvat siihen merkkijonoon, jonka kautta niitä kutsutaan. Esimerkiksi merkkijonon metodeja ovat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"count"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"find"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo Keksitty\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan K-kirjaimien määrä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"K\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# K-kirjaimien määrä toisessa jonossa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Karkkilan Kolisevat Karjut\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"count"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"K\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Osajonon Keksitty indeksi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keksitty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tästä merkkijonosta osajonoa ei löydy"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ihan eri jono\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"find"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keksitty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3\n6\n-1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Merkkijonometodit palauttavat arvoja, mutta niiden avulla ei voida muuttaa merkkijonoa. Kuitenkin esimerkiksi lista-olion metodien avulla voidaan muuttaa listan sisältöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään pari alkiota"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poistetaan alkio alusta"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1, 2, 3, 5, 1]\n[2, 3, 5, 1]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Pienin keskiarvo","tmcname":"osa08-01_pienin_keskiarvo"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pienin_keskiarvo(henkilo1: dict, henkilo2: dict, henkilo3: dict)"}]},{"type":"text","value":", joka saa parametrikseen kolme sanakirjaoliota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jokaisessa sanakirjaoliossa on alkiot, joihin viittaavat nämä avaimet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"text","value":": kilpailijan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"text","value":": kilpailijan ensimmäinen tulos (kokonaisluku väliltä 1...10)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"text","value":": kilpailijan toinen tulos (kuten yllä)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"text","value":": kilpailijan kolmas tulos (kuten yllä)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio laskee kaikkien kilpailijoiden tulosten keskiarvot ja palauttaa sen kilpailijan, jonka keskiarvo on pienin. Funktion palautusarvona on sanakirjaolio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa, että vain yhdellä henkilöllä on pienin keskiarvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"henkilo1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keijo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\nhenkilo3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nimi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Veijo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tulos3\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pienin_keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"{'nimi': 'Veijo', 'tulos1': 3, 'tulos2': 1, 'tulos3': 1}"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Rivien summat","tmcname":"osa08-02_rivien_summmat "},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan alkioiden arvot ovat viittauksia olioihin. Tämä pätee myös silloin, kun mallinnetaan matriisia: jokainen päälistan alkion arvo on viittaus toiseen listaan (jonka alkiot taas ovat viittauksia arvoihin)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rivien_summat(matriisi: list)"}]},{"type":"text","value":", joka saa parametrikseen kokonaislukuja sisältävän matriisin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio lisää jokaiselle matriisin riville uuden alkion, jonka arvo on rivin alkioiden summa. Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"matriisi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nrivien_summat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matriisi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[[1, 2, 3], [3, 4, 7]]"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan oliolla
    • \n
    • Ymmärrät, mitä tarkoitetaan olioiden itsenäisyydellä
    • \n
    • Osaat muodostaa ja käsitellä olioita
    • \n

    Tämä on Ohjelmoinnin jatkokurssin ensimmäinen osa, ja kurssilla käytetään VS Codea samaan tapaan kuin Ohjelmoinnin perusteissa. Jos et ole käyttänyt ennen VS Codea, löydät tästä ohjeet ympäristön asentamiseen.

    Jatkokurssi ja peruskurssi ovat TMC:ssä yhtenä kurssina. Jos lopetit juuri peruskurssin tekemisen, jatkokurssin tehtävät löytyvät samasta kurssista. Tämän jatkokurssin ensimmäisen osan numero on Osa 8. Mikäli et ole tehnyt tähän jatkokurssin liittyvää peruskurssia, valitse TMC-pluginissa organisaatioksi MOOC ja kurssiksi Ohjelmoinnin MOOC 2023 ja aloita kurssin tekeminen osasta 8.

    Kuten kurssin ensimmäisen puolikkaan aikana huomattiin, on usein hyödyllistä yhdistää samaan asiaan liittyvät tiedot yhdeksi kokonaisuudeksi. Esimerkiksi kirjaa on kätevä mallintaa vaikkapa tuplen tai sanakirjan avulla, kun kaikki kirjaan liittyvät tiedot voidaan tallentaa samaan rakenteeseen.

    Tuplea käyttämällä esimerkki voisi näyttää tältä:

    nimi = \"Nuoruuteni näppäilyt\"\nkirjailija = \"Pekka Python\"\nvuosi = 1992\n\n# Yhdistetään yhdeksi tupleksi\nkirja = (nimi, kirjailija, vuosi)\n\n# Tulostetaan kirjan nimi\nprint(kirja[0])

    Sanakirjassa on tässä yhteydessä se etu, että avaimina voidaan käyttää merkkijonoja kokonaislukujen sijasta. Näin ollen alkioille voidaan antaa niiden sisältöä kuvaavat nimet:

    nimi = \"Nuoruuteni näppäilyt\"\nkirjailija = \"Pekka Python\"\nvuosi = 1992\n\n# Yhdistetään yhdeksi sanakirjaksi\nkirja = {\"nimi\": nimi, \"kirjailija\": kirjailija, \"vuosi\": vuosi}\n\n# Tulostetaan kirjan nimi\nprint(kirja[\"nimi\"])

    Molemmissa tapauksissa tietojen tallentaminen tietorakenteeseen muodostaa olion. Olio on itsenäinen kokonaisuus, joka sisältää (tässä tapauksessa) toisiinsa liittyvää tietoa. Itsenäisyys tarkoittaa sitä, että olioon tehdyt muutokset eivät vaikuta muihin olioihin.

    Jos esimerkiksi muodostetaan sanakirjaa käyttäen kaksi kirjaoliota, ensimmäiseen kirjaan tehdyt muutokset eivät vaikuta toiseen kirjaan:

    kirja1 = {\"nimi\": \"Vanhus ja Python\", \"kirjailija\": \"Ernest Pythonen\", \"vuosi\": 1952}\nkirja2 = {\"nimi\": \"Seitsemän Pythonia\", \"kirjailija\": \"Aleksis Python\", \"vuosi\": 1894}\n\nprint(kirja1[\"nimi\"])\nprint(kirja2[\"nimi\"])\n\nkirja1[\"nimi\"] = \"Jäähyväiset aaseille\"\n\nprint(kirja1[\"nimi\"])\nprint(kirja2[\"nimi\"])

    Vanhus ja Python\nSeitsemän Pythonia\nJäähyväiset aaseille\nSeitsemän Pythonia

    \n \n \n \n \n \n \"8\n \n \n

    Kuten kurssin ensimmäisen puolikkaan aikana kerrottiin, Pythonissa kaikki arvot ovat itse asiassa olioita. Tämä tarkoittaa, että muuttujan arvo on viittaus olioon, ja varsinainen tieto on tallennettu olioon. Kun esimerkiksi alustetaan muuttuja a = 3, ei muuttujan a arvo ole 3 vaan viittaus olioon, jonka sisältö on arvo 3.

    Useimmissa muissa ohjelmointikielissä on olioiden lisäksi ns. perustyyppisiä arvoja (esimerkiksi kokonais- ja liukuluvut sekä totuusarvot), jotka tallennetaan sellaisenaan muuttujiin. Pythonissakin perustyyppiset oliot (kuten vaikkapa luvut, totuusarvot tai merkkijonot) ovat kuitenkin muuttumattomia eli mutatoitumattomia. Ohjelmoijan kannalta niiden käyttö ei siis käytännössä eroa perustyyppisistä arvoista.

    Oliot ja metodit

    Olioiden tietosisältöä voidaaan havainnoida ja muuttaa metodien avulla. Metodi on funktio, jonka toiminta kohdistuu annettuun olioon. Metodin erottaa muista funktioista tapa, jolla sitä kutsutaan: ensin kirjoitetaan kohdeolio ja sen perään kutsuttava metodi pisteellä erotettuna. Esimerkiksi sanakirja-olion kaikki arvot voidaan palauttaa metodin values avulla:

    # muodostetaan sanakirjatyyppinen kirjaolio\nkirja = {\"nimi\": \"Vanhus ja Python\", \"kirjailija\": \"Ernest Pythonen\", \"vuosi\": 1952}\n\n# Tulostetaan kaikki arvot\n# Metodikutsu values() kirjoitetaan muuttujan perään\n# pisteellä erotettuna\nfor arvo in kirja.values():\n    print(arvo)

    Vanhus ja Python\nErnest Pythonen\n1952

    Samalla tavalla merkkijonometodit kohdistuvat siihen merkkijonoon, jonka kautta niitä kutsutaan. Esimerkiksi merkkijonon metodeja ovat count ja find:

    nimi = \"Keijo Keksitty\"\n\n# Tulostetaan K-kirjaimien määrä\nprint(nimi.count(\"K\"))\n\n# K-kirjaimien määrä toisessa jonossa\nprint(\"Karkkilan Kolisevat Karjut\".count(\"K\"))\n\n# Osajonon Keksitty indeksi\nprint(nimi.find(\"Keksitty\"))\n\n# Tästä merkkijonosta osajonoa ei löydy\nprint(\"Ihan eri jono\".find(\"Keksitty\"))

    2\n3\n6\n-1

    Merkkijonometodit palauttavat arvoja, mutta niiden avulla ei voida muuttaa merkkijonoa. Kuitenkin esimerkiksi lista-olion metodien avulla voidaan muuttaa listan sisältöä:

    lista = [1,2,3]\n\n# Lisätään pari alkiota\nlista.append(5)\nlista.append(1)\n\nprint(lista)\n\n# Poistetaan alkio alusta\nlista.pop(0)\n\nprint(lista)

    [1, 2, 3, 5, 1]\n[2, 3, 5, 1]

    Tee funktio pienin_keskiarvo(henkilo1: dict, henkilo2: dict, henkilo3: dict), joka saa parametrikseen kolme sanakirjaoliota.

    Jokaisessa sanakirjaoliossa on alkiot, joihin viittaavat nämä avaimet:

      \n
    • \"nimi\": kilpailijan nimi
    • \n
    • \"tulos1\": kilpailijan ensimmäinen tulos (kokonaisluku väliltä 1...10)
    • \n
    • \"tulos2\": kilpailijan toinen tulos (kuten yllä)
    • \n
    • \"tulos3\": kilpailijan kolmas tulos (kuten yllä)
    • \n

    Funktio laskee kaikkien kilpailijoiden tulosten keskiarvot ja palauttaa sen kilpailijan, jonka keskiarvo on pienin. Funktion palautusarvona on sanakirjaolio.

    Voit olettaa, että vain yhdellä henkilöllä on pienin keskiarvo.

    Esimerkki funktion kutsumisesta:

    henkilo1 = {\"nimi\": \"Keijo\", \"tulos1\": 2, \"tulos2\": 3, \"tulos3\": 3}\nhenkilo2 = {\"nimi\": \"Reijo\", \"tulos1\": 5, \"tulos2\": 1, \"tulos3\": 8}\nhenkilo3 = {\"nimi\": \"Veijo\", \"tulos1\": 3, \"tulos2\": 1, \"tulos3\": 1}\n\nprint(pienin_keskiarvo(henkilo1, henkilo2, henkilo3))

    {'nimi': 'Veijo', 'tulos1': 3, 'tulos2': 1, 'tulos3': 1}

    Listan alkioiden arvot ovat viittauksia olioihin. Tämä pätee myös silloin, kun mallinnetaan matriisia: jokainen päälistan alkion arvo on viittaus toiseen listaan (jonka alkiot taas ovat viittauksia arvoihin).

    Tee funktio rivien_summat(matriisi: list), joka saa parametrikseen kokonaislukuja sisältävän matriisin.

    Funktio lisää jokaiselle matriisin riville uuden alkion, jonka arvo on rivin alkioiden summa. Funktio ei palauta mitään, vaan muokkaa parametrinaan saamaansa matriisia.

    Esimerkki funktion kutsumisesta:

    matriisi = [[1, 2], [3, 4]]\nrivien_summat(matriisi)\nprint(matriisi)

    [[1, 2, 3], [3, 4, 7]]

    ","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/1-oliot-ja-metodit.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-8/2-luokat-ja-oliot/page-data.json b/page-data/osa-8/2-luokat-ja-oliot/page-data.json index 82e9f667f..c9b78bbf8 100644 --- a/page-data/osa-8/2-luokat-ja-oliot/page-data.json +++ b/page-data/osa-8/2-luokat-ja-oliot/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-8/2-luokat-ja-oliot", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan luokalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät luokan ja olion yhteyden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä olio-ohjelmointi tarkoittaa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä osassa käsitellyt esimerkkioliot – listat, tuplet, sanakirjat ja merkkijonot – ovat siinä mielessä erikoistapauksia, että niiden kaikkien muodostamiseen on Pythonissa sisäänrakennettuna oma syntaksinsa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lista luodaan antamalla arvot hakasuluissa"}]},{"type":"text","value":"\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Merkkijonovakio tunnistetaan lainausmerkeistä"}]},{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Sanakirja luodaan aaltosulkeilla"}]},{"type":"text","value":"\nsanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"yksi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaksi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tuplessa arvot ovat sulkeissa"}]},{"type":"text","value":"\noma_tuple "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muita olioita muodostettaessa kutsutaan erityistä metodia, joka luo olion. Tällaista metodia kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"konstruktoriksi"}]},{"type":"text","value":". Tarkastellaan esimerkkinä murtolukuolioiden muodostamista Fraction-luokasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tuodaan käyttöön luokka Fraction modulista fractions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" fractions "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Fraction\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan pari uutta murtolukuoliota"}]},{"type":"text","value":"\npuolikas "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkolmasosa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkolmas "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puolikas"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kolmasosa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kolmas"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Murtoluvuilla voi myös laskea"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puolikas "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" kolmasosa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1/2\n1/3\n3/11\n5/6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkistä huomataan, että konstuktorikutsut poikkeavat aiemmista metodikutsuista. Konstruktorikutsuja ei ole sidottu tiettyyn olioon (mikä on sikäli loogista, että olio muodostetaan kutsumalla konstruktoria). Lisäksi metodin nimi on kirjoitettu isolla alkukirjaimella: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"puolikas = Fraction(1,2)"}]},{"type":"text","value":". Pureudutaan tarkemmin olion muodostamisen mekanismiin esittelemällä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokan"}]},{"type":"text","value":" käsite."}]},{"type":"element","tagName":"h2","properties":{"id":"luokka-on-olion-kasikirjoitus","style":"position:relative;"},"children":[{"type":"text","value":"Luokka on olion käsikirjoitus"},{"type":"element","tagName":"a","properties":{"href":"#luokka-on-olion-kasikirjoitus","ariaLabel":"luokka on olion kasikirjoitus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Materiaalissa on jo aiemmin vilahtanut käsite "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokka"}]},{"type":"text","value":". Edellisessä esimerkissä otettiin käyttöön luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" moduulista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fractions"}]},{"type":"text","value":". Uudet oliot muodostettiin kutsumalla luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"konstruktoria"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa määritellään siitä muodostettavien olioiden rakenne ja toiminnallisuus. Luokkaa nimitetään tästä syystä joskus olion käsikirjoitukseksi. Luokassa siis kerrotaan, millaista tietoa olio sisältää, ja määritellään metodit, joiden avulla oliota voidaan käsitellä. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnilla"}]},{"type":"text","value":" tarkoitetaan ohjelmointitapaa, jossa ohjelman toiminnallisuus tapahtuu luokkien ja niistä muodostettujen olioiden avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhdestä luokasta voidaan muodostaa useita olioita. Niin kuin aiemmin kerrottiin, oliot ovat itsenäisiä - muutokset olioon eivät vaikuta muihin luokasta muodostettuihin olioihin. Jokaisella oliolla on oma tietosisältönsä. Vähän yksinkertaistaen voisi sanoa, että"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"luokassa määritellään muuttujat ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"oliota muodostaessa niille annetaan arvot."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luodaan esimerkkinä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":"-luokasta olio ja tulostetaan sen osoittaja ja nimittäjä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" fractions "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Fraction\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan osoittaja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerator"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja sitten nimittäjä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"denominator"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" on siis määritelty, että olioilla on muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"numerator"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"denominator"}]},{"type":"text","value":". Jokaisella oliolla on kuitenkin oma arvonsa näille muuttujille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samalla tavalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-luokasta muodostetuilla olioilla on kaikilla omat itsenäiset arvonsa vuodelle, kuukaudelle ja päivämäärälle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\njoulu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kuukaudet molemmista"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joulu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"12\n6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":" on siis määritelty, että luokasta muodostettavilla olioilla on muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"year"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"month"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"day"}]},{"type":"text","value":". Kun luokasta muodostetaan olio, annetaan muuttujille arvot. Joka oliolla on omat arvonsa muuttujille."}]},{"type":"element","tagName":"h2","properties":{"id":"olioita-kasittelevat-funktiot","style":"position:relative;"},"children":[{"type":"text","value":"Olioita käsittelevät funktiot"},{"type":"element","tagName":"a","properties":{"href":"#olioita-kasittelevat-funktiot","ariaLabel":"olioita kasittelevat funktiot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden parametrina oleviin olioihin ei liity oikeastaan mitään sen kummempaa. Niitä on jo kurssin aiemmissa osissa nähty runsaasti. Seuraavassa on esimerkki funktiosta, joka tarkastaa, onko sen parametrina oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-olio viikonloppu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"onko_viikonloppu"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio siis käyttää parametrina olevan olion metodia "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html#datetime.date.isoweekday","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"isoweekday"}]},{"type":"text","value":", joka palauttaa viikonpäivää vastaavan numeron niin, että maanantai on 1, tiistai on 2, jne."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"joulu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_viikonloppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joulu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_viikonloppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"metodi-vs-olion-muuttuja","style":"position:relative;"},"children":[{"type":"text","value":"Metodi vs. olion muuttuja"},{"type":"element","tagName":"a","properties":{"href":"#metodi-vs-olion-muuttuja","ariaLabel":"metodi vs olion muuttuja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tarkastellaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-oliota, niin huomataan, että sen käsittely poikkeaa hieman riippuen siitä, mitä asiaa olion sisällöstä tarkastellaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kutsutaan metodia"}]},{"type":"text","value":"\nviikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viitataan olion muuttujaan"}]},{"type":"text","value":"\nkuukausi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viikonpäivä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kuukausi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viikonpäivä: 4\nKuukausi: 12"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päiväolion viikonpäivä saadaan siis selville kutsumalla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodia"}]},{"type":"text","value":" isoweekday:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska on kyse metodikutsusta, niin metodin nimen perään laitetaan sulut. Jos sulut unohtuvat, on lopputulos outo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viikonpäivä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viikonpäivä: "}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päiväolioon liittyvä kuukausi taas on olion muuttuja, ja sen arvo selviää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaamalla"}]},{"type":"text","value":" muuttujaan"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kuukausi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis käytössä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole sulkuja"}]},{"type":"text","value":". Jos tässä tilanteessa yritettäisiin käyttää sulkuja, ohjelma aiheuttaisi virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kuukausi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Traceback (most recent call last):\nFile \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nTypeError: 'int' object is not callable"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vuodet listaan","tmcname":"osa08-03_vuodet_listaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vuodet_listaan(paivamaarat: list)"}]},{"type":"text","value":", joka saa parametrikseen listan, joka sisältää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-tyyppisiä olioita. Funktio palauttaa uuden listan, jossa on päivämäärien "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"vuodet suuruusjärjestyksessä pienimmästä suurimpaan"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paiva1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaiva2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2006"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaiva3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1993"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvuodet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuodet_listaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"paiva1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vuodet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1993, 2006, 2019]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kauppalista","tmcname":"osa08-04_kauppalista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty valmiiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":"-luokka, jolla voidaan mallintaa yhtä kauppalistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kauppalistaolio on tallennettu esimerkiksi muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kauppalista"}]},{"type":"text","value":", sitä voidaan käsitellä seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuotteita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\nBanaanit\n4\nMaito\n1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös seuraava onnistuu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kauppalistalla tuotteet on indeksöity ykkösestä alkaen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuotteita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tuote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"banaanit 4 kpl\nmaito 1 kpl"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kauppalistat siis käyttäytyvät hieman listojen tavoin, mutta niitä käsitellään kuitenkin kauppalistan tarjoamien metodien kautta. Toisin kuin listoissa, kauppalistan tuotteet on numeroitu ykkösestä alkaen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee esimerkkejä hyödyntäen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuotteita_yhteensa(lista: Kauppalista)"}]},{"type":"text","value":", joka saa parametrikseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":"-tyyppisen olion. Funktio laskee listalla yhteensä olevien tuotteiden määrän ja palauttaa sen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kauppalistalla tuotteet indeksoidaan ykkösestä alkaen, ei nollasta. Voit testata ohjelmaasi esim. tällä esimerkkikoodilla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omenat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ananas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteita_yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"16"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":" koska luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":" koodi on tehtäväpohjassa valmiina, ei koodissa tarvitse käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lausetta kuten edellisissä esimerkeissä, tehtävissä, jotka käyttävät Pythonin valmiita luokkia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan luokalla
    • \n
    • Ymmärrät luokan ja olion yhteyden
    • \n
    • Tiedät, mitä olio-ohjelmointi tarkoittaa
    • \n

    Edellisessä osassa käsitellyt esimerkkioliot – listat, tuplet, sanakirjat ja merkkijonot – ovat siinä mielessä erikoistapauksia, että niiden kaikkien muodostamiseen on Pythonissa sisäänrakennettuna oma syntaksinsa:

    # Lista luodaan antamalla arvot hakasuluissa\nlista = [1,2,3]\n\n# Merkkijonovakio tunnistetaan lainausmerkeistä\nmjono = \"Moi kaikki!\"\n\n# Sanakirja luodaan aaltosulkeilla\nsanakirja = {\"yksi\": 1, \"kaksi:\": 2}\n\n# Tuplessa arvot ovat sulkeissa\noma_tuple = (1,2,3)

    Muita olioita muodostettaessa kutsutaan erityistä metodia, joka luo olion. Tällaista metodia kutsutaan konstruktoriksi. Tarkastellaan esimerkkinä murtolukuolioiden muodostamista Fraction-luokasta:

    # Tuodaan käyttöön luokka Fraction modulista fractions\nfrom fractions import Fraction\n\n# Luodaan pari uutta murtolukuoliota\npuolikas = Fraction(1,2)\n\nkolmasosa = Fraction(1,3)\n\nkolmas = Fraction(3,11)\n\n# Tulostetaan\nprint(puolikas)\nprint(kolmasosa)\nprint(kolmas)\n\n# Murtoluvuilla voi myös laskea\nprint(puolikas + kolmasosa)

    1/2\n1/3\n3/11\n5/6

    Esimerkistä huomataan, että konstuktorikutsut poikkeavat aiemmista metodikutsuista. Konstruktorikutsuja ei ole sidottu tiettyyn olioon (mikä on sikäli loogista, että olio muodostetaan kutsumalla konstruktoria). Lisäksi metodin nimi on kirjoitettu isolla alkukirjaimella: puolikas = Fraction(1,2). Pureudutaan tarkemmin olion muodostamisen mekanismiin esittelemällä luokan käsite.

    Luokka on olion käsikirjoitus

    Materiaalissa on jo aiemmin vilahtanut käsite luokka. Edellisessä esimerkissä otettiin käyttöön luokka Fraction moduulista fractions. Uudet oliot muodostettiin kutsumalla luokan Fraction konstruktoria.

    Luokassa määritellään siitä muodostettavien olioiden rakenne ja toiminnallisuus. Luokkaa nimitetään tästä syystä joskus olion käsikirjoitukseksi. Luokassa siis kerrotaan, millaista tietoa olio sisältää, ja määritellään metodit, joiden avulla oliota voidaan käsitellä. Olio-ohjelmoinnilla tarkoitetaan ohjelmointitapaa, jossa ohjelman toiminnallisuus tapahtuu luokkien ja niistä muodostettujen olioiden avulla.

    Yhdestä luokasta voidaan muodostaa useita olioita. Niin kuin aiemmin kerrottiin, oliot ovat itsenäisiä - muutokset olioon eivät vaikuta muihin luokasta muodostettuihin olioihin. Jokaisella oliolla on oma tietosisältönsä. Vähän yksinkertaistaen voisi sanoa, että

      \n
    • luokassa määritellään muuttujat ja
    • \n
    • oliota muodostaessa niille annetaan arvot.
    • \n

    Luodaan esimerkkinä Fraction-luokasta olio ja tulostetaan sen osoittaja ja nimittäjä:

    from fractions import Fraction\n\nluku = Fraction(2,5)\n\n# Tulostetaan osoittaja\nprint(luku.numerator)\n\n# ...ja sitten nimittäjä\nprint(luku.denominator)

    2\n5

    Luokassa Fraction on siis määritelty, että olioilla on muuttujat numerator ja denominator. Jokaisella oliolla on kuitenkin oma arvonsa näille muuttujille.

    Samalla tavalla date-luokasta muodostetuilla olioilla on kaikilla omat itsenäiset arvonsa vuodelle, kuukaudelle ja päivämäärälle:

    from datetime import date\n\njoulu = date(2020, 12, 24)\njuhannus = date(2020, 6, 20)\n\n# Tulostetaan kuukaudet molemmista\nprint(joulu.month)\nprint(juhannus.month)

    12\n6

    Luokassa date on siis määritelty, että luokasta muodostettavilla olioilla on muuttujat year, month ja day. Kun luokasta muodostetaan olio, annetaan muuttujille arvot. Joka oliolla on omat arvonsa muuttujille.

    Olioita käsittelevät funktiot

    Funktioiden parametrina oleviin olioihin ei liity oikeastaan mitään sen kummempaa. Niitä on jo kurssin aiemmissa osissa nähty runsaasti. Seuraavassa on esimerkki funktiosta, joka tarkastaa, onko sen parametrina oleva date-olio viikonloppu:

    def onko_viikonloppu(paiva: date):\n    viikonpaiva = paiva.isoweekday()\n    return viikonpaiva == 6 or viikonpaiva == 7

    Funktio siis käyttää parametrina olevan olion metodia isoweekday, joka palauttaa viikonpäivää vastaavan numeron niin, että maanantai on 1, tiistai on 2, jne.

    Funktiota käytetään seuraavasti:

    joulu = date(2020, 12, 24)\njuhannus = date(2020, 6, 20)\n\nprint(onko_viikonloppu(joulu))\nprint(onko_viikonloppu(juhannus))

    False\nTrue

    Metodi vs. olion muuttuja

    Jos tarkastellaan date-oliota, niin huomataan, että sen käsittely poikkeaa hieman riippuen siitä, mitä asiaa olion sisällöstä tarkastellaan:

    paiva = date(2020, 12, 24)\n\n# kutsutaan metodia\nviikonpaiva = paiva.isoweekday()\n\n# viitataan olion muuttujaan\nkuukausi = paiva.month\n\nprint(\"Viikonpäivä:\", viikonpaiva)\nprint(\"Kuukausi:\", kuukausi)

    Viikonpäivä: 4\nKuukausi: 12

    Päiväolion viikonpäivä saadaan siis selville kutsumalla metodia isoweekday:

    viikonpaiva = paiva.isoweekday()

    Koska on kyse metodikutsusta, niin metodin nimen perään laitetaan sulut. Jos sulut unohtuvat, on lopputulos outo:

    viikonpaiva =  paiva.isoweekday\nprint(\"Viikonpäivä:\", viikonpaiva)

    Viikonpäivä: <built-in method isoweekday of datetime.date object at 0x10ed66450>

    Päiväolioon liittyvä kuukausi taas on olion muuttuja, ja sen arvo selviää viittaamalla muuttujaan

    kuukausi = paiva.month

    Nyt siis käytössä ei ole sulkuja. Jos tässä tilanteessa yritettäisiin käyttää sulkuja, ohjelma aiheuttaisi virheen:

    kuukausi = paiva.month()
    Traceback (most recent call last):\nFile \"\", line 1, in \nTypeError: 'int' object is not callable

    Tee funktio vuodet_listaan(paivamaarat: list), joka saa parametrikseen listan, joka sisältää date-tyyppisiä olioita. Funktio palauttaa uuden listan, jossa on päivämäärien vuodet suuruusjärjestyksessä pienimmästä suurimpaan.

    Esimerkki funktion kutsumisesta:

    paiva1 = date(2019, 2, 3)\npaiva2 = date(2006, 10, 10)\npaiva3 = date(1993, 5, 9)\n\nvuodet = vuodet_listaan([paiva1, paiva2, paiva3])\nprint(vuodet)

    [1993, 2006, 2019]

    Tehtäväpohjassa on määritelty valmiiksi Kauppalista-luokka, jolla voidaan mallintaa yhtä kauppalistaa.

    Jos kauppalistaolio on tallennettu esimerkiksi muuttujaan kauppalista, sitä voidaan käsitellä seuraavan esimerkin mukaisesti:

    \nprint(kauppalista.tuotteita())\nprint(kauppalista.tuote(1))\nprint(kauppalista.maara(1))\nprint(kauppalista.tuote(2))\nprint(kauppalista.maara(2))\n

    2\nBanaanit\n4\nMaito\n1

    Myös seuraava onnistuu:

    # kauppalistalla tuotteet on indeksöity ykkösestä alkaen\nfor i in range(1, kauppalista.tuotteita()+1):\n    tuote = kauppalista.tuote(i)\n    maara = kauppalista.maara(i)\n    print(f\"{tuote}: {maara} kpl\")

    banaanit 4 kpl\nmaito 1 kpl

    Kauppalistat siis käyttäytyvät hieman listojen tavoin, mutta niitä käsitellään kuitenkin kauppalistan tarjoamien metodien kautta. Toisin kuin listoissa, kauppalistan tuotteet on numeroitu ykkösestä alkaen.

    Tee esimerkkejä hyödyntäen funktio tuotteita_yhteensa(lista: Kauppalista), joka saa parametrikseen Kauppalista-tyyppisen olion. Funktio laskee listalla yhteensä olevien tuotteiden määrän ja palauttaa sen.

    Huomaa, että kauppalistalla tuotteet indeksoidaan ykkösestä alkaen, ei nollasta. Voit testata ohjelmaasi esim. tällä esimerkkikoodilla:

    if __name__ == \"__main__\":\n    lista = Kauppalista()\n    lista.lisaa(\"banaanit\", 10)\n    lista.lisaa(\"omenat\", 5)\n    lista.lisaa(\"ananas\", 1)\n\n    print(tuotteita_yhteensa(lista))

    16

    Huom koska luokan Kauppalista koodi on tehtäväpohjassa valmiina, ei koodissa tarvitse käyttää import-lausetta kuten edellisissä esimerkeissä, tehtävissä, jotka käyttävät Pythonin valmiita luokkia Fraction ja date.

    ","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/2-luokat-ja-oliot.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan luokalla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät luokan ja olion yhteyden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä olio-ohjelmointi tarkoittaa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä osassa käsitellyt esimerkkioliot – listat, tuplet, sanakirjat ja merkkijonot – ovat siinä mielessä erikoistapauksia, että niiden kaikkien muodostamiseen on Pythonissa sisäänrakennettuna oma syntaksinsa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lista luodaan antamalla arvot hakasuluissa"}]},{"type":"text","value":"\nlista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Merkkijonovakio tunnistetaan lainausmerkeistä"}]},{"type":"text","value":"\nmjono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Moi kaikki!\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Sanakirja luodaan aaltosulkeilla"}]},{"type":"text","value":"\nsanakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"yksi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kaksi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tuplessa arvot ovat sulkeissa"}]},{"type":"text","value":"\noma_tuple "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muita olioita muodostettaessa kutsutaan erityistä metodia, joka luo olion. Tällaista metodia kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"konstruktoriksi"}]},{"type":"text","value":". Tarkastellaan esimerkkinä murtolukuolioiden muodostamista Fraction-luokasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tuodaan käyttöön luokka Fraction modulista fractions"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" fractions "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Fraction\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan pari uutta murtolukuoliota"}]},{"type":"text","value":"\npuolikas "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkolmasosa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkolmas "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puolikas"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kolmasosa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kolmas"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Murtoluvuilla voi myös laskea"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puolikas "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" kolmasosa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1/2\n1/3\n3/11\n5/6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkistä huomataan, että konstuktorikutsut poikkeavat aiemmista metodikutsuista. Konstruktorikutsuja ei ole sidottu tiettyyn olioon (mikä on sikäli loogista, että olio muodostetaan kutsumalla konstruktoria). Lisäksi metodin nimi on kirjoitettu isolla alkukirjaimella: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"puolikas = Fraction(1,2)"}]},{"type":"text","value":". Pureudutaan tarkemmin olion muodostamisen mekanismiin esittelemällä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokan"}]},{"type":"text","value":" käsite."}]},{"type":"element","tagName":"h2","properties":{"id":"luokka-on-olion-kasikirjoitus","style":"position:relative;"},"children":[{"type":"text","value":"Luokka on olion käsikirjoitus"},{"type":"element","tagName":"a","properties":{"href":"#luokka-on-olion-kasikirjoitus","ariaLabel":"luokka on olion kasikirjoitus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Materiaalissa on jo aiemmin vilahtanut käsite "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokka"}]},{"type":"text","value":". Edellisessä esimerkissä otettiin käyttöön luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" moduulista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"fractions"}]},{"type":"text","value":". Uudet oliot muodostettiin kutsumalla luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"konstruktoria"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa määritellään siitä muodostettavien olioiden rakenne ja toiminnallisuus. Luokkaa nimitetään tästä syystä joskus olion käsikirjoitukseksi. Luokassa siis kerrotaan, millaista tietoa olio sisältää, ja määritellään metodit, joiden avulla oliota voidaan käsitellä. "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnilla"}]},{"type":"text","value":" tarkoitetaan ohjelmointitapaa, jossa ohjelman toiminnallisuus tapahtuu luokkien ja niistä muodostettujen olioiden avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhdestä luokasta voidaan muodostaa useita olioita. Niin kuin aiemmin kerrottiin, oliot ovat itsenäisiä - muutokset olioon eivät vaikuta muihin luokasta muodostettuihin olioihin. Jokaisella oliolla on oma tietosisältönsä. Vähän yksinkertaistaen voisi sanoa, että"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"luokassa määritellään muuttujat ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"oliota muodostaessa niille annetaan arvot."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luodaan esimerkkinä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":"-luokasta olio ja tulostetaan sen osoittaja ja nimittäjä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" fractions "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Fraction\n\nluku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Fraction"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan osoittaja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerator"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ...ja sitten nimittäjä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"denominator"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" on siis määritelty, että olioilla on muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"numerator"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"denominator"}]},{"type":"text","value":". Jokaisella oliolla on kuitenkin oma arvonsa näille muuttujille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samalla tavalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-luokasta muodostetuilla olioilla on kaikilla omat itsenäiset arvonsa vuodelle, kuukaudelle ja päivämäärälle:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\njoulu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kuukaudet molemmista"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joulu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"12\n6"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":" on siis määritelty, että luokasta muodostettavilla olioilla on muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"year"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"month"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"day"}]},{"type":"text","value":". Kun luokasta muodostetaan olio, annetaan muuttujille arvot. Joka oliolla on omat arvonsa muuttujille."}]},{"type":"element","tagName":"h2","properties":{"id":"olioita-kasittelevat-funktiot","style":"position:relative;"},"children":[{"type":"text","value":"Olioita käsittelevät funktiot"},{"type":"element","tagName":"a","properties":{"href":"#olioita-kasittelevat-funktiot","ariaLabel":"olioita kasittelevat funktiot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktioiden parametrina oleviin olioihin ei liity oikeastaan mitään sen kummempaa. Niitä on jo kurssin aiemmissa osissa nähty runsaasti. Seuraavassa on esimerkki funktiosta, joka tarkastaa, onko sen parametrina oleva "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-olio viikonloppu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"onko_viikonloppu"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio siis käyttää parametrina olevan olion metodia "},{"type":"element","tagName":"a","properties":{"href":"https://docs.python.org/3/library/datetime.html#datetime.date.isoweekday","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"isoweekday"}]},{"type":"text","value":", joka palauttaa viikonpäivää vastaavan numeron niin, että maanantai on 1, tiistai on 2, jne."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"joulu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njuhannus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_viikonloppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"joulu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"onko_viikonloppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"juhannus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"metodi-vs-olion-muuttuja","style":"position:relative;"},"children":[{"type":"text","value":"Metodi vs. olion muuttuja"},{"type":"element","tagName":"a","properties":{"href":"#metodi-vs-olion-muuttuja","ariaLabel":"metodi vs olion muuttuja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos tarkastellaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-oliota, niin huomataan, että sen käsittely poikkeaa hieman riippuen siitä, mitä asiaa olion sisällöstä tarkastellaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kutsutaan metodia"}]},{"type":"text","value":"\nviikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viitataan olion muuttujaan"}]},{"type":"text","value":"\nkuukausi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viikonpäivä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kuukausi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viikonpäivä: 4\nKuukausi: 12"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päiväolion viikonpäivä saadaan siis selville kutsumalla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodia"}]},{"type":"text","value":" isoweekday:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska on kyse metodikutsusta, niin metodin nimen perään laitetaan sulut. Jos sulut unohtuvat, on lopputulos outo:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"viikonpaiva "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"isoweekday\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Viikonpäivä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikonpaiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Viikonpäivä: "}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Päiväolioon liittyvä kuukausi taas on olion muuttuja, ja sen arvo selviää "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittaamalla"}]},{"type":"text","value":" muuttujaan"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kuukausi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis käytössä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ei ole sulkuja"}]},{"type":"text","value":". Jos tässä tilanteessa yritettäisiin käyttää sulkuja, ohjelma aiheuttaisi virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kuukausi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"month"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Traceback (most recent call last):\nFile \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nTypeError: 'int' object is not callable"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vuodet listaan","tmcname":"osa08-03_vuodet_listaan"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vuodet_listaan(paivamaarat: list)"}]},{"type":"text","value":", joka saa parametrikseen listan, joka sisältää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"-tyyppisiä olioita. Funktio palauttaa uuden listan, jossa on päivämäärien "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"vuodet suuruusjärjestyksessä pienimmästä suurimpaan"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paiva1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaiva2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2006"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaiva3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1993"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvuodet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuodet_listaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"paiva1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vuodet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[1993, 2006, 2019]"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kauppalista","tmcname":"osa08-04_kauppalista"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty valmiiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":"-luokka, jolla voidaan mallintaa yhtä kauppalistaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kauppalistaolio on tallennettu esimerkiksi muuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kauppalista"}]},{"type":"text","value":", sitä voidaan käsitellä seuraavan esimerkin mukaisesti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuotteita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\nBanaanit\n4\nMaito\n1"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Myös seuraava onnistuu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kauppalistalla tuotteet on indeksöity ykkösestä alkaen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuotteita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tuote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"i"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kpl\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"banaanit 4 kpl\nmaito 1 kpl"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kauppalistat siis käyttäytyvät hieman listojen tavoin, mutta niitä käsitellään kuitenkin kauppalistan tarjoamien metodien kautta. Toisin kuin listoissa, kauppalistan tuotteet on numeroitu ykkösestä alkaen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee esimerkkejä hyödyntäen funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuotteita_yhteensa(lista: Kauppalista)"}]},{"type":"text","value":", joka saa parametrikseen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":"-tyyppisen olion. Funktio laskee listalla yhteensä olevien tuotteiden määrän ja palauttaa sen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kauppalistalla tuotteet indeksoidaan ykkösestä alkaen, ei nollasta. Voit testata ohjelmaasi esim. tällä esimerkkikoodilla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"banaanit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omenat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ananas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tuotteita_yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"16"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom"}]},{"type":"text","value":" koska luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kauppalista"}]},{"type":"text","value":" koodi on tehtäväpohjassa valmiina, ei koodissa tarvitse käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lausetta kuten edellisissä esimerkeissä, tehtävissä, jotka käyttävät Pythonin valmiita luokkia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Fraction"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"date"}]},{"type":"text","value":"."}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan luokalla
    • \n
    • Ymmärrät luokan ja olion yhteyden
    • \n
    • Tiedät, mitä olio-ohjelmointi tarkoittaa
    • \n

    Edellisessä osassa käsitellyt esimerkkioliot – listat, tuplet, sanakirjat ja merkkijonot – ovat siinä mielessä erikoistapauksia, että niiden kaikkien muodostamiseen on Pythonissa sisäänrakennettuna oma syntaksinsa:

    # Lista luodaan antamalla arvot hakasuluissa\nlista = [1,2,3]\n\n# Merkkijonovakio tunnistetaan lainausmerkeistä\nmjono = \"Moi kaikki!\"\n\n# Sanakirja luodaan aaltosulkeilla\nsanakirja = {\"yksi\": 1, \"kaksi:\": 2}\n\n# Tuplessa arvot ovat sulkeissa\noma_tuple = (1,2,3)

    Muita olioita muodostettaessa kutsutaan erityistä metodia, joka luo olion. Tällaista metodia kutsutaan konstruktoriksi. Tarkastellaan esimerkkinä murtolukuolioiden muodostamista Fraction-luokasta:

    # Tuodaan käyttöön luokka Fraction modulista fractions\nfrom fractions import Fraction\n\n# Luodaan pari uutta murtolukuoliota\npuolikas = Fraction(1,2)\n\nkolmasosa = Fraction(1,3)\n\nkolmas = Fraction(3,11)\n\n# Tulostetaan\nprint(puolikas)\nprint(kolmasosa)\nprint(kolmas)\n\n# Murtoluvuilla voi myös laskea\nprint(puolikas + kolmasosa)

    1/2\n1/3\n3/11\n5/6

    Esimerkistä huomataan, että konstuktorikutsut poikkeavat aiemmista metodikutsuista. Konstruktorikutsuja ei ole sidottu tiettyyn olioon (mikä on sikäli loogista, että olio muodostetaan kutsumalla konstruktoria). Lisäksi metodin nimi on kirjoitettu isolla alkukirjaimella: puolikas = Fraction(1,2). Pureudutaan tarkemmin olion muodostamisen mekanismiin esittelemällä luokan käsite.

    Luokka on olion käsikirjoitus

    Materiaalissa on jo aiemmin vilahtanut käsite luokka. Edellisessä esimerkissä otettiin käyttöön luokka Fraction moduulista fractions. Uudet oliot muodostettiin kutsumalla luokan Fraction konstruktoria.

    Luokassa määritellään siitä muodostettavien olioiden rakenne ja toiminnallisuus. Luokkaa nimitetään tästä syystä joskus olion käsikirjoitukseksi. Luokassa siis kerrotaan, millaista tietoa olio sisältää, ja määritellään metodit, joiden avulla oliota voidaan käsitellä. Olio-ohjelmoinnilla tarkoitetaan ohjelmointitapaa, jossa ohjelman toiminnallisuus tapahtuu luokkien ja niistä muodostettujen olioiden avulla.

    Yhdestä luokasta voidaan muodostaa useita olioita. Niin kuin aiemmin kerrottiin, oliot ovat itsenäisiä - muutokset olioon eivät vaikuta muihin luokasta muodostettuihin olioihin. Jokaisella oliolla on oma tietosisältönsä. Vähän yksinkertaistaen voisi sanoa, että

      \n
    • luokassa määritellään muuttujat ja
    • \n
    • oliota muodostaessa niille annetaan arvot.
    • \n

    Luodaan esimerkkinä Fraction-luokasta olio ja tulostetaan sen osoittaja ja nimittäjä:

    from fractions import Fraction\n\nluku = Fraction(2,5)\n\n# Tulostetaan osoittaja\nprint(luku.numerator)\n\n# ...ja sitten nimittäjä\nprint(luku.denominator)

    2\n5

    Luokassa Fraction on siis määritelty, että olioilla on muuttujat numerator ja denominator. Jokaisella oliolla on kuitenkin oma arvonsa näille muuttujille.

    Samalla tavalla date-luokasta muodostetuilla olioilla on kaikilla omat itsenäiset arvonsa vuodelle, kuukaudelle ja päivämäärälle:

    from datetime import date\n\njoulu = date(2020, 12, 24)\njuhannus = date(2020, 6, 20)\n\n# Tulostetaan kuukaudet molemmista\nprint(joulu.month)\nprint(juhannus.month)

    12\n6

    Luokassa date on siis määritelty, että luokasta muodostettavilla olioilla on muuttujat year, month ja day. Kun luokasta muodostetaan olio, annetaan muuttujille arvot. Joka oliolla on omat arvonsa muuttujille.

    Olioita käsittelevät funktiot

    Funktioiden parametrina oleviin olioihin ei liity oikeastaan mitään sen kummempaa. Niitä on jo kurssin aiemmissa osissa nähty runsaasti. Seuraavassa on esimerkki funktiosta, joka tarkastaa, onko sen parametrina oleva date-olio viikonloppu:

    def onko_viikonloppu(paiva: date):\n    viikonpaiva = paiva.isoweekday()\n    return viikonpaiva == 6 or viikonpaiva == 7

    Funktio siis käyttää parametrina olevan olion metodia isoweekday, joka palauttaa viikonpäivää vastaavan numeron niin, että maanantai on 1, tiistai on 2, jne.

    Funktiota käytetään seuraavasti:

    joulu = date(2020, 12, 24)\njuhannus = date(2020, 6, 20)\n\nprint(onko_viikonloppu(joulu))\nprint(onko_viikonloppu(juhannus))

    False\nTrue

    Metodi vs. olion muuttuja

    Jos tarkastellaan date-oliota, niin huomataan, että sen käsittely poikkeaa hieman riippuen siitä, mitä asiaa olion sisällöstä tarkastellaan:

    paiva = date(2020, 12, 24)\n\n# kutsutaan metodia\nviikonpaiva = paiva.isoweekday()\n\n# viitataan olion muuttujaan\nkuukausi = paiva.month\n\nprint(\"Viikonpäivä:\", viikonpaiva)\nprint(\"Kuukausi:\", kuukausi)

    Viikonpäivä: 4\nKuukausi: 12

    Päiväolion viikonpäivä saadaan siis selville kutsumalla metodia isoweekday:

    viikonpaiva = paiva.isoweekday()

    Koska on kyse metodikutsusta, niin metodin nimen perään laitetaan sulut. Jos sulut unohtuvat, on lopputulos outo:

    viikonpaiva =  paiva.isoweekday\nprint(\"Viikonpäivä:\", viikonpaiva)

    Viikonpäivä: <built-in method isoweekday of datetime.date object at 0x10ed66450>

    Päiväolioon liittyvä kuukausi taas on olion muuttuja, ja sen arvo selviää viittaamalla muuttujaan

    kuukausi = paiva.month

    Nyt siis käytössä ei ole sulkuja. Jos tässä tilanteessa yritettäisiin käyttää sulkuja, ohjelma aiheuttaisi virheen:

    kuukausi = paiva.month()
    Traceback (most recent call last):\nFile \"\", line 1, in \nTypeError: 'int' object is not callable

    Tee funktio vuodet_listaan(paivamaarat: list), joka saa parametrikseen listan, joka sisältää date-tyyppisiä olioita. Funktio palauttaa uuden listan, jossa on päivämäärien vuodet suuruusjärjestyksessä pienimmästä suurimpaan.

    Esimerkki funktion kutsumisesta:

    paiva1 = date(2019, 2, 3)\npaiva2 = date(2006, 10, 10)\npaiva3 = date(1993, 5, 9)\n\nvuodet = vuodet_listaan([paiva1, paiva2, paiva3])\nprint(vuodet)

    [1993, 2006, 2019]

    Tehtäväpohjassa on määritelty valmiiksi Kauppalista-luokka, jolla voidaan mallintaa yhtä kauppalistaa.

    Jos kauppalistaolio on tallennettu esimerkiksi muuttujaan kauppalista, sitä voidaan käsitellä seuraavan esimerkin mukaisesti:

    \nprint(kauppalista.tuotteita())\nprint(kauppalista.tuote(1))\nprint(kauppalista.maara(1))\nprint(kauppalista.tuote(2))\nprint(kauppalista.maara(2))\n

    2\nBanaanit\n4\nMaito\n1

    Myös seuraava onnistuu:

    # kauppalistalla tuotteet on indeksöity ykkösestä alkaen\nfor i in range(1, kauppalista.tuotteita()+1):\n    tuote = kauppalista.tuote(i)\n    maara = kauppalista.maara(i)\n    print(f\"{tuote}: {maara} kpl\")

    banaanit 4 kpl\nmaito 1 kpl

    Kauppalistat siis käyttäytyvät hieman listojen tavoin, mutta niitä käsitellään kuitenkin kauppalistan tarjoamien metodien kautta. Toisin kuin listoissa, kauppalistan tuotteet on numeroitu ykkösestä alkaen.

    Tee esimerkkejä hyödyntäen funktio tuotteita_yhteensa(lista: Kauppalista), joka saa parametrikseen Kauppalista-tyyppisen olion. Funktio laskee listalla yhteensä olevien tuotteiden määrän ja palauttaa sen.

    Huomaa, että kauppalistalla tuotteet indeksoidaan ykkösestä alkaen, ei nollasta. Voit testata ohjelmaasi esim. tällä esimerkkikoodilla:

    if __name__ == \"__main__\":\n    lista = Kauppalista()\n    lista.lisaa(\"banaanit\", 10)\n    lista.lisaa(\"omenat\", 5)\n    lista.lisaa(\"ananas\", 1)\n\n    print(tuotteita_yhteensa(lista))

    16

    Huom koska luokan Kauppalista koodi on tehtäväpohjassa valmiina, ei koodissa tarvitse käyttää import-lausetta kuten edellisissä esimerkeissä, tehtävissä, jotka käyttävät Pythonin valmiita luokkia Fraction ja date.

    ","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/2-luokat-ja-oliot.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-8/3-omat-luokat/page-data.json b/page-data/osa-8/3-omat-luokat/page-data.json index 0e9ab6f85..c255a7555 100644 --- a/page-data/osa-8/3-omat-luokat/page-data.json +++ b/page-data/osa-8/3-omat-luokat/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-8/3-omat-luokat", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten omia luokkia määritellään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa itse määritellystä luokasta olion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa konstruktorin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoittaa avainsana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä ovat attribuutit ja miten niitä käytetään"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka määritellään avainsanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" avulla. Syntaksi on"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"LuokanNimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokan toteutus"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokat nimetään yleensä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"camel case"}]},{"type":"text","value":" -käytännöllä niin, että sanat kirjoitetaan yhteen ja jokainen sana alkaa isolla alkukirjaimella. Esimerkiksi seuraavat ovat tämän käytännön mukaisia luokkien nimiä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"OhjelmaApuri"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"KirjastoTietokanta"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PythonKurssinArvosanat"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhdellä luokalla pyritään mallintamaan jokin sellainen yksittäinen kokonaisuus, jonka sisältämät tiedot liittyvät kiinteästi yhteen. Monimutkaisemmissa ratkaisuissa luokka voi sisältää toisia luokkia (esimerkiksi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":" voisi sisältää luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Osasuoritus"}]},{"type":"text","value":" mukaisia olioita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä yksinkertaista luokkamäärittelyä, josta sisältö vielä puuttuu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa määritellään luokka, jonka nimi on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":". Luokalle ei ole määritelty varsinaista sisältöä, mutta tästä huolimatta luokasta voidaan muodostaa olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ohjelmaa, jossa luokasta muodostetun olion sisälle on määritelty kaksi muuttujaa, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"omistaja"}]},{"type":"text","value":". Olion muuttujia kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"attribuuteiksi"}]},{"type":"text","value":". Attribuutista käytetään myös nimitystä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"oliomuuttuja"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun luokasta luodaan olio, voidaan attribuuttien arvoja käsitellä olion kautta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python\n5.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuutit ovat käytettävissä ainoastaan sen olion kautta, jossa ne on määritelty. Pankkitili-luokasta muodostetuilla olioilla on jokaisella omat arvonsa attribuuteille. Attribuuttien arvot haetaan olioiden kautta, esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"155.50"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Viittaa tilin attribuuttiin saldo"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# TÄSTÄ TULEE VIRHE, koska oliomuuttuja ei ole mukana!"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"konstruktorin-lisaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Konstruktorin lisääminen"},{"type":"element","tagName":"a","properties":{"href":"#konstruktorin-lisaaminen","ariaLabel":"konstruktorin lisaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten edellisestä esimerkistä huomataan, luokasta voi luoda uuden olion kutsumalla konstruktoria, joka on muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"LuokanNimi()"}]},{"type":"text","value":". Yleensä olisi kuitenkin kätevä antaa attribuuteille arvot heti kun olio luodaan – nyt esimerkiksi Pankkitilin omistaja ja saldo asetetaan vasta, kun pankkitiliolio on luotu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuuttien asettamisessa ilman konstruktoria on myös se ongelma, että samasta luokasta luoduilla olioilla voi olla eri attribuutit. Seuraava ohjelmakoodi esimerkiksi antaa virheen, koska oliolle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pirjon_tili"}]},{"type":"text","value":" ei ole määritelty attribuuttia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1400"}]},{"type":"text","value":"\n\npirjon_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# TÄSTÄ TULEE VIRHE"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sen sijaan että attribuuttien arvot alustettaisiin luokan luomisen jälkeen, on huomattavasti parempi ajatus alustaa arvot samalla, kun luokasta luodaan olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktori kirjoitetaan luokan sisään metodina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":" yleensä heti luokan alkuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokkaa, johon on lisätty konstruktori:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorin nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":". Huomaa, että nimessä sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"init"}]},{"type":"text","value":" molemmilla puolilla on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kaksi alaviivaa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorin ensimmäinen parametri on nimeltään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":". Tämä viittaa olioon, jota käsitellään. Asetuslause"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.saldo = saldo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"asettaa parametrina annetun saldon luotavan olion saldoksi. On tärkeä huomata, että tässä yhteydessä muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.saldo"}]},{"type":"text","value":" on eri muuttuja kuin muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.saldo"}]},{"type":"text","value":" viittaa olion attribuuttiin. Jokaisella Pankkitili-luokan oliolla on oma saldonsa."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":" on konstruktorimetodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":" parametri, jolle annetaan arvo, kun metodia kutsutaan (eli kun halutaan luoda uusi olio luokasta)."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kun konstruktorille on määritelty parametrit, voidaan attribuuttien arvot antaa oliota luotaessa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Parametrille self ei anneta arvoa, vaan Python antaa sen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# automaattisesti"}]},{"type":"text","value":"\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"100\n20000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkistä huomataan, että olioiden luominen helpottuu, kun arvot voidaan antaa heti oliota muodostaessa. Samalla tämä varmistaa, että arvojen antaminen ei unohdu, ja ohjaa käyttäjää antamaan arvot attribuuteille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuuttien arvoja voi edelleen muuttaa myöhemmin ohjelmassa, vaikka alkuarvo olisikin annettu konstruktorissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Saldoksi 1500"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään saldoon 2000"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"100\n1500\n3500"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä luokasta ja olioista. Kirjoitetaan luokka, joka mallintaa yhtä lottokierrosta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"LottoKierros"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" viikko\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pvm\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numerot\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan uusi lottokierros"}]},{"type":"text","value":"\nkierros1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" LottoKierros"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2021"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan tiedot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kierros1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kierros1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kierros1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n2021-01-02\n1\n4\n8\n12\n13\n14\n33"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuutit voivat olla siis minkä tahansa tyyppisiä – esimerkiksi edellisessä esimerkissä jokaiseen olioon tallennetaan lista ja päivämäärä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kirja","tmcname":"osa08-06_kirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"text","value":", jolla on attribuutteina muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjoittaja"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"genre"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjoitusvuosi"}]},{"type":"text","value":" sekä konstruktori, joka alustaa muuttujat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"python "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fluent Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luciano Ramalho\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\neverest "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huipulta huipulle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Carina Räihä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"elämänkerta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2010"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjoittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjoitusvuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kirjan "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" genre on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"genre"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luciano Ramalho: Fluent Python (2015)\nKirjan Huipulta huipulle genre on elämänkerta"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kirjoita luokat","tmcname":"osa08-07_kirjoita_luokat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita alla pyydetyt luokat. Jokaisen luokan alle on kuvattu attribuuttien nimet ja tyypit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita jokaiselle luokalle myös konstruktori, jossa attribuutit annetaan siinä järjestyksessä kuin ne on kuvauksessa annettu."}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luokka Muistilista"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti otsikko (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti merkinnat (lista)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ol","properties":{"start":2},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luokka Asiakas"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti tunniste (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti saldo (desimaaliluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti alennusprosentti (kokonaisluku)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ol","properties":{"start":3},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luokka Kaapeli"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti malli (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti pituus (desimaaliluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti maksiminopeus (kokonaisluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti kaksisuuntainen (totuusarvo)"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"omien-luokkien-olioiden-kaytto","style":"position:relative;"},"children":[{"type":"text","value":"Omien luokkien olioiden käyttö"},{"type":"element","tagName":"a","properties":{"href":"#omien-luokkien-olioiden-kaytto","ariaLabel":"omien luokkien olioiden kaytto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omasta luokasta muodostetut oliot käyttäytyvät esimerkiksi funktioiden parametrina ja paluuarvona samalla tavalla kuin muutkin oliot. Voisimme esimerkiksi tehdä pari apufunktiota tilien käsittelyyn:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktio luo uuden tiliolion ja palauttaa sen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"avaa_tili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" uusi_tili\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktio asettaa parametrina saamansa rahasumman parametrina olevalle tilille"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laita_rahaa_tilille"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" summa\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" avaa_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlaita_rahaa_tilille"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n500"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Muodosta lemmikki","tmcname":"osa08-07b_muodosta_lemmikki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrittele luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":". Luokalla on konstruktori, jossa annetaan arvot attribuuteille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laji"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syntymavuosi"}]},{"type":"text","value":" tässä järjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita sitten luokan ulkopuolelle funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_lemmikki(nimi: str, laji: str, syntymavuosi: int)"}]},{"type":"text","value":", joka luo ja palauttaa uuden "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":"-tyyppisen (eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":"-luokkaa vastaavan) olion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"musti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusi_lemmikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Musti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2017"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laji"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntymavuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Musti\nkoira\n2017"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vanhempi kirja","tmcname":"osa08-08_vanhempi_kirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhempi_kirja(kirja1: Kirja, kirja2: Kirja)"}]},{"type":"text","value":", joka saa parametriksi kaksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"text","value":"-oliota. Funktio kertoo, kumpi kirjoista on vanhempi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"python "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fluent Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luciano Ramalho\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\neverest "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huipulta huipulle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Carina Räihä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"elämänkerta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2010"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnorma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Norma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sofi Oksanen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvanhempi_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvanhempi_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" norma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huipulta huipulle on vanhempi, se kirjoitettiin 2010\nFluent Python ja Norma kirjoitettiin 2015"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Genren kirjat","tmcname":"osa08-09_genren_kirjat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"genren_kirjat(kirjat: list, genre: str)"}]},{"type":"text","value":", joka saa parametriksi listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"text","value":"-olioita sekä genren kertovan merkkijonon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" uuden listan, jolle se laittaa parametrina olevista kirjoista ne, joilla on haluttu genre."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"python "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fluent Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luciano Ramalho\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\neverest "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huipulta huipulle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Carina Räihä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"elämänkerta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2010"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnorma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Norma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sofi Oksanen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" norma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lumiukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jo Nesbø\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2007"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikoskirjoja ovat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" genren_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjoittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"rikoskirjoja ovat\nSofi Oksanen: Norma\nJo Nesbø: Lumiukko"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten omia luokkia määritellään
    • \n
    • Osaat muodostaa itse määritellystä luokasta olion
    • \n
    • Osaat kirjoittaa konstruktorin
    • \n
    • Tiedät, mitä tarkoittaa avainsana self
    • \n
    • Tiedät, mitä ovat attribuutit ja miten niitä käytetään
    • \n

    Luokka määritellään avainsanan class avulla. Syntaksi on

    class LuokanNimi:\n    # Luokan toteutus

    Luokat nimetään yleensä camel case -käytännöllä niin, että sanat kirjoitetaan yhteen ja jokainen sana alkaa isolla alkukirjaimella. Esimerkiksi seuraavat ovat tämän käytännön mukaisia luokkien nimiä:

      \n
    • Pankkitili
    • \n
    • OhjelmaApuri
    • \n
    • KirjastoTietokanta
    • \n
    • PythonKurssinArvosanat
    • \n

    Yhdellä luokalla pyritään mallintamaan jokin sellainen yksittäinen kokonaisuus, jonka sisältämät tiedot liittyvät kiinteästi yhteen. Monimutkaisemmissa ratkaisuissa luokka voi sisältää toisia luokkia (esimerkiksi luokka Kurssi voisi sisältää luokan Osasuoritus mukaisia olioita).

    Tarkastellaan esimerkkinä yksinkertaista luokkamäärittelyä, josta sisältö vielä puuttuu:

    class Pankkitili:\n    pass

    Koodissa määritellään luokka, jonka nimi on Pankkitili. Luokalle ei ole määritelty varsinaista sisältöä, mutta tästä huolimatta luokasta voidaan muodostaa olio.

    Tarkastellaan ohjelmaa, jossa luokasta muodostetun olion sisälle on määritelty kaksi muuttujaa, saldo ja omistaja. Olion muuttujia kutsutaan attribuuteiksi. Attribuutista käytetään myös nimitystä oliomuuttuja.

    Kun luokasta luodaan olio, voidaan attribuuttien arvoja käsitellä olion kautta:

    class Pankkitili:\n    pass\n\npekan_tili = Pankkitili()\npekan_tili.omistaja = \"Pekka Python\"\npekan_tili.saldo = 5.0\n\nprint(pekan_tili.omistaja)\nprint(pekan_tili.saldo)

    Pekka Python\n5.0

    Attribuutit ovat käytettävissä ainoastaan sen olion kautta, jossa ne on määritelty. Pankkitili-luokasta muodostetuilla olioilla on jokaisella omat arvonsa attribuuteille. Attribuuttien arvot haetaan olioiden kautta, esimerkiksi näin:

    tili = Pankkitili()\ntili.saldo = 155.50\n\nprint(tili.saldo) # Viittaa tilin attribuuttiin saldo\nprint(saldo) # TÄSTÄ TULEE VIRHE, koska oliomuuttuja ei ole mukana!

    Konstruktorin lisääminen

    Kuten edellisestä esimerkistä huomataan, luokasta voi luoda uuden olion kutsumalla konstruktoria, joka on muotoa LuokanNimi(). Yleensä olisi kuitenkin kätevä antaa attribuuteille arvot heti kun olio luodaan – nyt esimerkiksi Pankkitilin omistaja ja saldo asetetaan vasta, kun pankkitiliolio on luotu.

    Attribuuttien asettamisessa ilman konstruktoria on myös se ongelma, että samasta luokasta luoduilla olioilla voi olla eri attribuutit. Seuraava ohjelmakoodi esimerkiksi antaa virheen, koska oliolle pirjon_tili ei ole määritelty attribuuttia saldo:

    class Pankkitili:\n    pass\n\npekan_tili = Pankkitili()\npekan_tili.omistaja = \"Pekka\"\npekan_tili.saldo = 1400\n\npirjon_tili = Pankkitili()\npirjon_tili.omistaja = \"Pirjo\"\n\nprint(pekan_tili.saldo)\nprint(pirjon_tili.saldo) # TÄSTÄ TULEE VIRHE

    Sen sijaan että attribuuttien arvot alustettaisiin luokan luomisen jälkeen, on huomattavasti parempi ajatus alustaa arvot samalla, kun luokasta luodaan olio.

    Konstruktori kirjoitetaan luokan sisään metodina __init__ yleensä heti luokan alkuun.

    Tarkastellaan Pankkitili-luokkaa, johon on lisätty konstruktori:

    class Pankkitili:\n\n    # Konstruktori\n    def __init__(self, saldo: float, omistaja: str):\n        self.saldo = saldo\n        self.omistaja = omistaja

    Konstruktorin nimi on aina __init__. Huomaa, että nimessä sanan init molemmilla puolilla on kaksi alaviivaa.

    Konstruktorin ensimmäinen parametri on nimeltään self. Tämä viittaa olioon, jota käsitellään. Asetuslause

    self.saldo = saldo

    asettaa parametrina annetun saldon luotavan olion saldoksi. On tärkeä huomata, että tässä yhteydessä muuttuja self.saldo on eri muuttuja kuin muuttuja saldo:

      \n
    • \n

      Muuttuja self.saldo viittaa olion attribuuttiin. Jokaisella Pankkitili-luokan oliolla on oma saldonsa.

      \n
    • \n
    • \n

      Muuttuja saldo on konstruktorimetodin __init__ parametri, jolle annetaan arvo, kun metodia kutsutaan (eli kun halutaan luoda uusi olio luokasta).

      \n
    • \n

    Nyt kun konstruktorille on määritelty parametrit, voidaan attribuuttien arvot antaa oliota luotaessa:

    class Pankkitili:\n\n    # Konstruktori\n    def __init__(self, saldo: float, omistaja: str):\n        self.saldo = saldo\n        self.omistaja = omistaja\n\n# Parametrille self ei anneta arvoa, vaan Python antaa sen\n# automaattisesti\npekan_tili = Pankkitili(100, \"Pekka Python\")\npirjon_tili = Pankkitili(20000, \"Pirjo Pythonen\")\n\nprint(pekan_tili.saldo)\nprint(pirjon_tili.saldo)

    100\n20000

    Esimerkistä huomataan, että olioiden luominen helpottuu, kun arvot voidaan antaa heti oliota muodostaessa. Samalla tämä varmistaa, että arvojen antaminen ei unohdu, ja ohjaa käyttäjää antamaan arvot attribuuteille.

    Attribuuttien arvoja voi edelleen muuttaa myöhemmin ohjelmassa, vaikka alkuarvo olisikin annettu konstruktorissa:

    class Pankkitili:\n\n    # Konstruktori\n    def __init__(self, saldo: float, omistaja: str):\n        self.saldo = saldo\n        self.omistaja = omistaja\n\npekan_tili = Pankkitili(100, \"Pekka Python\")\nprint(pekan_tili.saldo)\n\n# Saldoksi 1500\npekan_tili.saldo = 1500\nprint(pekan_tili.saldo)\n\n# Lisätään saldoon 2000\npekan_tili.saldo += 2000\nprint(pekan_tili.saldo)

    100\n1500\n3500

    Tarkastellaan vielä toista esimerkkiä luokasta ja olioista. Kirjoitetaan luokka, joka mallintaa yhtä lottokierrosta:

    from datetime import date\n\nclass LottoKierros:\n\n    def __init__(self, viikko: int, pvm: date, numerot: list):\n        self.viikko = viikko\n        self.pvm = pvm\n        self.numerot = numerot\n\n\n# Luodaan uusi lottokierros\nkierros1 = LottoKierros(1, date(2021, 1, 2), [1,4,8,12,13,14,33])\n\n# Tulostetaan tiedot\nprint(kierros1.viikko)\nprint(kierros1.pvm)\n\nfor numero in kierros1.numerot:\n    print(numero)

    1\n2021-01-02\n1\n4\n8\n12\n13\n14\n33

    Attribuutit voivat olla siis minkä tahansa tyyppisiä – esimerkiksi edellisessä esimerkissä jokaiseen olioon tallennetaan lista ja päivämäärä.

    Tee luokka Kirja, jolla on attribuutteina muuttujat nimi, kirjoittaja, genre ja kirjoitusvuosi sekä konstruktori, joka alustaa muuttujat.

    Luokkaa käytetään seuraavasti:

    python = Kirja(\"Fluent Python\", \"Luciano Ramalho\", \"ohjelmointi\", 2015)\neverest = Kirja(\"Huipulta huipulle\", \"Carina Räihä\", \"elämänkerta\", 2010)\n\nprint(f\"{python.kirjoittaja}: {python.nimi} ({python.kirjoitusvuosi})\")\nprint(f\"Kirjan {everest.nimi} genre on {everest.genre}\")

    Luciano Ramalho: Fluent Python (2015)\nKirjan Huipulta huipulle genre on elämänkerta

    Kirjoita alla pyydetyt luokat. Jokaisen luokan alle on kuvattu attribuuttien nimet ja tyypit.

    Kirjoita jokaiselle luokalle myös konstruktori, jossa attribuutit annetaan siinä järjestyksessä kuin ne on kuvauksessa annettu.

      \n
    1. Luokka Muistilista
    2. \n
      \n
    • attribuutti otsikko (merkkijono)
    • \n
    • attribuutti merkinnat (lista)
    • \n
      \n
    1. Luokka Asiakas
    2. \n
      \n
    • attribuutti tunniste (merkkijono)
    • \n
    • attribuutti saldo (desimaaliluku)
    • \n
    • attribuutti alennusprosentti (kokonaisluku)
    • \n
      \n
    1. Luokka Kaapeli
    2. \n
      \n
    • attribuutti malli (merkkijono)
    • \n
    • attribuutti pituus (desimaaliluku)
    • \n
    • attribuutti maksiminopeus (kokonaisluku)
    • \n
    • attribuutti kaksisuuntainen (totuusarvo)
    • \n

    Omien luokkien olioiden käyttö

    Omasta luokasta muodostetut oliot käyttäytyvät esimerkiksi funktioiden parametrina ja paluuarvona samalla tavalla kuin muutkin oliot. Voisimme esimerkiksi tehdä pari apufunktiota tilien käsittelyyn:

    # funktio luo uuden tiliolion ja palauttaa sen\ndef avaa_tili(nimi: str):\n    uusi_tili =  Pankkitili(0, nimi)\n    return uusi_tili\n\n# funktio asettaa parametrina saamansa rahasumman parametrina olevalle tilille\ndef laita_rahaa_tilille(tili: Pankkitili, summa: int):\n    tili.saldo += summa\n\npekan_tili = avaa_tili(\"Pekka Python\")\nprint(pekan_tili.saldo)\n\nlaita_rahaa_tilille(pekan_tili, 500)\n\nprint(pekan_tili.saldo)

    0\n500

    Määrittele luokka Lemmikki. Luokalla on konstruktori, jossa annetaan arvot attribuuteille nimi, laji ja syntymavuosi tässä järjestyksessä.

    Kirjoita sitten luokan ulkopuolelle funktio uusi_lemmikki(nimi: str, laji: str, syntymavuosi: int), joka luo ja palauttaa uuden Lemmikki-tyyppisen (eli Lemmikki-luokkaa vastaavan) olion.

    Esimerkki funktion kutsumisesta:

    musti = uusi_lemmikki(\"Musti\", \"koira\", 2017)\nprint(musti.nimi)\nprint(musti.laji)\nprint(musti.syntymavuosi)

    Musti\nkoira\n2017

    Tee funktio vanhempi_kirja(kirja1: Kirja, kirja2: Kirja), joka saa parametriksi kaksi Kirja-oliota. Funktio kertoo, kumpi kirjoista on vanhempi.

    Funktiota käytetään seuraavasti:

    python = Kirja(\"Fluent Python\", \"Luciano Ramalho\", \"ohjelmointi\", 2015)\neverest = Kirja(\"Huipulta huipulle\", \"Carina Räihä\", \"elämänkerta\", 2010)\nnorma = Kirja(\"Norma\", \"Sofi Oksanen\", \"rikos\", 2015)\n\nvanhempi_kirja(python, everest)\nvanhempi_kirja(python, norma)

    Huipulta huipulle on vanhempi, se kirjoitettiin 2010\nFluent Python ja Norma kirjoitettiin 2015

    Tee funktio genren_kirjat(kirjat: list, genre: str), joka saa parametriksi listan Kirja-olioita sekä genren kertovan merkkijonon.

    Funktio palauttaa uuden listan, jolle se laittaa parametrina olevista kirjoista ne, joilla on haluttu genre.

    Funktiota käytetään seuraavasti:

    python = Kirja(\"Fluent Python\", \"Luciano Ramalho\", \"ohjelmointi\", 2015)\neverest = Kirja(\"Huipulta huipulle\", \"Carina Räihä\", \"elämänkerta\", 2010)\nnorma = Kirja(\"Norma\", \"Sofi Oksanen\", \"rikos\", 2015)\n\nkirjat = [python, everest, norma, Kirja(\"Lumiukko\", \"Jo Nesbø\", \"rikos\", 2007)]\n\nprint(\"rikoskirjoja ovat\")\nfor kirja in genren_kirjat(kirjat, \"rikos\"):\n    print(f\"{kirja.kirjoittaja}: {kirja.nimi}\")

    rikoskirjoja ovat\nSofi Oksanen: Norma\nJo Nesbø: Lumiukko

    ","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/3-omat-luokat.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten omia luokkia määritellään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa itse määritellystä luokasta olion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa konstruktorin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoittaa avainsana "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä ovat attribuutit ja miten niitä käytetään"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka määritellään avainsanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" avulla. Syntaksi on"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"LuokanNimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokan toteutus"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokat nimetään yleensä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"camel case"}]},{"type":"text","value":" -käytännöllä niin, että sanat kirjoitetaan yhteen ja jokainen sana alkaa isolla alkukirjaimella. Esimerkiksi seuraavat ovat tämän käytännön mukaisia luokkien nimiä:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"OhjelmaApuri"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"KirjastoTietokanta"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"PythonKurssinArvosanat"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhdellä luokalla pyritään mallintamaan jokin sellainen yksittäinen kokonaisuus, jonka sisältämät tiedot liittyvät kiinteästi yhteen. Monimutkaisemmissa ratkaisuissa luokka voi sisältää toisia luokkia (esimerkiksi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":" voisi sisältää luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Osasuoritus"}]},{"type":"text","value":" mukaisia olioita)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä yksinkertaista luokkamäärittelyä, josta sisältö vielä puuttuu:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koodissa määritellään luokka, jonka nimi on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":". Luokalle ei ole määritelty varsinaista sisältöä, mutta tästä huolimatta luokasta voidaan muodostaa olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan ohjelmaa, jossa luokasta muodostetun olion sisälle on määritelty kaksi muuttujaa, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"omistaja"}]},{"type":"text","value":". Olion muuttujia kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"attribuuteiksi"}]},{"type":"text","value":". Attribuutista käytetään myös nimitystä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"oliomuuttuja"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun luokasta luodaan olio, voidaan attribuuttien arvoja käsitellä olion kautta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5.0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Python\n5.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuutit ovat käytettävissä ainoastaan sen olion kautta, jossa ne on määritelty. Pankkitili-luokasta muodostetuilla olioilla on jokaisella omat arvonsa attribuuteille. Attribuuttien arvot haetaan olioiden kautta, esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"155.50"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Viittaa tilin attribuuttiin saldo"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# TÄSTÄ TULEE VIRHE, koska oliomuuttuja ei ole mukana!"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"konstruktorin-lisaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Konstruktorin lisääminen"},{"type":"element","tagName":"a","properties":{"href":"#konstruktorin-lisaaminen","ariaLabel":"konstruktorin lisaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten edellisestä esimerkistä huomataan, luokasta voi luoda uuden olion kutsumalla konstruktoria, joka on muotoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"LuokanNimi()"}]},{"type":"text","value":". Yleensä olisi kuitenkin kätevä antaa attribuuteille arvot heti kun olio luodaan – nyt esimerkiksi Pankkitilin omistaja ja saldo asetetaan vasta, kun pankkitiliolio on luotu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuuttien asettamisessa ilman konstruktoria on myös se ongelma, että samasta luokasta luoduilla olioilla voi olla eri attribuutit. Seuraava ohjelmakoodi esimerkiksi antaa virheen, koska oliolle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pirjon_tili"}]},{"type":"text","value":" ei ole määritelty attribuuttia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1400"}]},{"type":"text","value":"\n\npirjon_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# TÄSTÄ TULEE VIRHE"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sen sijaan että attribuuttien arvot alustettaisiin luokan luomisen jälkeen, on huomattavasti parempi ajatus alustaa arvot samalla, kun luokasta luodaan olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktori kirjoitetaan luokan sisään metodina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":" yleensä heti luokan alkuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokkaa, johon on lisätty konstruktori:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorin nimi on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":". Huomaa, että nimessä sanan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"init"}]},{"type":"text","value":" molemmilla puolilla on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kaksi alaviivaa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorin ensimmäinen parametri on nimeltään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":". Tämä viittaa olioon, jota käsitellään. Asetuslause"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.saldo = saldo"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"asettaa parametrina annetun saldon luotavan olion saldoksi. On tärkeä huomata, että tässä yhteydessä muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.saldo"}]},{"type":"text","value":" on eri muuttuja kuin muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.saldo"}]},{"type":"text","value":" viittaa olion attribuuttiin. Jokaisella Pankkitili-luokan oliolla on oma saldonsa."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":" on konstruktorimetodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":" parametri, jolle annetaan arvo, kun metodia kutsutaan (eli kun halutaan luoda uusi olio luokasta)."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt kun konstruktorille on määritelty parametrit, voidaan attribuuttien arvot antaa oliota luotaessa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Parametrille self ei anneta arvoa, vaan Python antaa sen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# automaattisesti"}]},{"type":"text","value":"\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"100\n20000"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkistä huomataan, että olioiden luominen helpottuu, kun arvot voidaan antaa heti oliota muodostaessa. Samalla tämä varmistaa, että arvojen antaminen ei unohdu, ja ohjaa käyttäjää antamaan arvot attribuuteille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuuttien arvoja voi edelleen muuttaa myöhemmin ohjelmassa, vaikka alkuarvo olisikin annettu konstruktorissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Konstruktori"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Saldoksi 1500"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään saldoon 2000"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"100\n1500\n3500"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä luokasta ja olioista. Kirjoitetaan luokka, joka mallintaa yhtä lottokierrosta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"LottoKierros"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" viikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"list"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" viikko\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pvm\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numerot\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan uusi lottokierros"}]},{"type":"text","value":"\nkierros1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" LottoKierros"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2021"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan tiedot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kierros1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kierros1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" kierros1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"numerot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1\n2021-01-02\n1\n4\n8\n12\n13\n14\n33"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Attribuutit voivat olla siis minkä tahansa tyyppisiä – esimerkiksi edellisessä esimerkissä jokaiseen olioon tallennetaan lista ja päivämäärä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kirja","tmcname":"osa08-06_kirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"text","value":", jolla on attribuutteina muuttujat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjoittaja"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"genre"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kirjoitusvuosi"}]},{"type":"text","value":" sekä konstruktori, joka alustaa muuttujat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"python "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fluent Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luciano Ramalho\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\neverest "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huipulta huipulle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Carina Räihä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"elämänkerta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2010"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjoittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjoitusvuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kirjan "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" genre on "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"genre"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luciano Ramalho: Fluent Python (2015)\nKirjan Huipulta huipulle genre on elämänkerta"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kirjoita luokat","tmcname":"osa08-07_kirjoita_luokat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita alla pyydetyt luokat. Jokaisen luokan alle on kuvattu attribuuttien nimet ja tyypit."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita jokaiselle luokalle myös konstruktori, jossa attribuutit annetaan siinä järjestyksessä kuin ne on kuvauksessa annettu."}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luokka Muistilista"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti otsikko (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti merkinnat (lista)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ol","properties":{"start":2},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luokka Asiakas"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti tunniste (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti saldo (desimaaliluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti alennusprosentti (kokonaisluku)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ol","properties":{"start":3},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luokka Kaapeli"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti malli (merkkijono)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti pituus (desimaaliluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti maksiminopeus (kokonaisluku)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"attribuutti kaksisuuntainen (totuusarvo)"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"omien-luokkien-olioiden-kaytto","style":"position:relative;"},"children":[{"type":"text","value":"Omien luokkien olioiden käyttö"},{"type":"element","tagName":"a","properties":{"href":"#omien-luokkien-olioiden-kaytto","ariaLabel":"omien luokkien olioiden kaytto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omasta luokasta muodostetut oliot käyttäytyvät esimerkiksi funktioiden parametrina ja paluuarvona samalla tavalla kuin muutkin oliot. Voisimme esimerkiksi tehdä pari apufunktiota tilien käsittelyyn:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktio luo uuden tiliolion ja palauttaa sen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"avaa_tili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n uusi_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" uusi_tili\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# funktio asettaa parametrina saamansa rahasumman parametrina olevalle tilille"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"laita_rahaa_tilille"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" summa\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" avaa_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlaita_rahaa_tilille"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n500"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Muodosta lemmikki","tmcname":"osa08-07b_muodosta_lemmikki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrittele luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":". Luokalla on konstruktori, jossa annetaan arvot attribuuteille "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"laji"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syntymavuosi"}]},{"type":"text","value":" tässä järjestyksessä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita sitten luokan ulkopuolelle funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"uusi_lemmikki(nimi: str, laji: str, syntymavuosi: int)"}]},{"type":"text","value":", joka luo ja palauttaa uuden "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":"-tyyppisen (eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":"-luokkaa vastaavan) olion."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"musti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" uusi_lemmikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Musti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"koira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2017"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"laji"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntymavuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Musti\nkoira\n2017"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vanhempi kirja","tmcname":"osa08-08_vanhempi_kirja"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhempi_kirja(kirja1: Kirja, kirja2: Kirja)"}]},{"type":"text","value":", joka saa parametriksi kaksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"text","value":"-oliota. Funktio kertoo, kumpi kirjoista on vanhempi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"python "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fluent Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luciano Ramalho\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\neverest "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huipulta huipulle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Carina Räihä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"elämänkerta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2010"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnorma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Norma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sofi Oksanen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvanhempi_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvanhempi_kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" norma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huipulta huipulle on vanhempi, se kirjoitettiin 2010\nFluent Python ja Norma kirjoitettiin 2015"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Genren kirjat","tmcname":"osa08-09_genren_kirjat"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"genren_kirjat(kirjat: list, genre: str)"}]},{"type":"text","value":", joka saa parametriksi listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kirja"}]},{"type":"text","value":"-olioita sekä genren kertovan merkkijonon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palauttaa"}]},{"type":"text","value":" uuden listan, jolle se laittaa parametrina olevista kirjoista ne, joilla on haluttu genre."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktiota käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"python "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fluent Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Luciano Ramalho\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\neverest "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huipulta huipulle\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Carina Räihä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"elämänkerta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2010"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nnorma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Norma\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sofi Oksanen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkirjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"python"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" everest"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" norma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lumiukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jo Nesbø\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2007"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikoskirjoja ovat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" kirja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" genren_kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"rikos\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kirjoittaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":": "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"rikoskirjoja ovat\nSofi Oksanen: Norma\nJo Nesbø: Lumiukko"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten omia luokkia määritellään
    • \n
    • Osaat muodostaa itse määritellystä luokasta olion
    • \n
    • Osaat kirjoittaa konstruktorin
    • \n
    • Tiedät, mitä tarkoittaa avainsana self
    • \n
    • Tiedät, mitä ovat attribuutit ja miten niitä käytetään
    • \n

    Luokka määritellään avainsanan class avulla. Syntaksi on

    class LuokanNimi:\n    # Luokan toteutus

    Luokat nimetään yleensä camel case -käytännöllä niin, että sanat kirjoitetaan yhteen ja jokainen sana alkaa isolla alkukirjaimella. Esimerkiksi seuraavat ovat tämän käytännön mukaisia luokkien nimiä:

      \n
    • Pankkitili
    • \n
    • OhjelmaApuri
    • \n
    • KirjastoTietokanta
    • \n
    • PythonKurssinArvosanat
    • \n

    Yhdellä luokalla pyritään mallintamaan jokin sellainen yksittäinen kokonaisuus, jonka sisältämät tiedot liittyvät kiinteästi yhteen. Monimutkaisemmissa ratkaisuissa luokka voi sisältää toisia luokkia (esimerkiksi luokka Kurssi voisi sisältää luokan Osasuoritus mukaisia olioita).

    Tarkastellaan esimerkkinä yksinkertaista luokkamäärittelyä, josta sisältö vielä puuttuu:

    class Pankkitili:\n    pass

    Koodissa määritellään luokka, jonka nimi on Pankkitili. Luokalle ei ole määritelty varsinaista sisältöä, mutta tästä huolimatta luokasta voidaan muodostaa olio.

    Tarkastellaan ohjelmaa, jossa luokasta muodostetun olion sisälle on määritelty kaksi muuttujaa, saldo ja omistaja. Olion muuttujia kutsutaan attribuuteiksi. Attribuutista käytetään myös nimitystä oliomuuttuja.

    Kun luokasta luodaan olio, voidaan attribuuttien arvoja käsitellä olion kautta:

    class Pankkitili:\n    pass\n\npekan_tili = Pankkitili()\npekan_tili.omistaja = \"Pekka Python\"\npekan_tili.saldo = 5.0\n\nprint(pekan_tili.omistaja)\nprint(pekan_tili.saldo)

    Pekka Python\n5.0

    Attribuutit ovat käytettävissä ainoastaan sen olion kautta, jossa ne on määritelty. Pankkitili-luokasta muodostetuilla olioilla on jokaisella omat arvonsa attribuuteille. Attribuuttien arvot haetaan olioiden kautta, esimerkiksi näin:

    tili = Pankkitili()\ntili.saldo = 155.50\n\nprint(tili.saldo) # Viittaa tilin attribuuttiin saldo\nprint(saldo) # TÄSTÄ TULEE VIRHE, koska oliomuuttuja ei ole mukana!

    Konstruktorin lisääminen

    Kuten edellisestä esimerkistä huomataan, luokasta voi luoda uuden olion kutsumalla konstruktoria, joka on muotoa LuokanNimi(). Yleensä olisi kuitenkin kätevä antaa attribuuteille arvot heti kun olio luodaan – nyt esimerkiksi Pankkitilin omistaja ja saldo asetetaan vasta, kun pankkitiliolio on luotu.

    Attribuuttien asettamisessa ilman konstruktoria on myös se ongelma, että samasta luokasta luoduilla olioilla voi olla eri attribuutit. Seuraava ohjelmakoodi esimerkiksi antaa virheen, koska oliolle pirjon_tili ei ole määritelty attribuuttia saldo:

    class Pankkitili:\n    pass\n\npekan_tili = Pankkitili()\npekan_tili.omistaja = \"Pekka\"\npekan_tili.saldo = 1400\n\npirjon_tili = Pankkitili()\npirjon_tili.omistaja = \"Pirjo\"\n\nprint(pekan_tili.saldo)\nprint(pirjon_tili.saldo) # TÄSTÄ TULEE VIRHE

    Sen sijaan että attribuuttien arvot alustettaisiin luokan luomisen jälkeen, on huomattavasti parempi ajatus alustaa arvot samalla, kun luokasta luodaan olio.

    Konstruktori kirjoitetaan luokan sisään metodina __init__ yleensä heti luokan alkuun.

    Tarkastellaan Pankkitili-luokkaa, johon on lisätty konstruktori:

    class Pankkitili:\n\n    # Konstruktori\n    def __init__(self, saldo: float, omistaja: str):\n        self.saldo = saldo\n        self.omistaja = omistaja

    Konstruktorin nimi on aina __init__. Huomaa, että nimessä sanan init molemmilla puolilla on kaksi alaviivaa.

    Konstruktorin ensimmäinen parametri on nimeltään self. Tämä viittaa olioon, jota käsitellään. Asetuslause

    self.saldo = saldo

    asettaa parametrina annetun saldon luotavan olion saldoksi. On tärkeä huomata, että tässä yhteydessä muuttuja self.saldo on eri muuttuja kuin muuttuja saldo:

      \n
    • \n

      Muuttuja self.saldo viittaa olion attribuuttiin. Jokaisella Pankkitili-luokan oliolla on oma saldonsa.

      \n
    • \n
    • \n

      Muuttuja saldo on konstruktorimetodin __init__ parametri, jolle annetaan arvo, kun metodia kutsutaan (eli kun halutaan luoda uusi olio luokasta).

      \n
    • \n

    Nyt kun konstruktorille on määritelty parametrit, voidaan attribuuttien arvot antaa oliota luotaessa:

    class Pankkitili:\n\n    # Konstruktori\n    def __init__(self, saldo: float, omistaja: str):\n        self.saldo = saldo\n        self.omistaja = omistaja\n\n# Parametrille self ei anneta arvoa, vaan Python antaa sen\n# automaattisesti\npekan_tili = Pankkitili(100, \"Pekka Python\")\npirjon_tili = Pankkitili(20000, \"Pirjo Pythonen\")\n\nprint(pekan_tili.saldo)\nprint(pirjon_tili.saldo)

    100\n20000

    Esimerkistä huomataan, että olioiden luominen helpottuu, kun arvot voidaan antaa heti oliota muodostaessa. Samalla tämä varmistaa, että arvojen antaminen ei unohdu, ja ohjaa käyttäjää antamaan arvot attribuuteille.

    Attribuuttien arvoja voi edelleen muuttaa myöhemmin ohjelmassa, vaikka alkuarvo olisikin annettu konstruktorissa:

    class Pankkitili:\n\n    # Konstruktori\n    def __init__(self, saldo: float, omistaja: str):\n        self.saldo = saldo\n        self.omistaja = omistaja\n\npekan_tili = Pankkitili(100, \"Pekka Python\")\nprint(pekan_tili.saldo)\n\n# Saldoksi 1500\npekan_tili.saldo = 1500\nprint(pekan_tili.saldo)\n\n# Lisätään saldoon 2000\npekan_tili.saldo += 2000\nprint(pekan_tili.saldo)

    100\n1500\n3500

    Tarkastellaan vielä toista esimerkkiä luokasta ja olioista. Kirjoitetaan luokka, joka mallintaa yhtä lottokierrosta:

    from datetime import date\n\nclass LottoKierros:\n\n    def __init__(self, viikko: int, pvm: date, numerot: list):\n        self.viikko = viikko\n        self.pvm = pvm\n        self.numerot = numerot\n\n\n# Luodaan uusi lottokierros\nkierros1 = LottoKierros(1, date(2021, 1, 2), [1,4,8,12,13,14,33])\n\n# Tulostetaan tiedot\nprint(kierros1.viikko)\nprint(kierros1.pvm)\n\nfor numero in kierros1.numerot:\n    print(numero)

    1\n2021-01-02\n1\n4\n8\n12\n13\n14\n33

    Attribuutit voivat olla siis minkä tahansa tyyppisiä – esimerkiksi edellisessä esimerkissä jokaiseen olioon tallennetaan lista ja päivämäärä.

    Tee luokka Kirja, jolla on attribuutteina muuttujat nimi, kirjoittaja, genre ja kirjoitusvuosi sekä konstruktori, joka alustaa muuttujat.

    Luokkaa käytetään seuraavasti:

    python = Kirja(\"Fluent Python\", \"Luciano Ramalho\", \"ohjelmointi\", 2015)\neverest = Kirja(\"Huipulta huipulle\", \"Carina Räihä\", \"elämänkerta\", 2010)\n\nprint(f\"{python.kirjoittaja}: {python.nimi} ({python.kirjoitusvuosi})\")\nprint(f\"Kirjan {everest.nimi} genre on {everest.genre}\")

    Luciano Ramalho: Fluent Python (2015)\nKirjan Huipulta huipulle genre on elämänkerta

    Kirjoita alla pyydetyt luokat. Jokaisen luokan alle on kuvattu attribuuttien nimet ja tyypit.

    Kirjoita jokaiselle luokalle myös konstruktori, jossa attribuutit annetaan siinä järjestyksessä kuin ne on kuvauksessa annettu.

      \n
    1. Luokka Muistilista
    2. \n
      \n
    • attribuutti otsikko (merkkijono)
    • \n
    • attribuutti merkinnat (lista)
    • \n
      \n
    1. Luokka Asiakas
    2. \n
      \n
    • attribuutti tunniste (merkkijono)
    • \n
    • attribuutti saldo (desimaaliluku)
    • \n
    • attribuutti alennusprosentti (kokonaisluku)
    • \n
      \n
    1. Luokka Kaapeli
    2. \n
      \n
    • attribuutti malli (merkkijono)
    • \n
    • attribuutti pituus (desimaaliluku)
    • \n
    • attribuutti maksiminopeus (kokonaisluku)
    • \n
    • attribuutti kaksisuuntainen (totuusarvo)
    • \n

    Omien luokkien olioiden käyttö

    Omasta luokasta muodostetut oliot käyttäytyvät esimerkiksi funktioiden parametrina ja paluuarvona samalla tavalla kuin muutkin oliot. Voisimme esimerkiksi tehdä pari apufunktiota tilien käsittelyyn:

    # funktio luo uuden tiliolion ja palauttaa sen\ndef avaa_tili(nimi: str):\n    uusi_tili =  Pankkitili(0, nimi)\n    return uusi_tili\n\n# funktio asettaa parametrina saamansa rahasumman parametrina olevalle tilille\ndef laita_rahaa_tilille(tili: Pankkitili, summa: int):\n    tili.saldo += summa\n\npekan_tili = avaa_tili(\"Pekka Python\")\nprint(pekan_tili.saldo)\n\nlaita_rahaa_tilille(pekan_tili, 500)\n\nprint(pekan_tili.saldo)

    0\n500

    Määrittele luokka Lemmikki. Luokalla on konstruktori, jossa annetaan arvot attribuuteille nimi, laji ja syntymavuosi tässä järjestyksessä.

    Kirjoita sitten luokan ulkopuolelle funktio uusi_lemmikki(nimi: str, laji: str, syntymavuosi: int), joka luo ja palauttaa uuden Lemmikki-tyyppisen (eli Lemmikki-luokkaa vastaavan) olion.

    Esimerkki funktion kutsumisesta:

    musti = uusi_lemmikki(\"Musti\", \"koira\", 2017)\nprint(musti.nimi)\nprint(musti.laji)\nprint(musti.syntymavuosi)

    Musti\nkoira\n2017

    Tee funktio vanhempi_kirja(kirja1: Kirja, kirja2: Kirja), joka saa parametriksi kaksi Kirja-oliota. Funktio kertoo, kumpi kirjoista on vanhempi.

    Funktiota käytetään seuraavasti:

    python = Kirja(\"Fluent Python\", \"Luciano Ramalho\", \"ohjelmointi\", 2015)\neverest = Kirja(\"Huipulta huipulle\", \"Carina Räihä\", \"elämänkerta\", 2010)\nnorma = Kirja(\"Norma\", \"Sofi Oksanen\", \"rikos\", 2015)\n\nvanhempi_kirja(python, everest)\nvanhempi_kirja(python, norma)

    Huipulta huipulle on vanhempi, se kirjoitettiin 2010\nFluent Python ja Norma kirjoitettiin 2015

    Tee funktio genren_kirjat(kirjat: list, genre: str), joka saa parametriksi listan Kirja-olioita sekä genren kertovan merkkijonon.

    Funktio palauttaa uuden listan, jolle se laittaa parametrina olevista kirjoista ne, joilla on haluttu genre.

    Funktiota käytetään seuraavasti:

    python = Kirja(\"Fluent Python\", \"Luciano Ramalho\", \"ohjelmointi\", 2015)\neverest = Kirja(\"Huipulta huipulle\", \"Carina Räihä\", \"elämänkerta\", 2010)\nnorma = Kirja(\"Norma\", \"Sofi Oksanen\", \"rikos\", 2015)\n\nkirjat = [python, everest, norma, Kirja(\"Lumiukko\", \"Jo Nesbø\", \"rikos\", 2007)]\n\nprint(\"rikoskirjoja ovat\")\nfor kirja in genren_kirjat(kirjat, \"rikos\"):\n    print(f\"{kirja.kirjoittaja}: {kirja.nimi}\")

    rikoskirjoja ovat\nSofi Oksanen: Norma\nJo Nesbø: Lumiukko

    ","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/3-omat-luokat.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-8/4-metodit-omissa-luokissa/page-data.json b/page-data/osa-8/4-metodit-omissa-luokissa/page-data.json index 3f95ae472..4e98fec47 100644 --- a/page-data/osa-8/4-metodit-omissa-luokissa/page-data.json +++ b/page-data/osa-8/4-metodit-omissa-luokissa/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-8/4-metodit-omissa-luokissa", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten metodit toimivat luokissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa metodeita omiin luokkiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mitä tarkoitetaan kapseloinnilla ja asiakkaalla olio-ohjelmoinnissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vain attribuutteja sisältävät luokat eivät käytännössä eroa juurikaan sanakirjoista. Seuraavassa esimerkissä on esitetty pankkitiliä mallintava rakenne sekä oman luokan että sanakirjan avulla toteutettuna:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkki omaa luokkaa käyttäen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosikorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosikorko\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkki sanakirjaa käyttäen"}]},{"type":"text","value":"\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tilinumero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omistaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saldo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosikorko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjaa käyttäen rakenteen toteutus on huomattavasti suoraviivaisempi ja koodi on lyhyempi. Luokan hyötynä tässä tapauksessa on, että se määrittelee rakenteen \"tiukemmin\", jolloin kaikki luokasta muodostetut oliot ovat rakenteeltaan samanlaisia. Luokka on lisäksi nimetty: oliota muodostaessa viitataan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokkaan ja olion tyyppi on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":" eikä sanakirja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokilla on lisäksi etuna, että niihin voidaan lisätä attribuuttien lisäksi myös toiminnallisuutta. Yksi olio-ohjelmoinnin periaatteista onkin, että olioon on yhdistetty sekä tallennettavat tiedot että operaatiot, joilla tietoa voidaan käsitellä."}]},{"type":"element","tagName":"h2","properties":{"id":"metodit-luokissa","style":"position:relative;"},"children":[{"type":"text","value":"Metodit luokissa"},{"type":"element","tagName":"a","properties":{"href":"#metodit-luokissa","ariaLabel":"metodit luokissa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi tarkoittaa luokkaan sidottua aliohjelmaa. Yleensä metodin toiminta kohdistuu vain yhteen olioon. Metodi kirjoitetaan luokan sisälle, ja se voi käsitellä attribuutteja kuten mitä tahansa muuttujia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan esimerkkinä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokan metodia, joka lisää koron pankkitilille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosikorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosikorko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi lisää koron tilin saldoon"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko\n\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1522.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"text","value":" kertoo olion saldon vuosikorkoprosentilla ja lisää tuloksen nykyiseen saldoon. Metodin toiminta kohdistuu siihen olioon, jonka kautta sitä kutsutaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan vielä toinen esimerkki, jossa luokasta on muodostettu useampi olio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokka Pankkitili on määritelty edellisessä esimerkissä"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"99999-999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.05"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaulin_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1111-222\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pauli Paulinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.001"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään korko Pekalle ja Pirjolle, mutta ei Paulille"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paulin_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1522.5\n1575.0\n1500.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korko lisätään vain siihen tiliin, jonka kautta metodia kutsutaan. Esimerkistä huomataan, että Pekalle ja Pirjolle lisätään eri korkoprosentit ja Paulin tilin saldo ei muutu ollenkaan, koska olion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paulin_tili"}]},{"type":"text","value":" kautta ei kutsuta metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"kapselointi","style":"position:relative;"},"children":[{"type":"text","value":"Kapselointi"},{"type":"element","tagName":"a","properties":{"href":"#kapselointi","ariaLabel":"kapselointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnin yhteydessä puhutaan usein olioiden "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"asiakkaista"}]},{"type":"text","value":". Asiakkaalla (client) tarkoitetaan koodin osaa, joka muodostaa olion ja käyttää sen palveluita kutsumalla metodeita. Kun olion tietosisältöä käsitellään vain olion tarjoamien metodien avulla, voidaan varmistua siitä, että olion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sisäinen eheys"}]},{"type":"text","value":" säilyy. Käytännössä tämä tarkoittaa esimerkiksi sitä, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokassa tarjotaan metodi, jolla tililtä nostetaan rahaa, sen sijaan, että asiakas käsittelisi suoraan attribuuttia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":". Tässä metodissa voidaan sitten esimerkiksi varmistaa, ettei tililtä nosteta katetta enempää rahaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosikorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosikorko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi lisää koron tilin saldoon"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodilla \"nostetaan\" tililtä rahaa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa true, jos nosto onnistuu, muuten False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nosto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nostosumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nostosumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" nostosumma\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto onnistui, tilin saldo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yritetään uudestaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto onnistui, tilin saldo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nosto onnistui, tilin saldo on nyt 500.0\nNosto ei onnistunut, rahaa ei ole tarpeeksi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olion sisäisen eheyden säilyttämistä ja sopivien metodien tarjoamista asiakkaalle kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kapseloinniksi"}]},{"type":"text","value":". Tämä tarkoittaa, että olion toteutus piilotetaan asiakkaalta ja olio tarjoaa ulkopuolelle metodit, joiden avulla tietoja voi käsitellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelkkä metodin lisäys ei kuitenkaan piilota attribuuttia: vaikka luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":" onkin lisätty metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nosto"}]},{"type":"text","value":" rahan nostamiseksi, asiakas voi edelleen muokata "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":"-attribuutin arvoa suoraan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yritetään nostaa 2000"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto onnistui, tilin saldo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nostetaan \"väkisin\" 2000"}]},{"type":"text","value":"\n pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Saldo nyt:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelma voidaan ainakin osittain ratkaista piilottamalla attribuutit asiakkaalta. Käytännön toteutukseen palataan tarkemmin ensi viikolla."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vähenevä laskuri","tmcname":"osa08-10_vaheneva_laskuri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä on useampi osa. Jokainen osa vastaa yhtä tehtäväpistettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee osittain valmiiksi toteutettu luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"VahenevaLaskuri"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"VahenevaLaskuri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo_alussa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvo_alussa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_arvo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja tänne muut metodit"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käytetään seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 10\narvo: 9\narvo: 8"}]}]},{"type":"element","tagName":"h3","properties":{"id":"laskurin-vahentaminen","style":"position:relative;"},"children":[{"type":"text","value":"Laskurin vähentäminen"},{"type":"element","tagName":"a","properties":{"href":"#laskurin-vahentaminen","ariaLabel":"laskurin vahentaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä luokan runkoon metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"text","value":" toteutus sellaiseksi, että se vähentää kutsuttavan olion oliomuuttujan arvoa yhdellä. Kun olet toteuttanut metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"text","value":", äskeisen pääohjelman tulee toimia esimerkkitulosteen mukaan."}]},{"type":"element","tagName":"h3","properties":{"id":"laskurin-arvo-ei-saa-olla-negatiivinen","style":"position:relative;"},"children":[{"type":"text","value":"Laskurin arvo ei saa olla negatiivinen"},{"type":"element","tagName":"a","properties":{"href":"#laskurin-arvo-ei-saa-olla-negatiivinen","ariaLabel":"laskurin arvo ei saa olla negatiivinen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"text","value":" toteutus sellaiseksi, ettei laskurin arvo mene koskaan negatiiviseksi: jos laskurin arvo on jo 0, sitä ei enää vähennetä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 2\narvo: 1\narvo: 0\narvo: 0"}]}]},{"type":"element","tagName":"h3","properties":{"id":"laskurin-arvon-nollaus","style":"position:relative;"},"children":[{"type":"text","value":"Laskurin arvon nollaus"},{"type":"element","tagName":"a","properties":{"href":"#laskurin-arvon-nollaus","ariaLabel":"laskurin arvon nollaus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee laskurille metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nollaa"}]},{"type":"text","value":", joka nollaa laskurin arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nollaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 100\narvo: 0"}]}]},{"type":"element","tagName":"h3","properties":{"id":"alkuperaisen-arvon-palautus","style":"position:relative;"},"children":[{"type":"text","value":"Alkuperäisen arvon palautus"},{"type":"element","tagName":"a","properties":{"href":"#alkuperaisen-arvon-palautus","ariaLabel":"alkuperaisen arvon palautus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee laskurille metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palauta_alkuperainen_arvo()"}]},{"type":"text","value":" joka palauttaa laskurille sen alkuperäisen arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"palauta_alkuperainen_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 51\narvo: 55"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä esimerkkiä luokasta, joka mallintaa pelaajan ennätystulosta. Luokkaan on kirjoitettu erilliset metodit, joilla voidaan tarkastaa, ovatko annetut parametrit sopivia. Metodeja kutsutaan heti konstruktorissa. Näin varmistetaan luotavan olion sisäinen eheys."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Ennatystulos"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Oletusarvot"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1900"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi_ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelaaja\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm_ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet_ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Apumetodit, joilla tarkistetaan ovatko syötteet ok"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi_ok"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nimessä vähintään kaksi merkkiä"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pvm_ok"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poikkeus, jos yritetään muodostaa epäkelpo päivämäärä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisteet_ok"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tulos1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Ennatystulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"235"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Epäkelpo arvo päivämäärälle"}]},{"type":"text","value":"\n tulos2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Ennatystulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Piia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4555"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostaa oletusarvon 1900-01-01"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"235\nPekka\n2020-11-01\n4555\nPiia\n1900-01-01"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkistä huomataan, että myös olion omiin metodeihin pitää viitata "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreen avulla, kun niitä kutsutaan konstruktorista. Luokkiin voidaan kirjoittaa myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"staattisia metodeita"}]},{"type":"text","value":" eli metodeja, joita voidaan kutsua ilman, että luokasta muodostetaan oliota. Tähän palataan kuitenkin tarkemmin ensi viikolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrettä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" käytetään kuitenkin vain silloin, kun viitataan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olion piirteisiin"}]},{"type":"text","value":" (eli metodeihin tai olion attribuutteihin). Olion metodeissa voidaan käyttää myös paikallisia muuttujia. Tämä on suositeltavaa, jos muuttujaan ei ole tarvetta viitata metodin ulkopuolella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Paikallinen muuttuja määritellään ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määrettä - eli samoin kuin esimerkiksi kaikki muuttujat kurssin ensimmäisellä puoliskolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Bonuskortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_bonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nyt muuttuja bonus on paikallinen muuttuja,"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# eikä olion attribuutti - siihen siis ei voi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viitata olion kautta"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.25"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" bonus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_superbonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Myös muuttuja superbonus on paikallinen muuttuja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yleensä apumuuttujina käytetään paikallisia"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muuttujia, koska niihin ei ole tarvetta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viitatata muissa metodeissa tai olion kautta"}]},{"type":"text","value":"\n superbonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.5"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" superbonus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Bonuskortti(nimi="}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", saldo="}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Etu- ja sukunimi","tmcname":"osa08-10b_etu_ja_sukunimi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":", jolla on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ainoastaan yksi attribuutti"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", joka asetetaan konstruktorissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokalle tule kirjoitaa kaksi metodia:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anna_etunimi"}]},{"type":"text","value":" palauttaa henkilön etunimen ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anna_sukunimi"}]},{"type":"text","value":" vastaavasti henkilön sukunimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa metodeissa, että konstruktroissa annetussa nimessä on etu- ja sukunimi välilyönnillä erotettuna eikä muita nimiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_sukunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pauli "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pauli Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pauli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pauli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_sukunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka\nPython\nPauli\nPythonen"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lukutilasto","tmcname":"osa08-11_lukutilasto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan olio-ohjelmointia hyödyntäen samantapainen käyttäjän syöttämiä lukuja käsittelevä ohjelma kuin Ohjelmoinnin perusteiden "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/4-yksinkertainen-silmukka#programming-exercise-lukujen-kasittelya"},"children":[{"type":"text","value":"osan 2 lopussa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h3","properties":{"id":"lukujen-maara","style":"position:relative;"},"children":[{"type":"text","value":"Lukujen määrä"},{"type":"element","tagName":"a","properties":{"href":"#lukujen-maara","ariaLabel":"lukujen maara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":", joka tuntee seuraavat toiminnot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_luku"}]},{"type":"text","value":" lisää uuden luvun tilastoon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lukujen_maara"}]},{"type":"text","value":" kertoo lisättyjen lukujen määrän"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan ei tarvitse tallentaa mihinkään lisättyjä lukuja vaan riittää, että se muistaa niiden määrän. Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_luku"}]},{"type":"text","value":" ei tässä vaiheessa tarvitse edes ottaa huomioon, mikä luku lisätään tilastoon, koska ainoa tallennettava asia on lukujen määrä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan runko on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lukuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_luku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lukujen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilasto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lukutilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen määrä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lukujen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lukujen määrä: 4"}]}]},{"type":"element","tagName":"h3","properties":{"id":"summa-ja-keskiarvo","style":"position:relative;"},"children":[{"type":"text","value":"Summa ja keskiarvo"},{"type":"element","tagName":"a","properties":{"href":"#summa-ja-keskiarvo","ariaLabel":"summa ja keskiarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna luokkaa seuraavilla toiminnoilla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" kertoo lisättyjen lukujen summan (tyhjän lukutilaston summa on 0)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":" kertoo lisättyjen lukujen keskiarvon (tyhjän lukutilaston keskiarvo on 0)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilasto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lukutilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen määrä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lukujen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keskiarvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrä: 4\nSumma: 11\nKeskiarvo: 2.75"}]}]},{"type":"element","tagName":"h3","properties":{"id":"summa-kayttajalta","style":"position:relative;"},"children":[{"type":"text","value":"Summa käyttäjältä"},{"type":"element","tagName":"a","properties":{"href":"#summa-kayttajalta","ariaLabel":"summa kayttajalta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy lukuja käyttäjältä, kunnes käyttäjä antaa luvun -1. Sitten ohjelma ilmoittaa lukujen summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa tulee käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":"-oliota summan laskemiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM: Älä muuta tässä osassa luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":", vaan toteuta sitä hyödyntäen summan laskemiseen käytetty ohjelma."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM2: Älä kirjoita pääohjelmaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkon sisään, jotta testit toimivat!"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lukuja:\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma: 13\nKeskiarvo: 3.25"}]}]},{"type":"element","tagName":"h3","properties":{"id":"monta-summaa","style":"position:relative;"},"children":[{"type":"text","value":"Monta summaa"},{"type":"element","tagName":"a","properties":{"href":"#monta-summaa","ariaLabel":"monta summaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta edellistä ohjelmaa niin, että ohjelma laskee myös parillisten ja parittomien lukujen summaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM: Älä edelleenkään muuta luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":", vaan määrittele ohjelmassa kolme "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":"-oliota. Laske ensimmäisen avulla kaikkien lukujen summa ja keskiarvo, toisen avulla parillisten lukujen summa ja kolmannen avulla parittomien lukujen summa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM2: Älä kirjoita pääohjelmaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkon sisään, jotta testit toimivat!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lukuja:\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma: 13\nKeskiarvo: 3.25\nParillisten summa: 8\nParittomien summa: 5"}]}]}]}]},"html":"

    Tämän osion jälkeen:

      \n
    • Tiedät, miten metodit toimivat luokissa
    • \n
    • Osaat kirjoittaa metodeita omiin luokkiin
    • \n
    • Ymmärrät, mitä tarkoitetaan kapseloinnilla ja asiakkaalla olio-ohjelmoinnissa
    • \n

    Vain attribuutteja sisältävät luokat eivät käytännössä eroa juurikaan sanakirjoista. Seuraavassa esimerkissä on esitetty pankkitiliä mallintava rakenne sekä oman luokan että sanakirjan avulla toteutettuna:

    # Esimerkki omaa luokkaa käyttäen\nclass Pankkitili:\n\n    def __init__(self, tilinumero: str, omistaja: str, saldo: float, vuosikorko: float):\n        self.tilinumero = tilinumero\n        self.omistaja = omistaja\n        self.saldo = saldo\n        self.vuosikorko = vuosikorko\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)
    # Esimerkki sanakirjaa käyttäen\npekan_tili = {\"tilinumero\": \"12345-678\", \"omistaja\": \"Pekka Python\", \"saldo\": 1500.0, \"vuosikorko\": 0.0}

    Sanakirjaa käyttäen rakenteen toteutus on huomattavasti suoraviivaisempi ja koodi on lyhyempi. Luokan hyötynä tässä tapauksessa on, että se määrittelee rakenteen \"tiukemmin\", jolloin kaikki luokasta muodostetut oliot ovat rakenteeltaan samanlaisia. Luokka on lisäksi nimetty: oliota muodostaessa viitataan Pankkitili-luokkaan ja olion tyyppi on Pankkitili eikä sanakirja.

    Luokilla on lisäksi etuna, että niihin voidaan lisätä attribuuttien lisäksi myös toiminnallisuutta. Yksi olio-ohjelmoinnin periaatteista onkin, että olioon on yhdistetty sekä tallennettavat tiedot että operaatiot, joilla tietoa voidaan käsitellä.

    Metodit luokissa

    Metodi tarkoittaa luokkaan sidottua aliohjelmaa. Yleensä metodin toiminta kohdistuu vain yhteen olioon. Metodi kirjoitetaan luokan sisälle, ja se voi käsitellä attribuutteja kuten mitä tahansa muuttujia.

    Katsotaan esimerkkinä Pankkitili-luokan metodia, joka lisää koron pankkitilille:

    class Pankkitili:\n\n    def __init__(self, tilinumero: str, omistaja: str, saldo: float, vuosikorko: float):\n        self.tilinumero = tilinumero\n        self.omistaja = omistaja\n        self.saldo = saldo\n        self.vuosikorko = vuosikorko\n\n    # Metodi lisää koron tilin saldoon\n    def lisaa_korko(self):\n        self.saldo += self.saldo * self.vuosikorko\n\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\npekan_tili.lisaa_korko()\nprint(pekan_tili.saldo)

    1522.5

    Metodi lisaa_korko kertoo olion saldon vuosikorkoprosentilla ja lisää tuloksen nykyiseen saldoon. Metodin toiminta kohdistuu siihen olioon, jonka kautta sitä kutsutaan.

    Katsotaan vielä toinen esimerkki, jossa luokasta on muodostettu useampi olio:

    # Luokka Pankkitili on määritelty edellisessä esimerkissä\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\npirjon_tili = Pankkitili(\"99999-999\", \"Pirjo Pythonen\", 1500.0, 0.05)\npaulin_tili = Pankkitili(\"1111-222\", \"Pauli Paulinen\", 1500.0, 0.001)\n\n# Lisätään korko Pekalle ja Pirjolle, mutta ei Paulille\npekan_tili.lisaa_korko()\npirjon_tili.lisaa_korko()\n\n# Tulostetaan kaikki\nprint(pekan_tili.saldo)\nprint(pirjon_tili.saldo)\nprint(paulin_tili.saldo)

    1522.5\n1575.0\n1500.0

    Korko lisätään vain siihen tiliin, jonka kautta metodia kutsutaan. Esimerkistä huomataan, että Pekalle ja Pirjolle lisätään eri korkoprosentit ja Paulin tilin saldo ei muutu ollenkaan, koska olion paulin_tili kautta ei kutsuta metodia lisaa_korko.

    Kapselointi

    Olio-ohjelmoinnin yhteydessä puhutaan usein olioiden asiakkaista. Asiakkaalla (client) tarkoitetaan koodin osaa, joka muodostaa olion ja käyttää sen palveluita kutsumalla metodeita. Kun olion tietosisältöä käsitellään vain olion tarjoamien metodien avulla, voidaan varmistua siitä, että olion sisäinen eheys säilyy. Käytännössä tämä tarkoittaa esimerkiksi sitä, että Pankkitili-luokassa tarjotaan metodi, jolla tililtä nostetaan rahaa, sen sijaan, että asiakas käsittelisi suoraan attribuuttia saldo. Tässä metodissa voidaan sitten esimerkiksi varmistaa, ettei tililtä nosteta katetta enempää rahaa.

    Esimerkiksi:

    class Pankkitili:\n\n    def __init__(self, tilinumero: str, omistaja: str, saldo: float, vuosikorko: float):\n        self.tilinumero = tilinumero\n        self.omistaja = omistaja\n        self.saldo = saldo\n        self.vuosikorko = vuosikorko\n\n    # Metodi lisää koron tilin saldoon\n    def lisaa_korko(self):\n        self.saldo += self.saldo * self.vuosikorko\n\n    # Metodilla \"nostetaan\" tililtä rahaa\n    # Metodi palauttaa true, jos nosto onnistuu, muuten False\n    def nosto(self, nostosumma: float):\n        if nostosumma <= self.saldo:\n            self.saldo -= nostosumma\n            return True\n\n        return False\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\n\nif pekan_tili.nosto(1000):\n    print(\"Nosto onnistui, tilin saldo on nyt\", pekan_tili.saldo)\nelse:\n    print(\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\")\n\n# Yritetään uudestaan\nif pekan_tili.nosto(1000):\n    print(\"Nosto onnistui, tilin saldo on nyt\", pekan_tili.saldo)\nelse:\n    print(\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\")

    Nosto onnistui, tilin saldo on nyt 500.0\nNosto ei onnistunut, rahaa ei ole tarpeeksi.

    Olion sisäisen eheyden säilyttämistä ja sopivien metodien tarjoamista asiakkaalle kutsutaan kapseloinniksi. Tämä tarkoittaa, että olion toteutus piilotetaan asiakkaalta ja olio tarjoaa ulkopuolelle metodit, joiden avulla tietoja voi käsitellä.

    Pelkkä metodin lisäys ei kuitenkaan piilota attribuuttia: vaikka luokkaan Pankkitili onkin lisätty metodi nosto rahan nostamiseksi, asiakas voi edelleen muokata saldo-attribuutin arvoa suoraan:

    pekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\n\n# Yritetään nostaa 2000\nif pekan_tili.nosto(2000):\n    print(\"Nosto onnistui, tilin saldo on nyt\", pekan_tili.saldo)\nelse:\n    print(\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\")\n\n    # Nostetaan \"väkisin\" 2000\n    pekan_tili.saldo -= 2000\n\nprint(\"Saldo nyt:\", pekan_tili.saldo)

    Ongelma voidaan ainakin osittain ratkaista piilottamalla attribuutit asiakkaalta. Käytännön toteutukseen palataan tarkemmin ensi viikolla.

    Tässä tehtävässä on useampi osa. Jokainen osa vastaa yhtä tehtäväpistettä.

    Tehtäväpohjan mukana tulee osittain valmiiksi toteutettu luokka VahenevaLaskuri:

    class VahenevaLaskuri:\n    def __init__(self, arvo_alussa: int):\n        self.arvo = arvo_alussa\n\n    def tulosta_arvo(self):\n        print(\"arvo:\", self.arvo)\n\n    def vahenna(self):\n        pass\n\n    # ja tänne muut metodit

    Luokkaa käytetään seuraavasti

    laskuri = VahenevaLaskuri(10)\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()

    arvo: 10\narvo: 9\narvo: 8

    Laskurin vähentäminen

    Täydennä luokan runkoon metodin vahenna toteutus sellaiseksi, että se vähentää kutsuttavan olion oliomuuttujan arvoa yhdellä. Kun olet toteuttanut metodin vahenna, äskeisen pääohjelman tulee toimia esimerkkitulosteen mukaan.

    Laskurin arvo ei saa olla negatiivinen

    Täydennä metodin vahenna toteutus sellaiseksi, ettei laskurin arvo mene koskaan negatiiviseksi: jos laskurin arvo on jo 0, sitä ei enää vähennetä.

    laskuri = VahenevaLaskuri(2)\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()

    arvo: 2\narvo: 1\narvo: 0\narvo: 0

    Laskurin arvon nollaus

    Tee laskurille metodi nollaa, joka nollaa laskurin arvon:

    laskuri = VahenevaLaskuri(100)\nlaskuri.tulosta_arvo()\nlaskuri.nollaa()\nlaskuri.tulosta_arvo()

    arvo: 100\narvo: 0

    Alkuperäisen arvon palautus

    Tee laskurille metodi palauta_alkuperainen_arvo() joka palauttaa laskurille sen alkuperäisen arvon:

    laskuri = VahenevaLaskuri(55)\nlaskuri.vahenna()\nlaskuri.vahenna()\nlaskuri.vahenna()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.palauta_alkuperainen_arvo()\nlaskuri.tulosta_arvo()

    arvo: 51\narvo: 55

    Tarkastellaan vielä esimerkkiä luokasta, joka mallintaa pelaajan ennätystulosta. Luokkaan on kirjoitettu erilliset metodit, joilla voidaan tarkastaa, ovatko annetut parametrit sopivia. Metodeja kutsutaan heti konstruktorissa. Näin varmistetaan luotavan olion sisäinen eheys.

    from datetime import date\n\nclass Ennatystulos:\n\n    def __init__(self, pelaaja: str, paiva: int, kuukausi: int, vuosi: int, pisteet: int):\n        # Oletusarvot\n        self.pelaaja = \"\"\n        self.paivamaara = date(1900, 1, 1)\n        self.pisteet = 0\n\n        if self.nimi_ok(pelaaja):\n            self.pelaaja = pelaaja\n\n        if self.pvm_ok(paiva, kuukausi, vuosi):\n            self.paivamaara = date(vuosi, kuukausi, paiva)\n\n        if self.pisteet_ok(pisteet):\n            self.pisteet = pisteet\n\n    # Apumetodit, joilla tarkistetaan ovatko syötteet ok\n    def nimi_ok(self, nimi: str):\n        return len(nimi) >= 2 # Nimessä vähintään kaksi merkkiä\n\n    def pvm_ok(self, paiva, kuukausi, vuosi):\n        try:\n            date(vuosi, kuukausi, paiva)\n            return True\n        except:\n            # Poikkeus, jos yritetään muodostaa epäkelpo päivämäärä\n            return False\n\n    def pisteet_ok(self, pisteet):\n        return pisteet >= 0\n\nif __name__ == \"__main__\":\n    tulos1 = Ennatystulos(\"Pekka\", 1, 11, 2020, 235)\n    print(tulos1.pisteet)\n    print(tulos1.pelaaja)\n    print(tulos1.paivamaara)\n\n    # Epäkelpo arvo päivämäärälle\n    tulos2 = Ennatystulos(\"Piia\", 4, 13, 2019, 4555)\n    print(tulos2.pisteet)\n    print(tulos2.pelaaja)\n    print(tulos2.paivamaara) # Tulostaa oletusarvon 1900-01-01

    235\nPekka\n2020-11-01\n4555\nPiia\n1900-01-01

    Esimerkistä huomataan, että myös olion omiin metodeihin pitää viitata self-määreen avulla, kun niitä kutsutaan konstruktorista. Luokkiin voidaan kirjoittaa myös staattisia metodeita eli metodeja, joita voidaan kutsua ilman, että luokasta muodostetaan oliota. Tähän palataan kuitenkin tarkemmin ensi viikolla.

    Määrettä self käytetään kuitenkin vain silloin, kun viitataan olion piirteisiin (eli metodeihin tai olion attribuutteihin). Olion metodeissa voidaan käyttää myös paikallisia muuttujia. Tämä on suositeltavaa, jos muuttujaan ei ole tarvetta viitata metodin ulkopuolella.

    Paikallinen muuttuja määritellään ilman self-määrettä - eli samoin kuin esimerkiksi kaikki muuttujat kurssin ensimmäisellä puoliskolla.

    Esimerkiksi

    class Bonuskortti:\n    def __init__(self, nimi: str, saldo: float):\n        self.nimi = nimi\n        self.saldo = saldo\n\n    def lisaa_bonus(self):\n        # Nyt muuttuja bonus on paikallinen muuttuja,\n        # eikä olion attribuutti - siihen siis ei voi\n        # viitata olion kautta\n        bonus = self.saldo * 0.25\n        self.saldo += bonus\n\n    def lisaa_superbonus(self):\n        # Myös muuttuja superbonus on paikallinen muuttuja\n        # Yleensä apumuuttujina käytetään paikallisia\n        # muuttujia, koska niihin ei ole tarvetta\n        # viitatata muissa metodeissa tai olion kautta\n        superbonus = self.saldo * 0.5\n        self.saldo += superbonus\n\n    def __str__(self):\n        return f\"Bonuskortti(nimi={self.nimi}, saldo={self.saldo})\"

    Kirjoita luokka Henkilo, jolla on ainoastaan yksi attribuutti nimi, joka asetetaan konstruktorissa.

    Lisäksi luokalle tule kirjoitaa kaksi metodia:

    Metodi anna_etunimi palauttaa henkilön etunimen ja metodi anna_sukunimi vastaavasti henkilön sukunimen.

    Voit olettaa metodeissa, että konstruktroissa annetussa nimessä on etu- ja sukunimi välilyönnillä erotettuna eikä muita nimiä.

    Esimerkki luokan käytöstä:

    if __name__ == \"__main__\":\n    pekka = Henkilo(\"Pekka Python\")\n    print(pekka.anna_etunimi())\n    print(pekka.anna_sukunimi())\n\n    pauli = Henkilo(\"Pauli Pythonen\")\n    print(pauli.anna_etunimi())\n    print(pauli.anna_sukunimi())

    Pekka\nPython\nPauli\nPythonen

    Tässä tehtävässä toteutetaan olio-ohjelmointia hyödyntäen samantapainen käyttäjän syöttämiä lukuja käsittelevä ohjelma kuin Ohjelmoinnin perusteiden osan 2 lopussa.

    Lukujen määrä

    Tee luokka Lukutilasto, joka tuntee seuraavat toiminnot:

      \n
    • metodi lisaa_luku lisää uuden luvun tilastoon
    • \n
    • metodi lukujen_maara kertoo lisättyjen lukujen määrän
    • \n

    Luokan ei tarvitse tallentaa mihinkään lisättyjä lukuja vaan riittää, että se muistaa niiden määrän. Metodin lisaa_luku ei tässä vaiheessa tarvitse edes ottaa huomioon, mikä luku lisätään tilastoon, koska ainoa tallennettava asia on lukujen määrä.

    Luokan runko on seuraava:

    class  Lukutilasto:\n    def __init__(self):\n        self.lukuja = 0\n\n    def lisaa_luku(self, luku:int):\n        pass\n\n    def lukujen_maara(self):\n        pass
    tilasto = Lukutilasto()\ntilasto.lisaa_luku(3)\ntilasto.lisaa_luku(5)\ntilasto.lisaa_luku(1)\ntilasto.lisaa_luku(2)\nprint(\"Lukujen määrä:\", tilasto.lukujen_maara())

    Lukujen määrä: 4

    Summa ja keskiarvo

    Laajenna luokkaa seuraavilla toiminnoilla:

      \n
    • metodi summa kertoo lisättyjen lukujen summan (tyhjän lukutilaston summa on 0)
    • \n
    • metodi keskiarvo kertoo lisättyjen lukujen keskiarvon (tyhjän lukutilaston keskiarvo on 0)
    • \n
    tilasto = Lukutilasto()\ntilasto.lisaa_luku(3)\ntilasto.lisaa_luku(5)\ntilasto.lisaa_luku(1)\ntilasto.lisaa_luku(2)\nprint(\"Lukujen määrä:\", tilasto.lukujen_maara())\nprint(\"Summa:\", tilasto.summa())\nprint(\"Keskiarvo:\", tilasto.keskiarvo())

    Määrä: 4\nSumma: 11\nKeskiarvo: 2.75

    Summa käyttäjältä

    Tee ohjelma, joka kysyy lukuja käyttäjältä, kunnes käyttäjä antaa luvun -1. Sitten ohjelma ilmoittaa lukujen summan.

    Ohjelmassa tulee käyttää Lukutilasto-oliota summan laskemiseen.

    HUOM: Älä muuta tässä osassa luokkaa Lukutilasto, vaan toteuta sitä hyödyntäen summan laskemiseen käytetty ohjelma.

    HUOM2: Älä kirjoita pääohjelmaa if __name__ == \"__main__\"-lohkon sisään, jotta testit toimivat!

    Anna lukuja:\n4\n2\n5\n2\n-1\nSumma: 13\nKeskiarvo: 3.25

    Monta summaa

    Muuta edellistä ohjelmaa niin, että ohjelma laskee myös parillisten ja parittomien lukujen summaa.

    HUOM: Älä edelleenkään muuta luokkaa Lukutilasto, vaan määrittele ohjelmassa kolme Lukutilasto-oliota. Laske ensimmäisen avulla kaikkien lukujen summa ja keskiarvo, toisen avulla parillisten lukujen summa ja kolmannen avulla parittomien lukujen summa.

    HUOM2: Älä kirjoita pääohjelmaa if __name__ == \"__main__\"-lohkon sisään, jotta testit toimivat!

    Ohjelman tulee toimia seuraavasti:

    Anna lukuja:\n4\n2\n5\n2\n-1\nSumma: 13\nKeskiarvo: 3.25\nParillisten summa: 8\nParittomien summa: 5

    ","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/4-metodit-omissa-luokissa.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten metodit toimivat luokissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa metodeita omiin luokkiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät, mitä tarkoitetaan kapseloinnilla ja asiakkaalla olio-ohjelmoinnissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vain attribuutteja sisältävät luokat eivät käytännössä eroa juurikaan sanakirjoista. Seuraavassa esimerkissä on esitetty pankkitiliä mallintava rakenne sekä oman luokan että sanakirjan avulla toteutettuna:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkki omaa luokkaa käyttäen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosikorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosikorko\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkki sanakirjaa käyttäen"}]},{"type":"text","value":"\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"tilinumero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"omistaja\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"saldo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"vuosikorko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjaa käyttäen rakenteen toteutus on huomattavasti suoraviivaisempi ja koodi on lyhyempi. Luokan hyötynä tässä tapauksessa on, että se määrittelee rakenteen \"tiukemmin\", jolloin kaikki luokasta muodostetut oliot ovat rakenteeltaan samanlaisia. Luokka on lisäksi nimetty: oliota muodostaessa viitataan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokkaan ja olion tyyppi on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":" eikä sanakirja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokilla on lisäksi etuna, että niihin voidaan lisätä attribuuttien lisäksi myös toiminnallisuutta. Yksi olio-ohjelmoinnin periaatteista onkin, että olioon on yhdistetty sekä tallennettavat tiedot että operaatiot, joilla tietoa voidaan käsitellä."}]},{"type":"element","tagName":"h2","properties":{"id":"metodit-luokissa","style":"position:relative;"},"children":[{"type":"text","value":"Metodit luokissa"},{"type":"element","tagName":"a","properties":{"href":"#metodit-luokissa","ariaLabel":"metodit luokissa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi tarkoittaa luokkaan sidottua aliohjelmaa. Yleensä metodin toiminta kohdistuu vain yhteen olioon. Metodi kirjoitetaan luokan sisälle, ja se voi käsitellä attribuutteja kuten mitä tahansa muuttujia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan esimerkkinä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokan metodia, joka lisää koron pankkitilille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosikorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosikorko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi lisää koron tilin saldoon"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko\n\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1522.5"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"text","value":" kertoo olion saldon vuosikorkoprosentilla ja lisää tuloksen nykyiseen saldoon. Metodin toiminta kohdistuu siihen olioon, jonka kautta sitä kutsutaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan vielä toinen esimerkki, jossa luokasta on muodostettu useampi olio:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokka Pankkitili on määritelty edellisessä esimerkissä"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"99999-999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.05"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaulin_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1111-222\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pauli Paulinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.001"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään korko Pekalle ja Pirjolle, mutta ei Paulille"}]},{"type":"text","value":"\npekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikki"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pirjon_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paulin_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"1522.5\n1575.0\n1500.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korko lisätään vain siihen tiliin, jonka kautta metodia kutsutaan. Esimerkistä huomataan, että Pekalle ja Pirjolle lisätään eri korkoprosentit ja Paulin tilin saldo ei muutu ollenkaan, koska olion "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paulin_tili"}]},{"type":"text","value":" kautta ei kutsuta metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h2","properties":{"id":"kapselointi","style":"position:relative;"},"children":[{"type":"text","value":"Kapselointi"},{"type":"element","tagName":"a","properties":{"href":"#kapselointi","ariaLabel":"kapselointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnin yhteydessä puhutaan usein olioiden "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"asiakkaista"}]},{"type":"text","value":". Asiakkaalla (client) tarkoitetaan koodin osaa, joka muodostaa olion ja käyttää sen palveluita kutsumalla metodeita. Kun olion tietosisältöä käsitellään vain olion tarjoamien metodien avulla, voidaan varmistua siitä, että olion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sisäinen eheys"}]},{"type":"text","value":" säilyy. Käytännössä tämä tarkoittaa esimerkiksi sitä, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":"-luokassa tarjotaan metodi, jolla tililtä nostetaan rahaa, sen sijaan, että asiakas käsittelisi suoraan attribuuttia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":". Tässä metodissa voidaan sitten esimerkiksi varmistaa, ettei tililtä nosteta katetta enempää rahaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosikorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosikorko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi lisää koron tilin saldoon"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vuosikorko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodilla \"nostetaan\" tililtä rahaa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa true, jos nosto onnistuu, muuten False"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nosto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nostosumma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nostosumma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" nostosumma\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\npekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto onnistui, tilin saldo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yritetään uudestaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto onnistui, tilin saldo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nosto onnistui, tilin saldo on nyt 500.0\nNosto ei onnistunut, rahaa ei ole tarpeeksi."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olion sisäisen eheyden säilyttämistä ja sopivien metodien tarjoamista asiakkaalle kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kapseloinniksi"}]},{"type":"text","value":". Tämä tarkoittaa, että olion toteutus piilotetaan asiakkaalta ja olio tarjoaa ulkopuolelle metodit, joiden avulla tietoja voi käsitellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pelkkä metodin lisäys ei kuitenkaan piilota attribuuttia: vaikka luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":" onkin lisätty metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nosto"}]},{"type":"text","value":" rahan nostamiseksi, asiakas voi edelleen muokata "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":"-attribuutin arvoa suoraan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pekan_tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-678\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1500.0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.015"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yritetään nostaa 2000"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto onnistui, tilin saldo on nyt\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nostetaan \"väkisin\" 2000"}]},{"type":"text","value":"\n pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2000"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Saldo nyt:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pekan_tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelma voidaan ainakin osittain ratkaista piilottamalla attribuutit asiakkaalta. Käytännön toteutukseen palataan tarkemmin ensi viikolla."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Vähenevä laskuri","tmcname":"osa08-10_vaheneva_laskuri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä on useampi osa. Jokainen osa vastaa yhtä tehtäväpistettä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjan mukana tulee osittain valmiiksi toteutettu luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"VahenevaLaskuri"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"VahenevaLaskuri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvo_alussa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvo_alussa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta_arvo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ja tänne muut metodit"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa käytetään seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 10\narvo: 9\narvo: 8"}]}]},{"type":"element","tagName":"h3","properties":{"id":"laskurin-vahentaminen","style":"position:relative;"},"children":[{"type":"text","value":"Laskurin vähentäminen"},{"type":"element","tagName":"a","properties":{"href":"#laskurin-vahentaminen","ariaLabel":"laskurin vahentaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä luokan runkoon metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"text","value":" toteutus sellaiseksi, että se vähentää kutsuttavan olion oliomuuttujan arvoa yhdellä. Kun olet toteuttanut metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"text","value":", äskeisen pääohjelman tulee toimia esimerkkitulosteen mukaan."}]},{"type":"element","tagName":"h3","properties":{"id":"laskurin-arvo-ei-saa-olla-negatiivinen","style":"position:relative;"},"children":[{"type":"text","value":"Laskurin arvo ei saa olla negatiivinen"},{"type":"element","tagName":"a","properties":{"href":"#laskurin-arvo-ei-saa-olla-negatiivinen","ariaLabel":"laskurin arvo ei saa olla negatiivinen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vahenna"}]},{"type":"text","value":" toteutus sellaiseksi, ettei laskurin arvo mene koskaan negatiiviseksi: jos laskurin arvo on jo 0, sitä ei enää vähennetä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 2\narvo: 1\narvo: 0\narvo: 0"}]}]},{"type":"element","tagName":"h3","properties":{"id":"laskurin-arvon-nollaus","style":"position:relative;"},"children":[{"type":"text","value":"Laskurin arvon nollaus"},{"type":"element","tagName":"a","properties":{"href":"#laskurin-arvon-nollaus","ariaLabel":"laskurin arvon nollaus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee laskurille metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nollaa"}]},{"type":"text","value":", joka nollaa laskurin arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nollaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 100\narvo: 0"}]}]},{"type":"element","tagName":"h3","properties":{"id":"alkuperaisen-arvon-palautus","style":"position:relative;"},"children":[{"type":"text","value":"Alkuperäisen arvon palautus"},{"type":"element","tagName":"a","properties":{"href":"#alkuperaisen-arvon-palautus","ariaLabel":"alkuperaisen arvon palautus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee laskurille metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"palauta_alkuperainen_arvo()"}]},{"type":"text","value":" joka palauttaa laskurille sen alkuperäisen arvon:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"laskuri "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" VahenevaLaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vahenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"palauta_alkuperainen_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlaskuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_arvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvo: 51\narvo: 55"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä esimerkkiä luokasta, joka mallintaa pelaajan ennätystulosta. Luokkaan on kirjoitettu erilliset metodit, joilla voidaan tarkastaa, ovatko annetut parametrit sopivia. Metodeja kutsutaan heti konstruktorissa. Näin varmistetaan luotavan olion sisäinen eheys."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Ennatystulos"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Oletusarvot"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1900"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi_ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelaaja\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pvm_ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet_ok"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Apumetodit, joilla tarkistetaan ovatko syötteet ok"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi_ok"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nimessä vähintään kaksi merkkiä"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pvm_ok"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"try"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kuukausi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" paiva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"except"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Poikkeus, jos yritetään muodostaa epäkelpo päivämäärä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisteet_ok"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" pisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n tulos1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Ennatystulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"235"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Epäkelpo arvo päivämäärälle"}]},{"type":"text","value":"\n tulos2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Ennatystulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Piia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"13"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4555"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tulos2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paivamaara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostaa oletusarvon 1900-01-01"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"235\nPekka\n2020-11-01\n4555\nPiia\n1900-01-01"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkistä huomataan, että myös olion omiin metodeihin pitää viitata "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreen avulla, kun niitä kutsutaan konstruktorista. Luokkiin voidaan kirjoittaa myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"staattisia metodeita"}]},{"type":"text","value":" eli metodeja, joita voidaan kutsua ilman, että luokasta muodostetaan oliota. Tähän palataan kuitenkin tarkemmin ensi viikolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrettä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" käytetään kuitenkin vain silloin, kun viitataan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olion piirteisiin"}]},{"type":"text","value":" (eli metodeihin tai olion attribuutteihin). Olion metodeissa voidaan käyttää myös paikallisia muuttujia. Tämä on suositeltavaa, jos muuttujaan ei ole tarvetta viitata metodin ulkopuolella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Paikallinen muuttuja määritellään ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määrettä - eli samoin kuin esimerkiksi kaikki muuttujat kurssin ensimmäisellä puoliskolla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Bonuskortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_bonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nyt muuttuja bonus on paikallinen muuttuja,"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# eikä olion attribuutti - siihen siis ei voi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viitata olion kautta"}]},{"type":"text","value":"\n bonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.25"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" bonus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_superbonus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Myös muuttuja superbonus on paikallinen muuttuja"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yleensä apumuuttujina käytetään paikallisia"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# muuttujia, koska niihin ei ole tarvetta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# viitatata muissa metodeissa tai olion kautta"}]},{"type":"text","value":"\n superbonus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.5"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" superbonus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Bonuskortti(nimi="}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", saldo="}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Etu- ja sukunimi","tmcname":"osa08-10b_etu_ja_sukunimi"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":", jolla on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ainoastaan yksi attribuutti"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":", joka asetetaan konstruktorissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokalle tule kirjoitaa kaksi metodia:"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anna_etunimi"}]},{"type":"text","value":" palauttaa henkilön etunimen ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"anna_sukunimi"}]},{"type":"text","value":" vastaavasti henkilön sukunimen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Voit olettaa metodeissa, että konstruktroissa annetussa nimessä on etu- ja sukunimi välilyönnillä erotettuna eikä muita nimiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_sukunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n pauli "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pauli Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pauli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_etunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pauli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"anna_sukunimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka\nPython\nPauli\nPythonen"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lukutilasto","tmcname":"osa08-11_lukutilasto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä toteutetaan olio-ohjelmointia hyödyntäen samantapainen käyttäjän syöttämiä lukuja käsittelevä ohjelma kuin Ohjelmoinnin perusteiden "},{"type":"element","tagName":"a","properties":{"href":"/osa-2/4-yksinkertainen-silmukka#programming-exercise-lukujen-kasittelya"},"children":[{"type":"text","value":"osan 2 lopussa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"h3","properties":{"id":"lukujen-maara","style":"position:relative;"},"children":[{"type":"text","value":"Lukujen määrä"},{"type":"element","tagName":"a","properties":{"href":"#lukujen-maara","ariaLabel":"lukujen maara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":", joka tuntee seuraavat toiminnot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_luku"}]},{"type":"text","value":" lisää uuden luvun tilastoon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lukujen_maara"}]},{"type":"text","value":" kertoo lisättyjen lukujen määrän"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan ei tarvitse tallentaa mihinkään lisättyjä lukuja vaan riittää, että se muistaa niiden määrän. Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_luku"}]},{"type":"text","value":" ei tässä vaiheessa tarvitse edes ottaa huomioon, mikä luku lisätään tilastoon, koska ainoa tallennettava asia on lukujen määrä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan runko on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lukuja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_luku"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lukujen_maara"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilasto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lukutilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen määrä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lukujen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lukujen määrä: 4"}]}]},{"type":"element","tagName":"h3","properties":{"id":"summa-ja-keskiarvo","style":"position:relative;"},"children":[{"type":"text","value":"Summa ja keskiarvo"},{"type":"element","tagName":"a","properties":{"href":"#summa-ja-keskiarvo","ariaLabel":"summa ja keskiarvo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna luokkaa seuraavilla toiminnoilla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"summa"}]},{"type":"text","value":" kertoo lisättyjen lukujen summan (tyhjän lukutilaston summa on 0)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"keskiarvo"}]},{"type":"text","value":" kertoo lisättyjen lukujen keskiarvon (tyhjän lukutilaston keskiarvo on 0)"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tilasto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lukutilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_luku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lukujen määrä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lukujen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Summa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Keskiarvo:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"keskiarvo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Määrä: 4\nSumma: 11\nKeskiarvo: 2.75"}]}]},{"type":"element","tagName":"h3","properties":{"id":"summa-kayttajalta","style":"position:relative;"},"children":[{"type":"text","value":"Summa käyttäjältä"},{"type":"element","tagName":"a","properties":{"href":"#summa-kayttajalta","ariaLabel":"summa kayttajalta permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelma, joka kysyy lukuja käyttäjältä, kunnes käyttäjä antaa luvun -1. Sitten ohjelma ilmoittaa lukujen summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelmassa tulee käyttää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":"-oliota summan laskemiseen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM: Älä muuta tässä osassa luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":", vaan toteuta sitä hyödyntäen summan laskemiseen käytetty ohjelma."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM2: Älä kirjoita pääohjelmaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkon sisään, jotta testit toimivat!"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lukuja:\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma: 13\nKeskiarvo: 3.25"}]}]},{"type":"element","tagName":"h3","properties":{"id":"monta-summaa","style":"position:relative;"},"children":[{"type":"text","value":"Monta summaa"},{"type":"element","tagName":"a","properties":{"href":"#monta-summaa","ariaLabel":"monta summaa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta edellistä ohjelmaa niin, että ohjelma laskee myös parillisten ja parittomien lukujen summaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM: Älä edelleenkään muuta luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":", vaan määrittele ohjelmassa kolme "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lukutilasto"}]},{"type":"text","value":"-oliota. Laske ensimmäisen avulla kaikkien lukujen summa ja keskiarvo, toisen avulla parillisten lukujen summa ja kolmannen avulla parittomien lukujen summa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"HUOM2: Älä kirjoita pääohjelmaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"if __name__ == \"__main__\""}]},{"type":"text","value":"-lohkon sisään, jotta testit toimivat!"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulee toimia seuraavasti:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Anna lukuja:\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"4"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"5"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"-1"}]},{"type":"text","value":"\nSumma: 13\nKeskiarvo: 3.25\nParillisten summa: 8\nParittomien summa: 5"}]}]}]}]},"html":"

    Tämän osion jälkeen:

      \n
    • Tiedät, miten metodit toimivat luokissa
    • \n
    • Osaat kirjoittaa metodeita omiin luokkiin
    • \n
    • Ymmärrät, mitä tarkoitetaan kapseloinnilla ja asiakkaalla olio-ohjelmoinnissa
    • \n

    Vain attribuutteja sisältävät luokat eivät käytännössä eroa juurikaan sanakirjoista. Seuraavassa esimerkissä on esitetty pankkitiliä mallintava rakenne sekä oman luokan että sanakirjan avulla toteutettuna:

    # Esimerkki omaa luokkaa käyttäen\nclass Pankkitili:\n\n    def __init__(self, tilinumero: str, omistaja: str, saldo: float, vuosikorko: float):\n        self.tilinumero = tilinumero\n        self.omistaja = omistaja\n        self.saldo = saldo\n        self.vuosikorko = vuosikorko\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)
    # Esimerkki sanakirjaa käyttäen\npekan_tili = {\"tilinumero\": \"12345-678\", \"omistaja\": \"Pekka Python\", \"saldo\": 1500.0, \"vuosikorko\": 0.0}

    Sanakirjaa käyttäen rakenteen toteutus on huomattavasti suoraviivaisempi ja koodi on lyhyempi. Luokan hyötynä tässä tapauksessa on, että se määrittelee rakenteen \"tiukemmin\", jolloin kaikki luokasta muodostetut oliot ovat rakenteeltaan samanlaisia. Luokka on lisäksi nimetty: oliota muodostaessa viitataan Pankkitili-luokkaan ja olion tyyppi on Pankkitili eikä sanakirja.

    Luokilla on lisäksi etuna, että niihin voidaan lisätä attribuuttien lisäksi myös toiminnallisuutta. Yksi olio-ohjelmoinnin periaatteista onkin, että olioon on yhdistetty sekä tallennettavat tiedot että operaatiot, joilla tietoa voidaan käsitellä.

    Metodit luokissa

    Metodi tarkoittaa luokkaan sidottua aliohjelmaa. Yleensä metodin toiminta kohdistuu vain yhteen olioon. Metodi kirjoitetaan luokan sisälle, ja se voi käsitellä attribuutteja kuten mitä tahansa muuttujia.

    Katsotaan esimerkkinä Pankkitili-luokan metodia, joka lisää koron pankkitilille:

    class Pankkitili:\n\n    def __init__(self, tilinumero: str, omistaja: str, saldo: float, vuosikorko: float):\n        self.tilinumero = tilinumero\n        self.omistaja = omistaja\n        self.saldo = saldo\n        self.vuosikorko = vuosikorko\n\n    # Metodi lisää koron tilin saldoon\n    def lisaa_korko(self):\n        self.saldo += self.saldo * self.vuosikorko\n\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\npekan_tili.lisaa_korko()\nprint(pekan_tili.saldo)

    1522.5

    Metodi lisaa_korko kertoo olion saldon vuosikorkoprosentilla ja lisää tuloksen nykyiseen saldoon. Metodin toiminta kohdistuu siihen olioon, jonka kautta sitä kutsutaan.

    Katsotaan vielä toinen esimerkki, jossa luokasta on muodostettu useampi olio:

    # Luokka Pankkitili on määritelty edellisessä esimerkissä\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\npirjon_tili = Pankkitili(\"99999-999\", \"Pirjo Pythonen\", 1500.0, 0.05)\npaulin_tili = Pankkitili(\"1111-222\", \"Pauli Paulinen\", 1500.0, 0.001)\n\n# Lisätään korko Pekalle ja Pirjolle, mutta ei Paulille\npekan_tili.lisaa_korko()\npirjon_tili.lisaa_korko()\n\n# Tulostetaan kaikki\nprint(pekan_tili.saldo)\nprint(pirjon_tili.saldo)\nprint(paulin_tili.saldo)

    1522.5\n1575.0\n1500.0

    Korko lisätään vain siihen tiliin, jonka kautta metodia kutsutaan. Esimerkistä huomataan, että Pekalle ja Pirjolle lisätään eri korkoprosentit ja Paulin tilin saldo ei muutu ollenkaan, koska olion paulin_tili kautta ei kutsuta metodia lisaa_korko.

    Kapselointi

    Olio-ohjelmoinnin yhteydessä puhutaan usein olioiden asiakkaista. Asiakkaalla (client) tarkoitetaan koodin osaa, joka muodostaa olion ja käyttää sen palveluita kutsumalla metodeita. Kun olion tietosisältöä käsitellään vain olion tarjoamien metodien avulla, voidaan varmistua siitä, että olion sisäinen eheys säilyy. Käytännössä tämä tarkoittaa esimerkiksi sitä, että Pankkitili-luokassa tarjotaan metodi, jolla tililtä nostetaan rahaa, sen sijaan, että asiakas käsittelisi suoraan attribuuttia saldo. Tässä metodissa voidaan sitten esimerkiksi varmistaa, ettei tililtä nosteta katetta enempää rahaa.

    Esimerkiksi:

    class Pankkitili:\n\n    def __init__(self, tilinumero: str, omistaja: str, saldo: float, vuosikorko: float):\n        self.tilinumero = tilinumero\n        self.omistaja = omistaja\n        self.saldo = saldo\n        self.vuosikorko = vuosikorko\n\n    # Metodi lisää koron tilin saldoon\n    def lisaa_korko(self):\n        self.saldo += self.saldo * self.vuosikorko\n\n    # Metodilla \"nostetaan\" tililtä rahaa\n    # Metodi palauttaa true, jos nosto onnistuu, muuten False\n    def nosto(self, nostosumma: float):\n        if nostosumma <= self.saldo:\n            self.saldo -= nostosumma\n            return True\n\n        return False\n\npekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\n\nif pekan_tili.nosto(1000):\n    print(\"Nosto onnistui, tilin saldo on nyt\", pekan_tili.saldo)\nelse:\n    print(\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\")\n\n# Yritetään uudestaan\nif pekan_tili.nosto(1000):\n    print(\"Nosto onnistui, tilin saldo on nyt\", pekan_tili.saldo)\nelse:\n    print(\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\")

    Nosto onnistui, tilin saldo on nyt 500.0\nNosto ei onnistunut, rahaa ei ole tarpeeksi.

    Olion sisäisen eheyden säilyttämistä ja sopivien metodien tarjoamista asiakkaalle kutsutaan kapseloinniksi. Tämä tarkoittaa, että olion toteutus piilotetaan asiakkaalta ja olio tarjoaa ulkopuolelle metodit, joiden avulla tietoja voi käsitellä.

    Pelkkä metodin lisäys ei kuitenkaan piilota attribuuttia: vaikka luokkaan Pankkitili onkin lisätty metodi nosto rahan nostamiseksi, asiakas voi edelleen muokata saldo-attribuutin arvoa suoraan:

    pekan_tili = Pankkitili(\"12345-678\", \"Pekka Python\", 1500.0, 0.015)\n\n# Yritetään nostaa 2000\nif pekan_tili.nosto(2000):\n    print(\"Nosto onnistui, tilin saldo on nyt\", pekan_tili.saldo)\nelse:\n    print(\"Nosto ei onnistunut, rahaa ei ole tarpeeksi.\")\n\n    # Nostetaan \"väkisin\" 2000\n    pekan_tili.saldo -= 2000\n\nprint(\"Saldo nyt:\", pekan_tili.saldo)

    Ongelma voidaan ainakin osittain ratkaista piilottamalla attribuutit asiakkaalta. Käytännön toteutukseen palataan tarkemmin ensi viikolla.

    Tässä tehtävässä on useampi osa. Jokainen osa vastaa yhtä tehtäväpistettä.

    Tehtäväpohjan mukana tulee osittain valmiiksi toteutettu luokka VahenevaLaskuri:

    class VahenevaLaskuri:\n    def __init__(self, arvo_alussa: int):\n        self.arvo = arvo_alussa\n\n    def tulosta_arvo(self):\n        print(\"arvo:\", self.arvo)\n\n    def vahenna(self):\n        pass\n\n    # ja tänne muut metodit

    Luokkaa käytetään seuraavasti

    laskuri = VahenevaLaskuri(10)\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()

    arvo: 10\narvo: 9\narvo: 8

    Laskurin vähentäminen

    Täydennä luokan runkoon metodin vahenna toteutus sellaiseksi, että se vähentää kutsuttavan olion oliomuuttujan arvoa yhdellä. Kun olet toteuttanut metodin vahenna, äskeisen pääohjelman tulee toimia esimerkkitulosteen mukaan.

    Laskurin arvo ei saa olla negatiivinen

    Täydennä metodin vahenna toteutus sellaiseksi, ettei laskurin arvo mene koskaan negatiiviseksi: jos laskurin arvo on jo 0, sitä ei enää vähennetä.

    laskuri = VahenevaLaskuri(2)\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()

    arvo: 2\narvo: 1\narvo: 0\narvo: 0

    Laskurin arvon nollaus

    Tee laskurille metodi nollaa, joka nollaa laskurin arvon:

    laskuri = VahenevaLaskuri(100)\nlaskuri.tulosta_arvo()\nlaskuri.nollaa()\nlaskuri.tulosta_arvo()

    arvo: 100\narvo: 0

    Alkuperäisen arvon palautus

    Tee laskurille metodi palauta_alkuperainen_arvo() joka palauttaa laskurille sen alkuperäisen arvon:

    laskuri = VahenevaLaskuri(55)\nlaskuri.vahenna()\nlaskuri.vahenna()\nlaskuri.vahenna()\nlaskuri.vahenna()\nlaskuri.tulosta_arvo()\nlaskuri.palauta_alkuperainen_arvo()\nlaskuri.tulosta_arvo()

    arvo: 51\narvo: 55

    Tarkastellaan vielä esimerkkiä luokasta, joka mallintaa pelaajan ennätystulosta. Luokkaan on kirjoitettu erilliset metodit, joilla voidaan tarkastaa, ovatko annetut parametrit sopivia. Metodeja kutsutaan heti konstruktorissa. Näin varmistetaan luotavan olion sisäinen eheys.

    from datetime import date\n\nclass Ennatystulos:\n\n    def __init__(self, pelaaja: str, paiva: int, kuukausi: int, vuosi: int, pisteet: int):\n        # Oletusarvot\n        self.pelaaja = \"\"\n        self.paivamaara = date(1900, 1, 1)\n        self.pisteet = 0\n\n        if self.nimi_ok(pelaaja):\n            self.pelaaja = pelaaja\n\n        if self.pvm_ok(paiva, kuukausi, vuosi):\n            self.paivamaara = date(vuosi, kuukausi, paiva)\n\n        if self.pisteet_ok(pisteet):\n            self.pisteet = pisteet\n\n    # Apumetodit, joilla tarkistetaan ovatko syötteet ok\n    def nimi_ok(self, nimi: str):\n        return len(nimi) >= 2 # Nimessä vähintään kaksi merkkiä\n\n    def pvm_ok(self, paiva, kuukausi, vuosi):\n        try:\n            date(vuosi, kuukausi, paiva)\n            return True\n        except:\n            # Poikkeus, jos yritetään muodostaa epäkelpo päivämäärä\n            return False\n\n    def pisteet_ok(self, pisteet):\n        return pisteet >= 0\n\nif __name__ == \"__main__\":\n    tulos1 = Ennatystulos(\"Pekka\", 1, 11, 2020, 235)\n    print(tulos1.pisteet)\n    print(tulos1.pelaaja)\n    print(tulos1.paivamaara)\n\n    # Epäkelpo arvo päivämäärälle\n    tulos2 = Ennatystulos(\"Piia\", 4, 13, 2019, 4555)\n    print(tulos2.pisteet)\n    print(tulos2.pelaaja)\n    print(tulos2.paivamaara) # Tulostaa oletusarvon 1900-01-01

    235\nPekka\n2020-11-01\n4555\nPiia\n1900-01-01

    Esimerkistä huomataan, että myös olion omiin metodeihin pitää viitata self-määreen avulla, kun niitä kutsutaan konstruktorista. Luokkiin voidaan kirjoittaa myös staattisia metodeita eli metodeja, joita voidaan kutsua ilman, että luokasta muodostetaan oliota. Tähän palataan kuitenkin tarkemmin ensi viikolla.

    Määrettä self käytetään kuitenkin vain silloin, kun viitataan olion piirteisiin (eli metodeihin tai olion attribuutteihin). Olion metodeissa voidaan käyttää myös paikallisia muuttujia. Tämä on suositeltavaa, jos muuttujaan ei ole tarvetta viitata metodin ulkopuolella.

    Paikallinen muuttuja määritellään ilman self-määrettä - eli samoin kuin esimerkiksi kaikki muuttujat kurssin ensimmäisellä puoliskolla.

    Esimerkiksi

    class Bonuskortti:\n    def __init__(self, nimi: str, saldo: float):\n        self.nimi = nimi\n        self.saldo = saldo\n\n    def lisaa_bonus(self):\n        # Nyt muuttuja bonus on paikallinen muuttuja,\n        # eikä olion attribuutti - siihen siis ei voi\n        # viitata olion kautta\n        bonus = self.saldo * 0.25\n        self.saldo += bonus\n\n    def lisaa_superbonus(self):\n        # Myös muuttuja superbonus on paikallinen muuttuja\n        # Yleensä apumuuttujina käytetään paikallisia\n        # muuttujia, koska niihin ei ole tarvetta\n        # viitatata muissa metodeissa tai olion kautta\n        superbonus = self.saldo * 0.5\n        self.saldo += superbonus\n\n    def __str__(self):\n        return f\"Bonuskortti(nimi={self.nimi}, saldo={self.saldo})\"

    Kirjoita luokka Henkilo, jolla on ainoastaan yksi attribuutti nimi, joka asetetaan konstruktorissa.

    Lisäksi luokalle tule kirjoitaa kaksi metodia:

    Metodi anna_etunimi palauttaa henkilön etunimen ja metodi anna_sukunimi vastaavasti henkilön sukunimen.

    Voit olettaa metodeissa, että konstruktroissa annetussa nimessä on etu- ja sukunimi välilyönnillä erotettuna eikä muita nimiä.

    Esimerkki luokan käytöstä:

    if __name__ == \"__main__\":\n    pekka = Henkilo(\"Pekka Python\")\n    print(pekka.anna_etunimi())\n    print(pekka.anna_sukunimi())\n\n    pauli = Henkilo(\"Pauli Pythonen\")\n    print(pauli.anna_etunimi())\n    print(pauli.anna_sukunimi())

    Pekka\nPython\nPauli\nPythonen

    Tässä tehtävässä toteutetaan olio-ohjelmointia hyödyntäen samantapainen käyttäjän syöttämiä lukuja käsittelevä ohjelma kuin Ohjelmoinnin perusteiden osan 2 lopussa.

    Lukujen määrä

    Tee luokka Lukutilasto, joka tuntee seuraavat toiminnot:

      \n
    • metodi lisaa_luku lisää uuden luvun tilastoon
    • \n
    • metodi lukujen_maara kertoo lisättyjen lukujen määrän
    • \n

    Luokan ei tarvitse tallentaa mihinkään lisättyjä lukuja vaan riittää, että se muistaa niiden määrän. Metodin lisaa_luku ei tässä vaiheessa tarvitse edes ottaa huomioon, mikä luku lisätään tilastoon, koska ainoa tallennettava asia on lukujen määrä.

    Luokan runko on seuraava:

    class  Lukutilasto:\n    def __init__(self):\n        self.lukuja = 0\n\n    def lisaa_luku(self, luku:int):\n        pass\n\n    def lukujen_maara(self):\n        pass
    tilasto = Lukutilasto()\ntilasto.lisaa_luku(3)\ntilasto.lisaa_luku(5)\ntilasto.lisaa_luku(1)\ntilasto.lisaa_luku(2)\nprint(\"Lukujen määrä:\", tilasto.lukujen_maara())

    Lukujen määrä: 4

    Summa ja keskiarvo

    Laajenna luokkaa seuraavilla toiminnoilla:

      \n
    • metodi summa kertoo lisättyjen lukujen summan (tyhjän lukutilaston summa on 0)
    • \n
    • metodi keskiarvo kertoo lisättyjen lukujen keskiarvon (tyhjän lukutilaston keskiarvo on 0)
    • \n
    tilasto = Lukutilasto()\ntilasto.lisaa_luku(3)\ntilasto.lisaa_luku(5)\ntilasto.lisaa_luku(1)\ntilasto.lisaa_luku(2)\nprint(\"Lukujen määrä:\", tilasto.lukujen_maara())\nprint(\"Summa:\", tilasto.summa())\nprint(\"Keskiarvo:\", tilasto.keskiarvo())

    Määrä: 4\nSumma: 11\nKeskiarvo: 2.75

    Summa käyttäjältä

    Tee ohjelma, joka kysyy lukuja käyttäjältä, kunnes käyttäjä antaa luvun -1. Sitten ohjelma ilmoittaa lukujen summan.

    Ohjelmassa tulee käyttää Lukutilasto-oliota summan laskemiseen.

    HUOM: Älä muuta tässä osassa luokkaa Lukutilasto, vaan toteuta sitä hyödyntäen summan laskemiseen käytetty ohjelma.

    HUOM2: Älä kirjoita pääohjelmaa if __name__ == \"__main__\"-lohkon sisään, jotta testit toimivat!

    Anna lukuja:\n4\n2\n5\n2\n-1\nSumma: 13\nKeskiarvo: 3.25

    Monta summaa

    Muuta edellistä ohjelmaa niin, että ohjelma laskee myös parillisten ja parittomien lukujen summaa.

    HUOM: Älä edelleenkään muuta luokkaa Lukutilasto, vaan määrittele ohjelmassa kolme Lukutilasto-oliota. Laske ensimmäisen avulla kaikkien lukujen summa ja keskiarvo, toisen avulla parillisten lukujen summa ja kolmannen avulla parittomien lukujen summa.

    HUOM2: Älä kirjoita pääohjelmaa if __name__ == \"__main__\"-lohkon sisään, jotta testit toimivat!

    Ohjelman tulee toimia seuraavasti:

    Anna lukuja:\n4\n2\n5\n2\n-1\nSumma: 13\nKeskiarvo: 3.25\nParillisten summa: 8\nParittomien summa: 5

    ","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/4-metodit-omissa-luokissa.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-8/5-lisaa-esimerkkeja/page-data.json b/page-data/osa-8/5-lisaa-esimerkkeja/page-data.json index a1a3861d2..7cae21e8c 100644 --- a/page-data/osa-8/5-lisaa-esimerkkeja/page-data.json +++ b/page-data/osa-8/5-lisaa-esimerkkeja/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-8/5-lisaa-esimerkkeja", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda aiempaa monipuolisempia luokkia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat määritellä luokkaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"esimerkki-1-luokka-suorakulmio","style":"position:relative;"},"children":[{"type":"text","value":"Esimerkki 1: Luokka Suorakulmio"},{"type":"element","tagName":"a","properties":{"href":"#esimerkki-1-luokka-suorakulmio","ariaLabel":"esimerkki 1 luokka suorakulmio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaksi luokkaa, joka mallintaa suorakulmiota kaksiulotteisessa koordinaatistossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vasen_ylakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_alakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pinta_ala"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piiri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"siirra"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"x_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"y_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"x_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"y_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun suorakulmio luodaan, konstruktorille annetaan kaksi tuplea: vasemman yläkulman ja oikean alakulman sijainti (x- ja y-koordinaatit). Konstruktori laskee tämän perusteella suorakulmion leveyden ja korkeuden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pinta_ala"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"piiri"}]},{"type":"text","value":" laskevat suorakulmion pinta-alan ja piirin korkeuden ja leveyden perusteella. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"siirra"}]},{"type":"text","value":" puolestaan siirtää suorakulmiota koordinaatistossa annetun verran x- ja y-suunnissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että suorakulmio esitetään koordinaatistossa, jossa x-koordinaatit kasvavat vasemmalta oikealle ja y-koordinaatit kasvavat ylhäältä alaspäin. Tämä on usein käytetty koordinaatisto ohjelmoinnissa, koska on luontevaa esittää tietokoneen näyttö niin, että vasemman yläkulman x- ja y-koordinaatti on 0."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi testaa luokkaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"piiri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pinta_ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsuorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirra"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(1, 1)\n(4, 3)\n3\n2\n10\n6\n(4, 4)\n(7, 6)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"olion-tulostaminen","style":"position:relative;"},"children":[{"type":"text","value":"Olion tulostaminen"},{"type":"element","tagName":"a","properties":{"href":"#olion-tulostaminen","ariaLabel":"olion tulostaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun omasta luokasta luotu olio tulostetaan sellaisenaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolla, lopputulos ei ole kovin selkeä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa jotain seuraavankaltaista:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"<"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":".Suorakulmio object at 0x000002D7BF148A90>"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järkevämpi tulostus saadaan lisäämällä luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa ymmärrettävän kuvauksen olion tilasta merkkijonona. Kun tämä metodi on määritelty, metodin palauttama kuvaus oliosta tulee näkyviin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokan muu sisältö tähän kuten ennenkin..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa olion tilan merkkijonona"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"suorakulmio "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ... "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komento tuottaa luettavan lopputuloksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suorakulmio (1, 1) ... (4, 3)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" kutsutaan yleisemmin silloin, kun oliosta muodostetaan merkkijonokuvaus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"-funktiolla. Seuraava koodi esittelee asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkuvaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suorakulmio (1, 1) ... (4, 3)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" lisäksi olioon voidaan määritellä samantapainen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":", joka antaa teknisen kuvauksen olion tilasta. Tutustumme tähän metodiin tarkemmin myöhemmin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sekuntikello","tmcname":"osa08-11a_sekuntikello"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on mukana luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sekuntikello"}]},{"type":"text","value":" runko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sekuntikello"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sekunnit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"minuutit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna luokkaa siten, että se toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sekuntikello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3600"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"00:00\n00:01\n00:02\n... tässä välissä monta riviä\n00:59\n01:00\n01:01\n... tässä välissä erittäin monta riviä\n59:58\n59:59\n00:00\n00:01"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" vie siis kelloa sekunnin eteenpäin, ja sekä sekuntien että minuuttien arvo on suuruudeltaan korkeintaan 59. Lisäksi oliossa tulee olla metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka näyttää kellonajan yllä olevassa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje:"}]},{"type":"text","value":" metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" testailua voi helpottaa asettamalla tilapäisesti konstruktorissa sekunneille ja minuuteille valmiiksi jonkin suuremman arvon kuin 0."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kello","tmcname":"osa08-12_kello"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta edellistä tehtävää laajentava luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kello"}]},{"type":"text","value":", joka toimii seuraavaan tapaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"59"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aseta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n23:59:55\n23:59:56\n23:59:57\n23:59:58\n23:59:59\n00:00:00\n00:00:01\n12:05:00\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktori siis antaa kellon tunneille, minuuteille ja sekunneille alkuarvot. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" vie kelloa sekunnin eteenpäin ja metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aseta"}]},{"type":"text","value":" voi asettaa kellon tunneille ja minuuteille uuden arvon ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nollata sekunnit"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Maksukortti","tmcname":"osa08-13_maksukortti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Helsingin Yliopiston opiskelijaruokaloissa eli Unicafeissa opiskelijat maksavat lounaansa käyttäen maksukorttia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtäväsarjassa tehdään luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":", jonka tarkoituksena on jäljitellä Unicafeissa tapahtuvaa maksutoimintaa."}]},{"type":"element","tagName":"h3","properties":{"id":"luokan-runko","style":"position:relative;"},"children":[{"type":"text","value":"Luokan runko"},{"type":"element","tagName":"a","properties":{"href":"#luokan-runko","ariaLabel":"luokan runko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelmaan uusi luokka nimeltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ensin luokalle konstruktori, jolle annetaan kortin alkusaldo ja joka tallentaa sen olion sisäiseen muuttujaan. Tee sitten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":"-metodi, joka palauttaa kortin saldon muodossa \"Kortilla on rahaa X euroa\". Rahamäärä tulee tulostaa yhden desimaalin tarkkuudella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan Maksukortti runko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkusaldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkusaldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulisi tuottaa seuraava tulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 50.0 euroa"}]}]},{"type":"element","tagName":"h3","properties":{"id":"kortilla-maksaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kortilla maksaminen"},{"type":"element","tagName":"a","properties":{"href":"#kortilla-maksaminen","ariaLabel":"kortilla maksaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä Maksukortti-luokkaa seuraavilla metodeilla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syo_edullisesti"}]},{"type":"text","value":" joka vähentää kortin saldoa 2.60 eurolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syo_maukkaasti"}]},{"type":"text","value":" joka vähentää kortin saldoa 4.60 eurolla"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava pääohjelma testaa luokkaa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulisi tuottaa seuraava tulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 50.0 euroa\nKortilla on rahaa 47.4 euroa\nKortilla on rahaa 40.2 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kortin saldo ei saa mennä negatiiviseksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 4.0 euroa\nKortilla on rahaa 1.4 euroa\nKortilla on rahaa 1.4 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli kortin saldo ei enää vähene jos maksettaessa saldo ei ole riittävä."}]},{"type":"element","tagName":"h3","properties":{"id":"kortin-lataaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kortin lataaminen"},{"type":"element","tagName":"a","properties":{"href":"#kortin-lataaminen","ariaLabel":"kortin lataaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"-luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa_rahaa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin tarkoituksena on kasvattaa kortin saldoa parametrina annetulla rahamäärällä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 10.0 euroa\nKortilla on rahaa 25.0 euroa\nKortilla on rahaa 35.0 euroa\nKortilla on rahaa 235.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kortille yritetään ladata negatiivinen summa, tulee metodin "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"tuottaa poikkeus"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"File \"testi.py\", line 3, in maksukortti\nValueError: Kortille ei saa ladata negatiivista summaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":" että metodin tulee "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tuottaa"}]},{"type":"text","value":" poikkeus, katso "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"osan 6"}]},{"type":"text","value":" materiaalista miten poikkeus tuotetaan. Metodi ei missään tilanteessa itse tulosta mitään!"}]},{"type":"element","tagName":"h3","properties":{"id":"monta-korttia","style":"position:relative;"},"children":[{"type":"text","value":"Monta korttia"},{"type":"element","tagName":"a","properties":{"href":"#monta-korttia","ariaLabel":"monta korttia permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee pääohjelma, joka sisältää seuraavan tapahtumasarjan:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luo Pekan kortti. Kortin alkusaldo on 20 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luo Matin kortti. Kortin alkusaldo on 30 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka syö maukkaasti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Matti syö edullisesti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka lataa rahaa 20 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Matti syö maukkaasti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka syö edullisesti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka syö edullisesti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Matti lataa rahaa 50 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääohjelman runko"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pekan_kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatin_kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tee koodi tänne"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen tulee olla seuraava"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka: Kortilla on rahaa 15.4 euroa\nMatti: Kortilla on rahaa 27.4 euroa\nPekka: Kortilla on rahaa 35.4 euroa\nMatti: Kortilla on rahaa 22.8 euroa\nPekka: Kortilla on rahaa 30.2 euroa\nMatti: Kortilla on rahaa 72.8 euroa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"esimerkki-2-tehtavalista","style":"position:relative;"},"children":[{"type":"text","value":"Esimerkki 2: Tehtävälista"},{"type":"element","tagName":"a","properties":{"href":"#esimerkki-2-tehtavalista","ariaLabel":"esimerkki 2 tehtavalista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtavalista"}]},{"type":"text","value":" toteuttaa tehtävälistan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tehtavalista"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" prioriteetti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"prioriteetti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_seuraava"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi pop poistaa ja palauttaa listan viimeisen alkion"}]},{"type":"text","value":"\n tehtava "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Palautetaan tuplen jälkimmäinen osa eli tehtävän nimi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"yhteensa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tyhjenna"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa"}]},{"type":"text","value":" lisää listalle uuden tehtävän tietyllä prioriteetilla ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_seuraava"}]},{"type":"text","value":" poistaa ja palauttaa listan suurimman prioriteetin tehtävän. Lisäksi metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yhteensa"}]},{"type":"text","value":" antaa listan tehtävien yhteismäärän ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tyhjenna"}]},{"type":"text","value":" tyhjentää listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäviä säilytetään sisäisesti listassa, jossa on tuplena kunkin tehtävän prioriteetti ja nimi. Prioriteetti tallennetaan ensin, jolloin tärkein tehtävä on listan lopussa listan järjestämisen jälkeen. Tämän ansiosta tehtävän saa haettua ja poistettua listalta kätevästi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":"-metodilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi esittelee luokan käyttämistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtavalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ulkoilu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"siivous\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_seuraava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"treffit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_seuraava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_seuraava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tyhjenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\nulkoilu\n2\n3\ntreffit\nopiskelu\n1\n0"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sarja","tmcname":"osa08-14_sarja"},"children":[{"type":"element","tagName":"h3","properties":{"id":"luokka-sarja","style":"position:relative;"},"children":[{"type":"text","value":"Luokka Sarja"},{"type":"element","tagName":"a","properties":{"href":"#luokka-sarja","ariaLabel":"luokka sarja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sarja"}]},{"type":"text","value":", joka toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"dexter "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"dexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\nei arvosteluja"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorissa siis asetetaan sarjan nimi, sen esityskausien lukumäärä sekä lista, joka kertoo mitä genrejä sarja edustaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje:"}]},{"type":"text","value":" merkkijonotaulukko saadaan muutettua haluttuja välimerkkejä sisältäväksi merkkijonoksi metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":" avulla seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nmerkkijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Crime, Drama, Mystery, Thriller"}]}]},{"type":"element","tagName":"h3","properties":{"id":"arvostelujen-lisaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Arvostelujen lisääminen"},{"type":"element","tagName":"a","properties":{"href":"#arvostelujen-lisaaminen","ariaLabel":"arvostelujen lisaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokalle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvostele(arvosana: int)"}]},{"type":"text","value":", jonka avulla sarjalle voi lisätä arvosanan, joka on kokonaisluku väliltä 0–5. Myös metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" tulee muuttaa niin, että se antaa arvostelujen määrän ja keskiarvon pyöristettynä yhden desimaalin tarkkuudelle (jos arvosteluja on annettu)."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"dexter "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"dexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\narvosteluja 5, keskiarvo 3.4 pistettä"}]}]},{"type":"element","tagName":"h3","properties":{"id":"sarjojen-haku","style":"position:relative;"},"children":[{"type":"text","value":"Sarjojen haku"},{"type":"element","tagName":"a","properties":{"href":"#sarjojen-haku","ariaLabel":"sarjojen haku permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee kaksi funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosana_vahintaan(arvosana: float, sarjat: list)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sisaltaa_genren(genre: str, sarjat: list)"}]},{"type":"text","value":", joiden avulla on mahdollista etsiä listalla olevia sarjoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit toimivat seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"South Park\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Animation\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Comedy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Friends\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Romance\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Comedy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsarjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvosana vähintään 4.5:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" arvosana_vahintaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"genre Comedy:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sisaltaa_genren"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Comedy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvosana vähintään 4.5:\nDexter"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"genre Comedy:\nSouth Park\nFriends"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että yllä oleva koodi ja testit olettavat, että luokassa on attribuutti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":". Jos olet käyttänyt muuta nimeä, sinun kannattaa vaihtaa se nyt."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda aiempaa monipuolisempia luokkia
    • \n
    • Osaat määritellä luokkaan metodin __str__
    • \n

    Esimerkki 1: Luokka Suorakulmio

    Tarkastellaan seuraavaksi luokkaa, joka mallintaa suorakulmiota kaksiulotteisessa koordinaatistossa:

    class Suorakulmio:\n    def __init__(self, vasen_ylakulma: tuple, oikea_alakulma: tuple):\n        self.vasen_ylakulma = vasen_ylakulma\n        self.oikea_alakulma = oikea_alakulma\n        self.leveys = oikea_alakulma[0]-vasen_ylakulma[0]\n        self.korkeus = oikea_alakulma[1]-vasen_ylakulma[1]\n\n    def pinta_ala(self):\n        return self.leveys * self.korkeus\n\n    def piiri(self):\n        return self.leveys * 2 + self.korkeus * 2\n\n    def siirra(self, x_muutos: int, y_muutos: int):\n        kulma = self.vasen_ylakulma\n        self.vasen_ylakulma = (kulma[0]+x_muutos, kulma[1]+y_muutos)\n        kulma = self.oikea_alakulma\n        self.oikea_alakulma = (kulma[0]+x_muutos, kulma[1]+y_muutos)

    Kun suorakulmio luodaan, konstruktorille annetaan kaksi tuplea: vasemman yläkulman ja oikean alakulman sijainti (x- ja y-koordinaatit). Konstruktori laskee tämän perusteella suorakulmion leveyden ja korkeuden.

    Metodit pinta_ala ja piiri laskevat suorakulmion pinta-alan ja piirin korkeuden ja leveyden perusteella. Metodi siirra puolestaan siirtää suorakulmiota koordinaatistossa annetun verran x- ja y-suunnissa.

    Huomaa, että suorakulmio esitetään koordinaatistossa, jossa x-koordinaatit kasvavat vasemmalta oikealle ja y-koordinaatit kasvavat ylhäältä alaspäin. Tämä on usein käytetty koordinaatisto ohjelmoinnissa, koska on luontevaa esittää tietokoneen näyttö niin, että vasemman yläkulman x- ja y-koordinaatti on 0.

    Seuraava koodi testaa luokkaa:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nprint(suorakulmio.vasen_ylakulma)\nprint(suorakulmio.oikea_alakulma)\nprint(suorakulmio.leveys)\nprint(suorakulmio.korkeus)\nprint(suorakulmio.piiri())\nprint(suorakulmio.pinta_ala())\n\nsuorakulmio.siirra(3, 3)\nprint(suorakulmio.vasen_ylakulma)\nprint(suorakulmio.oikea_alakulma)

    (1, 1)\n(4, 3)\n3\n2\n10\n6\n(4, 4)\n(7, 6)

    Olion tulostaminen

    Kun omasta luokasta luotu olio tulostetaan sellaisenaan print-komennolla, lopputulos ei ole kovin selkeä:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nprint(suorakulmio)

    Ohjelma tulostaa jotain seuraavankaltaista:

    <main.Suorakulmio object at 0x000002D7BF148A90>

    Järkevämpi tulostus saadaan lisäämällä luokkaan metodi __str__, joka palauttaa ymmärrettävän kuvauksen olion tilasta merkkijonona. Kun tämä metodi on määritelty, metodin palauttama kuvaus oliosta tulee näkyviin print-komennossa.

    Lisätään luokkaan Suorakulmio metodi __str__:

    class Suorakulmio:\n\n    # Luokan muu sisältö tähän kuten ennenkin...\n\n    # Metodi palauttaa olion tilan merkkijonona\n    def __str__(self):\n        return f\"suorakulmio {self.vasen_ylakulma} ... {self.oikea_alakulma}\"

    Nyt print-komento tuottaa luettavan lopputuloksen:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nprint(suorakulmio)

    suorakulmio (1, 1) ... (4, 3)

    Metodia __str__ kutsutaan yleisemmin silloin, kun oliosta muodostetaan merkkijonokuvaus str-funktiolla. Seuraava koodi esittelee asiaa:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nkuvaus = str(suorakulmio)\nprint(kuvaus)

    suorakulmio (1, 1) ... (4, 3)

    Metodin __str__ lisäksi olioon voidaan määritellä samantapainen metodi __repr__, joka antaa teknisen kuvauksen olion tilasta. Tutustumme tähän metodiin tarkemmin myöhemmin.

    Tehtäväpohjassa on mukana luokan Sekuntikello runko:

    class Sekuntikello:\n    def __init__(self):\n        self.sekunnit = 0\n        self.minuutit = 0

    Laajenna luokkaa siten, että se toimii seuraavasti:

    kello = Sekuntikello()\nfor i in range(3600):\n    print(kello)\n    kello.tick()

    00:00\n00:01\n00:02\n... tässä välissä monta riviä\n00:59\n01:00\n01:01\n... tässä välissä erittäin monta riviä\n59:58\n59:59\n00:00\n00:01

    Metodi tick vie siis kelloa sekunnin eteenpäin, ja sekä sekuntien että minuuttien arvo on suuruudeltaan korkeintaan 59. Lisäksi oliossa tulee olla metodi __str__, joka näyttää kellonajan yllä olevassa muodossa.

    Vihje: metodin tick testailua voi helpottaa asettamalla tilapäisesti konstruktorissa sekunneille ja minuuteille valmiiksi jonkin suuremman arvon kuin 0.

    Toteuta edellistä tehtävää laajentava luokka Kello, joka toimii seuraavaan tapaan:

    kello = Kello(23, 59, 55)\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\n\nkello.aseta(12, 5)\nprint(kello)
    \n23:59:55\n23:59:56\n23:59:57\n23:59:58\n23:59:59\n00:00:00\n00:00:01\n12:05:00\n

    Konstruktori siis antaa kellon tunneille, minuuteille ja sekunneille alkuarvot. Metodi tick vie kelloa sekunnin eteenpäin ja metodilla aseta voi asettaa kellon tunneille ja minuuteille uuden arvon ja nollata sekunnit.

    Helsingin Yliopiston opiskelijaruokaloissa eli Unicafeissa opiskelijat maksavat lounaansa käyttäen maksukorttia.

    Tässä tehtäväsarjassa tehdään luokka Maksukortti, jonka tarkoituksena on jäljitellä Unicafeissa tapahtuvaa maksutoimintaa.

    Luokan runko

    Tee ohjelmaan uusi luokka nimeltä Maksukortti.

    Tee ensin luokalle konstruktori, jolle annetaan kortin alkusaldo ja joka tallentaa sen olion sisäiseen muuttujaan. Tee sitten __str__-metodi, joka palauttaa kortin saldon muodossa \"Kortilla on rahaa X euroa\". Rahamäärä tulee tulostaa yhden desimaalin tarkkuudella.

    Seuraavassa on luokan Maksukortti runko:

    class Maksukortti:\n    def __init__(self, alkusaldo: float):\n        self.saldo = alkusaldo\n\n    def __str__(self):\n        pass

    Käyttöesimerkki

    kortti = Maksukortti(50)\nprint(kortti)

    Ohjelman tulisi tuottaa seuraava tulostus:

    Kortilla on rahaa 50.0 euroa

    Kortilla maksaminen

    Täydennä Maksukortti-luokkaa seuraavilla metodeilla:

      \n
    • syo_edullisesti joka vähentää kortin saldoa 2.60 eurolla
    • \n
    • syo_maukkaasti joka vähentää kortin saldoa 4.60 eurolla
    • \n

    Seuraava pääohjelma testaa luokkaa

    kortti = Maksukortti(50)\nprint(kortti)\n\nkortti.syo_edullisesti()\nprint(kortti)\n\nkortti.syo_maukkaasti()\nkortti.syo_edullisesti()\nprint(kortti)

    Ohjelman tulisi tuottaa seuraava tulostus:

    Kortilla on rahaa 50.0 euroa\nKortilla on rahaa 47.4 euroa\nKortilla on rahaa 40.2 euroa

    Huomaa, että kortin saldo ei saa mennä negatiiviseksi:

    kortti = Maksukortti(4)\nprint(kortti)\n\nkortti.syo_edullisesti()\nprint(kortti)\n\nkortti.syo_edullisesti()\nprint(kortti)

    Kortilla on rahaa 4.0 euroa\nKortilla on rahaa 1.4 euroa\nKortilla on rahaa 1.4 euroa

    Eli kortin saldo ei enää vähene jos maksettaessa saldo ei ole riittävä.

    Kortin lataaminen

    Lisää Maksukortti-luokkaan metodi lataa_rahaa.

    Metodin tarkoituksena on kasvattaa kortin saldoa parametrina annetulla rahamäärällä.

    kortti = Maksukortti(10)\nprint(kortti)\nkortti.lataa_rahaa(15)\nprint(kortti)\nkortti.lataa_rahaa(10)\nprint(kortti)\nkortti.lataa_rahaa(200)\nprint(kortti)

    Kortilla on rahaa 10.0 euroa\nKortilla on rahaa 25.0 euroa\nKortilla on rahaa 35.0 euroa\nKortilla on rahaa 235.0 euroa

    Jos kortille yritetään ladata negatiivinen summa, tulee metodin tuottaa poikkeus ValueError:

    kortti = Maksukortti(10)\nkortti.lataa_rahaa(-10)

    File \"testi.py\", line 3, in maksukortti\nValueError: Kortille ei saa ladata negatiivista summaa

    Huomaa että metodin tulee tuottaa poikkeus, katso osan 6 materiaalista miten poikkeus tuotetaan. Metodi ei missään tilanteessa itse tulosta mitään!

    Monta korttia

    Tee pääohjelma, joka sisältää seuraavan tapahtumasarjan:

      \n
    • Luo Pekan kortti. Kortin alkusaldo on 20 euroa
    • \n
    • Luo Matin kortti. Kortin alkusaldo on 30 euroa
    • \n
    • Pekka syö maukkaasti
    • \n
    • Matti syö edullisesti
    • \n
    • Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)
    • \n
    • Pekka lataa rahaa 20 euroa
    • \n
    • Matti syö maukkaasti
    • \n
    • Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)
    • \n
    • Pekka syö edullisesti
    • \n
    • Pekka syö edullisesti
    • \n
    • Matti lataa rahaa 50 euroa
    • \n
    • Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)
    • \n

    Pääohjelman runko

    pekan_kortti = Maksukortti(20)\nmatin_kortti = Maksukortti(30)\n# tee koodi tänne

    Tulostuksen tulee olla seuraava

    Pekka: Kortilla on rahaa 15.4 euroa\nMatti: Kortilla on rahaa 27.4 euroa\nPekka: Kortilla on rahaa 35.4 euroa\nMatti: Kortilla on rahaa 22.8 euroa\nPekka: Kortilla on rahaa 30.2 euroa\nMatti: Kortilla on rahaa 72.8 euroa

    Esimerkki 2: Tehtävälista

    Seuraava luokka Tehtavalista toteuttaa tehtävälistan:

    class Tehtavalista:\n    def __init__(self):\n        self.tehtavat = []\n\n    def lisaa(self, nimi: str, prioriteetti: int):\n        self.tehtavat.append((prioriteetti, nimi))\n\n    def hae_seuraava(self):\n        self.tehtavat.sort()\n        # Metodi pop poistaa ja palauttaa listan viimeisen alkion\n        tehtava = self.tehtavat.pop()\n        # Palautetaan tuplen jälkimmäinen osa eli tehtävän nimi\n        return tehtava[1]\n\n    def yhteensa(self):\n        return len(self.tehtavat)\n\n    def tyhjenna(self):\n        self.tehtavat = []

    Metodi lisaa lisää listalle uuden tehtävän tietyllä prioriteetilla ja metodi hae_seuraava poistaa ja palauttaa listan suurimman prioriteetin tehtävän. Lisäksi metodi yhteensa antaa listan tehtävien yhteismäärän ja metodi tyhjenna tyhjentää listan.

    Tehtäviä säilytetään sisäisesti listassa, jossa on tuplena kunkin tehtävän prioriteetti ja nimi. Prioriteetti tallennetaan ensin, jolloin tärkein tehtävä on listan lopussa listan järjestämisen jälkeen. Tämän ansiosta tehtävän saa haettua ja poistettua listalta kätevästi pop-metodilla.

    Seuraava koodi esittelee luokan käyttämistä:

    lista = Tehtavalista()\nlista.lisaa(\"opiskelu\", 50)\nlista.lisaa(\"ulkoilu\", 60)\nlista.lisaa(\"siivous\", 10)\nprint(lista.yhteensa())\nprint(lista.hae_seuraava())\nprint(lista.yhteensa())\nlista.lisaa(\"treffit\", 100)\nprint(lista.yhteensa())\nprint(lista.hae_seuraava())\nprint(lista.hae_seuraava())\nprint(lista.yhteensa())\nlista.tyhjenna()\nprint(lista.yhteensa())

    3\nulkoilu\n2\n3\ntreffit\nopiskelu\n1\n0

    Luokka Sarja

    Tee luokka Sarja, joka toimii seuraavasti

    dexter = Sarja(\"Dexter\", 8, [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"])\nprint(dexter)

    Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\nei arvosteluja

    Konstruktorissa siis asetetaan sarjan nimi, sen esityskausien lukumäärä sekä lista, joka kertoo mitä genrejä sarja edustaa.

    Vihje: merkkijonotaulukko saadaan muutettua haluttuja välimerkkejä sisältäväksi merkkijonoksi metodin join avulla seuraavasti:

    lista = [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"]\nmerkkijono = \", \".join(lista)\nprint(merkkijono)

    Crime, Drama, Mystery, Thriller

    Arvostelujen lisääminen

    Tee luokalle metodi arvostele(arvosana: int), jonka avulla sarjalle voi lisätä arvosanan, joka on kokonaisluku väliltä 0–5. Myös metodia __str__ tulee muuttaa niin, että se antaa arvostelujen määrän ja keskiarvon pyöristettynä yhden desimaalin tarkkuudelle (jos arvosteluja on annettu).

    dexter = Sarja(\"Dexter\", 8, [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"])\ndexter.arvostele(4)\ndexter.arvostele(5)\ndexter.arvostele(5)\ndexter.arvostele(3)\ndexter.arvostele(0)\nprint(dexter)

    Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\narvosteluja 5, keskiarvo 3.4 pistettä

    Sarjojen haku

    Tee kaksi funktiota arvosana_vahintaan(arvosana: float, sarjat: list) ja sisaltaa_genren(genre: str, sarjat: list), joiden avulla on mahdollista etsiä listalla olevia sarjoja.

    Metodit toimivat seuraavasti:

    s1 = Sarja(\"Dexter\", 8, [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"])\ns1.arvostele(5)\n\ns2 = Sarja(\"South Park\", 24, [\"Animation\", \"Comedy\"])\ns2.arvostele(3)\n\ns3 = Sarja(\"Friends\", 10, [\"Romance\", \"Comedy\"])\ns3.arvostele(2)\n\nsarjat = [s1, s2, s3]\n\nprint(\"arvosana vähintään 4.5:\")\nfor sarja in arvosana_vahintaan(4.5, sarjat):\n    print(sarja.nimi)\n\nprint(\"genre Comedy:\")\nfor sarja in sisaltaa_genren(\"Comedy\", sarjat):\n    print(sarja.nimi)

    arvosana vähintään 4.5:\nDexter

    genre Comedy:\nSouth Park\nFriends

    Huomaa, että yllä oleva koodi ja testit olettavat, että luokassa on attribuutti nimi. Jos olet käyttänyt muuta nimeä, sinun kannattaa vaihtaa se nyt.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/5-lisaa-esimerkkeja.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat luoda aiempaa monipuolisempia luokkia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat määritellä luokkaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"h2","properties":{"id":"esimerkki-1-luokka-suorakulmio","style":"position:relative;"},"children":[{"type":"text","value":"Esimerkki 1: Luokka Suorakulmio"},{"type":"element","tagName":"a","properties":{"href":"#esimerkki-1-luokka-suorakulmio","ariaLabel":"esimerkki 1 luokka suorakulmio permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaksi luokkaa, joka mallintaa suorakulmiota kaksiulotteisessa koordinaatistossa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"tuple"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vasen_ylakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_alakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pinta_ala"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"piiri"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"siirra"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"x_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"y_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"x_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":"y_muutos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun suorakulmio luodaan, konstruktorille annetaan kaksi tuplea: vasemman yläkulman ja oikean alakulman sijainti (x- ja y-koordinaatit). Konstruktori laskee tämän perusteella suorakulmion leveyden ja korkeuden."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pinta_ala"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"piiri"}]},{"type":"text","value":" laskevat suorakulmion pinta-alan ja piirin korkeuden ja leveyden perusteella. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"siirra"}]},{"type":"text","value":" puolestaan siirtää suorakulmiota koordinaatistossa annetun verran x- ja y-suunnissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että suorakulmio esitetään koordinaatistossa, jossa x-koordinaatit kasvavat vasemmalta oikealle ja y-koordinaatit kasvavat ylhäältä alaspäin. Tämä on usein käytetty koordinaatisto ohjelmoinnissa, koska on luontevaa esittää tietokoneen näyttö niin, että vasemman yläkulman x- ja y-koordinaatti on 0."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi testaa luokkaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"leveys"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"korkeus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"piiri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pinta_ala"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsuorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"siirra"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(1, 1)\n(4, 3)\n3\n2\n10\n6\n(4, 4)\n(7, 6)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"olion-tulostaminen","style":"position:relative;"},"children":[{"type":"text","value":"Olion tulostaminen"},{"type":"element","tagName":"a","properties":{"href":"#olion-tulostaminen","ariaLabel":"olion tulostaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun omasta luokasta luotu olio tulostetaan sellaisenaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennolla, lopputulos ei ole kovin selkeä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa jotain seuraavankaltaista:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"<"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":".Suorakulmio object at 0x000002D7BF148A90>"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Järkevämpi tulostus saadaan lisäämällä luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa ymmärrettävän kuvauksen olion tilasta merkkijonona. Kun tämä metodi on määritelty, metodin palauttama kuvaus oliosta tulee näkyviin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komennossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään luokkaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Suorakulmio"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokan muu sisältö tähän kuten ennenkin..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa olion tilan merkkijonona"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"suorakulmio "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vasen_ylakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ... "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"oikea_alakulma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print"}]},{"type":"text","value":"-komento tuottaa luettavan lopputuloksen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suorakulmio (1, 1) ... (4, 3)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" kutsutaan yleisemmin silloin, kun oliosta muodostetaan merkkijonokuvaus "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":"-funktiolla. Seuraava koodi esittelee asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"suorakulmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkuvaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suorakulmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kuvaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"suorakulmio (1, 1) ... (4, 3)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" lisäksi olioon voidaan määritellä samantapainen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__repr__"}]},{"type":"text","value":", joka antaa teknisen kuvauksen olion tilasta. Tutustumme tähän metodiin tarkemmin myöhemmin."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sekuntikello","tmcname":"osa08-11a_sekuntikello"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on mukana luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sekuntikello"}]},{"type":"text","value":" runko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sekuntikello"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sekunnit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"minuutit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajenna luokkaa siten, että se toimii seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sekuntikello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3600"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"00:00\n00:01\n00:02\n... tässä välissä monta riviä\n00:59\n01:00\n01:01\n... tässä välissä erittäin monta riviä\n59:58\n59:59\n00:00\n00:01"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" vie siis kelloa sekunnin eteenpäin, ja sekä sekuntien että minuuttien arvo on suuruudeltaan korkeintaan 59. Lisäksi oliossa tulee olla metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka näyttää kellonajan yllä olevassa muodossa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje:"}]},{"type":"text","value":" metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" testailua voi helpottaa asettamalla tilapäisesti konstruktorissa sekunneille ja minuuteille valmiiksi jonkin suuremman arvon kuin 0."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kello","tmcname":"osa08-12_kello"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta edellistä tehtävää laajentava luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kello"}]},{"type":"text","value":", joka toimii seuraavaan tapaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kello "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"59"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"55"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tick"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aseta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kello"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"text","value":"\n23:59:55\n23:59:56\n23:59:57\n23:59:58\n23:59:59\n00:00:00\n00:00:01\n12:05:00\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktori siis antaa kellon tunneille, minuuteille ja sekunneille alkuarvot. Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tick"}]},{"type":"text","value":" vie kelloa sekunnin eteenpäin ja metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aseta"}]},{"type":"text","value":" voi asettaa kellon tunneille ja minuuteille uuden arvon ja "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"nollata sekunnit"}]},{"type":"text","value":"."}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Maksukortti","tmcname":"osa08-13_maksukortti"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Helsingin Yliopiston opiskelijaruokaloissa eli Unicafeissa opiskelijat maksavat lounaansa käyttäen maksukorttia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtäväsarjassa tehdään luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":", jonka tarkoituksena on jäljitellä Unicafeissa tapahtuvaa maksutoimintaa."}]},{"type":"element","tagName":"h3","properties":{"id":"luokan-runko","style":"position:relative;"},"children":[{"type":"text","value":"Luokan runko"},{"type":"element","tagName":"a","properties":{"href":"#luokan-runko","ariaLabel":"luokan runko permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ohjelmaan uusi luokka nimeltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee ensin luokalle konstruktori, jolle annetaan kortin alkusaldo ja joka tallentaa sen olion sisäiseen muuttujaan. Tee sitten "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":"-metodi, joka palauttaa kortin saldon muodossa \"Kortilla on rahaa X euroa\". Rahamäärä tulee tulostaa yhden desimaalin tarkkuudella."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan Maksukortti runko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alkusaldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alkusaldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulisi tuottaa seuraava tulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 50.0 euroa"}]}]},{"type":"element","tagName":"h3","properties":{"id":"kortilla-maksaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kortilla maksaminen"},{"type":"element","tagName":"a","properties":{"href":"#kortilla-maksaminen","ariaLabel":"kortilla maksaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Täydennä Maksukortti-luokkaa seuraavilla metodeilla:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syo_edullisesti"}]},{"type":"text","value":" joka vähentää kortin saldoa 2.60 eurolla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syo_maukkaasti"}]},{"type":"text","value":" joka vähentää kortin saldoa 4.60 eurolla"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava pääohjelma testaa luokkaa"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulisi tuottaa seuraava tulostus:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 50.0 euroa\nKortilla on rahaa 47.4 euroa\nKortilla on rahaa 40.2 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että kortin saldo ei saa mennä negatiiviseksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 4.0 euroa\nKortilla on rahaa 1.4 euroa\nKortilla on rahaa 1.4 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eli kortin saldo ei enää vähene jos maksettaessa saldo ei ole riittävä."}]},{"type":"element","tagName":"h3","properties":{"id":"kortin-lataaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kortin lataaminen"},{"type":"element","tagName":"a","properties":{"href":"#kortin-lataaminen","ariaLabel":"kortin lataaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"-luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lataa_rahaa"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodin tarkoituksena on kasvattaa kortin saldoa parametrina annetulla rahamäärällä."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla on rahaa 10.0 euroa\nKortilla on rahaa 25.0 euroa\nKortilla on rahaa 35.0 euroa\nKortilla on rahaa 235.0 euroa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kortille yritetään ladata negatiivinen summa, tulee metodin "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"tuottaa poikkeus"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"File \"testi.py\", line 3, in maksukortti\nValueError: Kortille ei saa ladata negatiivista summaa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":" että metodin tulee "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tuottaa"}]},{"type":"text","value":" poikkeus, katso "},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"osan 6"}]},{"type":"text","value":" materiaalista miten poikkeus tuotetaan. Metodi ei missään tilanteessa itse tulosta mitään!"}]},{"type":"element","tagName":"h3","properties":{"id":"monta-korttia","style":"position:relative;"},"children":[{"type":"text","value":"Monta korttia"},{"type":"element","tagName":"a","properties":{"href":"#monta-korttia","ariaLabel":"monta korttia permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee pääohjelma, joka sisältää seuraavan tapahtumasarjan:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luo Pekan kortti. Kortin alkusaldo on 20 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Luo Matin kortti. Kortin alkusaldo on 30 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka syö maukkaasti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Matti syö edullisesti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka lataa rahaa 20 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Matti syö maukkaasti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka syö edullisesti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Pekka syö edullisesti"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Matti lataa rahaa 50 euroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pääohjelman runko"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pekan_kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatin_kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tee koodi tänne"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen tulee olla seuraava"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka: Kortilla on rahaa 15.4 euroa\nMatti: Kortilla on rahaa 27.4 euroa\nPekka: Kortilla on rahaa 35.4 euroa\nMatti: Kortilla on rahaa 22.8 euroa\nPekka: Kortilla on rahaa 30.2 euroa\nMatti: Kortilla on rahaa 72.8 euroa"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"esimerkki-2-tehtavalista","style":"position:relative;"},"children":[{"type":"text","value":"Esimerkki 2: Tehtävälista"},{"type":"element","tagName":"a","properties":{"href":"#esimerkki-2-tehtavalista","ariaLabel":"esimerkki 2 tehtavalista permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tehtavalista"}]},{"type":"text","value":" toteuttaa tehtävälistan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tehtavalista"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" prioriteetti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"prioriteetti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_seuraava"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sort"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi pop poistaa ja palauttaa listan viimeisen alkion"}]},{"type":"text","value":"\n tehtava "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Palautetaan tuplen jälkimmäinen osa eli tehtävän nimi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" tehtava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"yhteensa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tyhjenna"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehtavat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa"}]},{"type":"text","value":" lisää listalle uuden tehtävän tietyllä prioriteetilla ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_seuraava"}]},{"type":"text","value":" poistaa ja palauttaa listan suurimman prioriteetin tehtävän. Lisäksi metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yhteensa"}]},{"type":"text","value":" antaa listan tehtävien yhteismäärän ja metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tyhjenna"}]},{"type":"text","value":" tyhjentää listan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäviä säilytetään sisäisesti listassa, jossa on tuplena kunkin tehtävän prioriteetti ja nimi. Prioriteetti tallennetaan ensin, jolloin tärkein tehtävä on listan lopussa listan järjestämisen jälkeen. Tämän ansiosta tehtävän saa haettua ja poistettua listalta kätevästi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pop"}]},{"type":"text","value":"-metodilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi esittelee luokan käyttämistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tehtavalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"opiskelu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ulkoilu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"60"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"siivous\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_seuraava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"treffit\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_seuraava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_seuraava"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tyhjenna"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteensa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"3\nulkoilu\n2\n3\ntreffit\nopiskelu\n1\n0"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Sarja","tmcname":"osa08-14_sarja"},"children":[{"type":"element","tagName":"h3","properties":{"id":"luokka-sarja","style":"position:relative;"},"children":[{"type":"text","value":"Luokka Sarja"},{"type":"element","tagName":"a","properties":{"href":"#luokka-sarja","ariaLabel":"luokka sarja permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Sarja"}]},{"type":"text","value":", joka toimii seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"dexter "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"dexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\nei arvosteluja"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Konstruktorissa siis asetetaan sarjan nimi, sen esityskausien lukumäärä sekä lista, joka kertoo mitä genrejä sarja edustaa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje:"}]},{"type":"text","value":" merkkijonotaulukko saadaan muutettua haluttuja välimerkkejä sisältäväksi merkkijonoksi metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"join"}]},{"type":"text","value":" avulla seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nmerkkijono "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\", \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"join"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkkijono"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Crime, Drama, Mystery, Thriller"}]}]},{"type":"element","tagName":"h3","properties":{"id":"arvostelujen-lisaaminen","style":"position:relative;"},"children":[{"type":"text","value":"Arvostelujen lisääminen"},{"type":"element","tagName":"a","properties":{"href":"#arvostelujen-lisaaminen","ariaLabel":"arvostelujen lisaaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokalle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvostele(arvosana: int)"}]},{"type":"text","value":", jonka avulla sarjalle voi lisätä arvosanan, joka on kokonaisluku väliltä 0–5. Myös metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" tulee muuttaa niin, että se antaa arvostelujen määrän ja keskiarvon pyöristettynä yhden desimaalin tarkkuudelle (jos arvosteluja on annettu)."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"dexter "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ndexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"dexter"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\narvosteluja 5, keskiarvo 3.4 pistettä"}]}]},{"type":"element","tagName":"h3","properties":{"id":"sarjojen-haku","style":"position:relative;"},"children":[{"type":"text","value":"Sarjojen haku"},{"type":"element","tagName":"a","properties":{"href":"#sarjojen-haku","ariaLabel":"sarjojen haku permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee kaksi funktiota "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"arvosana_vahintaan(arvosana: float, sarjat: list)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"sisaltaa_genren(genre: str, sarjat: list)"}]},{"type":"text","value":", joiden avulla on mahdollista etsiä listalla olevia sarjoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodit toimivat seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Dexter\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Crime\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Drama\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mystery\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Thriller\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ns2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"South Park\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"24"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Animation\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Comedy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ns3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Friends\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Romance\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Comedy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ns3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvostele"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsarjat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"arvosana vähintään 4.5:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" arvosana_vahintaan"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"genre Comedy:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sarja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sisaltaa_genren"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Comedy\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sarjat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sarja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"arvosana vähintään 4.5:\nDexter"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"genre Comedy:\nSouth Park\nFriends"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että yllä oleva koodi ja testit olettavat, että luokassa on attribuutti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":". Jos olet käyttänyt muuta nimeä, sinun kannattaa vaihtaa se nyt."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat luoda aiempaa monipuolisempia luokkia
    • \n
    • Osaat määritellä luokkaan metodin __str__
    • \n

    Esimerkki 1: Luokka Suorakulmio

    Tarkastellaan seuraavaksi luokkaa, joka mallintaa suorakulmiota kaksiulotteisessa koordinaatistossa:

    class Suorakulmio:\n    def __init__(self, vasen_ylakulma: tuple, oikea_alakulma: tuple):\n        self.vasen_ylakulma = vasen_ylakulma\n        self.oikea_alakulma = oikea_alakulma\n        self.leveys = oikea_alakulma[0]-vasen_ylakulma[0]\n        self.korkeus = oikea_alakulma[1]-vasen_ylakulma[1]\n\n    def pinta_ala(self):\n        return self.leveys * self.korkeus\n\n    def piiri(self):\n        return self.leveys * 2 + self.korkeus * 2\n\n    def siirra(self, x_muutos: int, y_muutos: int):\n        kulma = self.vasen_ylakulma\n        self.vasen_ylakulma = (kulma[0]+x_muutos, kulma[1]+y_muutos)\n        kulma = self.oikea_alakulma\n        self.oikea_alakulma = (kulma[0]+x_muutos, kulma[1]+y_muutos)

    Kun suorakulmio luodaan, konstruktorille annetaan kaksi tuplea: vasemman yläkulman ja oikean alakulman sijainti (x- ja y-koordinaatit). Konstruktori laskee tämän perusteella suorakulmion leveyden ja korkeuden.

    Metodit pinta_ala ja piiri laskevat suorakulmion pinta-alan ja piirin korkeuden ja leveyden perusteella. Metodi siirra puolestaan siirtää suorakulmiota koordinaatistossa annetun verran x- ja y-suunnissa.

    Huomaa, että suorakulmio esitetään koordinaatistossa, jossa x-koordinaatit kasvavat vasemmalta oikealle ja y-koordinaatit kasvavat ylhäältä alaspäin. Tämä on usein käytetty koordinaatisto ohjelmoinnissa, koska on luontevaa esittää tietokoneen näyttö niin, että vasemman yläkulman x- ja y-koordinaatti on 0.

    Seuraava koodi testaa luokkaa:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nprint(suorakulmio.vasen_ylakulma)\nprint(suorakulmio.oikea_alakulma)\nprint(suorakulmio.leveys)\nprint(suorakulmio.korkeus)\nprint(suorakulmio.piiri())\nprint(suorakulmio.pinta_ala())\n\nsuorakulmio.siirra(3, 3)\nprint(suorakulmio.vasen_ylakulma)\nprint(suorakulmio.oikea_alakulma)

    (1, 1)\n(4, 3)\n3\n2\n10\n6\n(4, 4)\n(7, 6)

    Olion tulostaminen

    Kun omasta luokasta luotu olio tulostetaan sellaisenaan print-komennolla, lopputulos ei ole kovin selkeä:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nprint(suorakulmio)

    Ohjelma tulostaa jotain seuraavankaltaista:

    <main.Suorakulmio object at 0x000002D7BF148A90>

    Järkevämpi tulostus saadaan lisäämällä luokkaan metodi __str__, joka palauttaa ymmärrettävän kuvauksen olion tilasta merkkijonona. Kun tämä metodi on määritelty, metodin palauttama kuvaus oliosta tulee näkyviin print-komennossa.

    Lisätään luokkaan Suorakulmio metodi __str__:

    class Suorakulmio:\n\n    # Luokan muu sisältö tähän kuten ennenkin...\n\n    # Metodi palauttaa olion tilan merkkijonona\n    def __str__(self):\n        return f\"suorakulmio {self.vasen_ylakulma} ... {self.oikea_alakulma}\"

    Nyt print-komento tuottaa luettavan lopputuloksen:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nprint(suorakulmio)

    suorakulmio (1, 1) ... (4, 3)

    Metodia __str__ kutsutaan yleisemmin silloin, kun oliosta muodostetaan merkkijonokuvaus str-funktiolla. Seuraava koodi esittelee asiaa:

    suorakulmio = Suorakulmio((1, 1), (4, 3))\nkuvaus = str(suorakulmio)\nprint(kuvaus)

    suorakulmio (1, 1) ... (4, 3)

    Metodin __str__ lisäksi olioon voidaan määritellä samantapainen metodi __repr__, joka antaa teknisen kuvauksen olion tilasta. Tutustumme tähän metodiin tarkemmin myöhemmin.

    Tehtäväpohjassa on mukana luokan Sekuntikello runko:

    class Sekuntikello:\n    def __init__(self):\n        self.sekunnit = 0\n        self.minuutit = 0

    Laajenna luokkaa siten, että se toimii seuraavasti:

    kello = Sekuntikello()\nfor i in range(3600):\n    print(kello)\n    kello.tick()

    00:00\n00:01\n00:02\n... tässä välissä monta riviä\n00:59\n01:00\n01:01\n... tässä välissä erittäin monta riviä\n59:58\n59:59\n00:00\n00:01

    Metodi tick vie siis kelloa sekunnin eteenpäin, ja sekä sekuntien että minuuttien arvo on suuruudeltaan korkeintaan 59. Lisäksi oliossa tulee olla metodi __str__, joka näyttää kellonajan yllä olevassa muodossa.

    Vihje: metodin tick testailua voi helpottaa asettamalla tilapäisesti konstruktorissa sekunneille ja minuuteille valmiiksi jonkin suuremman arvon kuin 0.

    Toteuta edellistä tehtävää laajentava luokka Kello, joka toimii seuraavaan tapaan:

    kello = Kello(23, 59, 55)\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\nkello.tick()\nprint(kello)\n\nkello.aseta(12, 5)\nprint(kello)
    \n23:59:55\n23:59:56\n23:59:57\n23:59:58\n23:59:59\n00:00:00\n00:00:01\n12:05:00\n

    Konstruktori siis antaa kellon tunneille, minuuteille ja sekunneille alkuarvot. Metodi tick vie kelloa sekunnin eteenpäin ja metodilla aseta voi asettaa kellon tunneille ja minuuteille uuden arvon ja nollata sekunnit.

    Helsingin Yliopiston opiskelijaruokaloissa eli Unicafeissa opiskelijat maksavat lounaansa käyttäen maksukorttia.

    Tässä tehtäväsarjassa tehdään luokka Maksukortti, jonka tarkoituksena on jäljitellä Unicafeissa tapahtuvaa maksutoimintaa.

    Luokan runko

    Tee ohjelmaan uusi luokka nimeltä Maksukortti.

    Tee ensin luokalle konstruktori, jolle annetaan kortin alkusaldo ja joka tallentaa sen olion sisäiseen muuttujaan. Tee sitten __str__-metodi, joka palauttaa kortin saldon muodossa \"Kortilla on rahaa X euroa\". Rahamäärä tulee tulostaa yhden desimaalin tarkkuudella.

    Seuraavassa on luokan Maksukortti runko:

    class Maksukortti:\n    def __init__(self, alkusaldo: float):\n        self.saldo = alkusaldo\n\n    def __str__(self):\n        pass

    Käyttöesimerkki

    kortti = Maksukortti(50)\nprint(kortti)

    Ohjelman tulisi tuottaa seuraava tulostus:

    Kortilla on rahaa 50.0 euroa

    Kortilla maksaminen

    Täydennä Maksukortti-luokkaa seuraavilla metodeilla:

      \n
    • syo_edullisesti joka vähentää kortin saldoa 2.60 eurolla
    • \n
    • syo_maukkaasti joka vähentää kortin saldoa 4.60 eurolla
    • \n

    Seuraava pääohjelma testaa luokkaa

    kortti = Maksukortti(50)\nprint(kortti)\n\nkortti.syo_edullisesti()\nprint(kortti)\n\nkortti.syo_maukkaasti()\nkortti.syo_edullisesti()\nprint(kortti)

    Ohjelman tulisi tuottaa seuraava tulostus:

    Kortilla on rahaa 50.0 euroa\nKortilla on rahaa 47.4 euroa\nKortilla on rahaa 40.2 euroa

    Huomaa, että kortin saldo ei saa mennä negatiiviseksi:

    kortti = Maksukortti(4)\nprint(kortti)\n\nkortti.syo_edullisesti()\nprint(kortti)\n\nkortti.syo_edullisesti()\nprint(kortti)

    Kortilla on rahaa 4.0 euroa\nKortilla on rahaa 1.4 euroa\nKortilla on rahaa 1.4 euroa

    Eli kortin saldo ei enää vähene jos maksettaessa saldo ei ole riittävä.

    Kortin lataaminen

    Lisää Maksukortti-luokkaan metodi lataa_rahaa.

    Metodin tarkoituksena on kasvattaa kortin saldoa parametrina annetulla rahamäärällä.

    kortti = Maksukortti(10)\nprint(kortti)\nkortti.lataa_rahaa(15)\nprint(kortti)\nkortti.lataa_rahaa(10)\nprint(kortti)\nkortti.lataa_rahaa(200)\nprint(kortti)

    Kortilla on rahaa 10.0 euroa\nKortilla on rahaa 25.0 euroa\nKortilla on rahaa 35.0 euroa\nKortilla on rahaa 235.0 euroa

    Jos kortille yritetään ladata negatiivinen summa, tulee metodin tuottaa poikkeus ValueError:

    kortti = Maksukortti(10)\nkortti.lataa_rahaa(-10)

    File \"testi.py\", line 3, in maksukortti\nValueError: Kortille ei saa ladata negatiivista summaa

    Huomaa että metodin tulee tuottaa poikkeus, katso osan 6 materiaalista miten poikkeus tuotetaan. Metodi ei missään tilanteessa itse tulosta mitään!

    Monta korttia

    Tee pääohjelma, joka sisältää seuraavan tapahtumasarjan:

      \n
    • Luo Pekan kortti. Kortin alkusaldo on 20 euroa
    • \n
    • Luo Matin kortti. Kortin alkusaldo on 30 euroa
    • \n
    • Pekka syö maukkaasti
    • \n
    • Matti syö edullisesti
    • \n
    • Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)
    • \n
    • Pekka lataa rahaa 20 euroa
    • \n
    • Matti syö maukkaasti
    • \n
    • Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)
    • \n
    • Pekka syö edullisesti
    • \n
    • Pekka syö edullisesti
    • \n
    • Matti lataa rahaa 50 euroa
    • \n
    • Korttien arvot tulostetaan (molemmat omalle rivilleen, rivin alkuun kortin omistajan nimi)
    • \n

    Pääohjelman runko

    pekan_kortti = Maksukortti(20)\nmatin_kortti = Maksukortti(30)\n# tee koodi tänne

    Tulostuksen tulee olla seuraava

    Pekka: Kortilla on rahaa 15.4 euroa\nMatti: Kortilla on rahaa 27.4 euroa\nPekka: Kortilla on rahaa 35.4 euroa\nMatti: Kortilla on rahaa 22.8 euroa\nPekka: Kortilla on rahaa 30.2 euroa\nMatti: Kortilla on rahaa 72.8 euroa

    Esimerkki 2: Tehtävälista

    Seuraava luokka Tehtavalista toteuttaa tehtävälistan:

    class Tehtavalista:\n    def __init__(self):\n        self.tehtavat = []\n\n    def lisaa(self, nimi: str, prioriteetti: int):\n        self.tehtavat.append((prioriteetti, nimi))\n\n    def hae_seuraava(self):\n        self.tehtavat.sort()\n        # Metodi pop poistaa ja palauttaa listan viimeisen alkion\n        tehtava = self.tehtavat.pop()\n        # Palautetaan tuplen jälkimmäinen osa eli tehtävän nimi\n        return tehtava[1]\n\n    def yhteensa(self):\n        return len(self.tehtavat)\n\n    def tyhjenna(self):\n        self.tehtavat = []

    Metodi lisaa lisää listalle uuden tehtävän tietyllä prioriteetilla ja metodi hae_seuraava poistaa ja palauttaa listan suurimman prioriteetin tehtävän. Lisäksi metodi yhteensa antaa listan tehtävien yhteismäärän ja metodi tyhjenna tyhjentää listan.

    Tehtäviä säilytetään sisäisesti listassa, jossa on tuplena kunkin tehtävän prioriteetti ja nimi. Prioriteetti tallennetaan ensin, jolloin tärkein tehtävä on listan lopussa listan järjestämisen jälkeen. Tämän ansiosta tehtävän saa haettua ja poistettua listalta kätevästi pop-metodilla.

    Seuraava koodi esittelee luokan käyttämistä:

    lista = Tehtavalista()\nlista.lisaa(\"opiskelu\", 50)\nlista.lisaa(\"ulkoilu\", 60)\nlista.lisaa(\"siivous\", 10)\nprint(lista.yhteensa())\nprint(lista.hae_seuraava())\nprint(lista.yhteensa())\nlista.lisaa(\"treffit\", 100)\nprint(lista.yhteensa())\nprint(lista.hae_seuraava())\nprint(lista.hae_seuraava())\nprint(lista.yhteensa())\nlista.tyhjenna()\nprint(lista.yhteensa())

    3\nulkoilu\n2\n3\ntreffit\nopiskelu\n1\n0

    Luokka Sarja

    Tee luokka Sarja, joka toimii seuraavasti

    dexter = Sarja(\"Dexter\", 8, [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"])\nprint(dexter)

    Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\nei arvosteluja

    Konstruktorissa siis asetetaan sarjan nimi, sen esityskausien lukumäärä sekä lista, joka kertoo mitä genrejä sarja edustaa.

    Vihje: merkkijonotaulukko saadaan muutettua haluttuja välimerkkejä sisältäväksi merkkijonoksi metodin join avulla seuraavasti:

    lista = [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"]\nmerkkijono = \", \".join(lista)\nprint(merkkijono)

    Crime, Drama, Mystery, Thriller

    Arvostelujen lisääminen

    Tee luokalle metodi arvostele(arvosana: int), jonka avulla sarjalle voi lisätä arvosanan, joka on kokonaisluku väliltä 0–5. Myös metodia __str__ tulee muuttaa niin, että se antaa arvostelujen määrän ja keskiarvon pyöristettynä yhden desimaalin tarkkuudelle (jos arvosteluja on annettu).

    dexter = Sarja(\"Dexter\", 8, [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"])\ndexter.arvostele(4)\ndexter.arvostele(5)\ndexter.arvostele(5)\ndexter.arvostele(3)\ndexter.arvostele(0)\nprint(dexter)

    Dexter (8 esityskautta)\ngenret: Crime, Drama, Mystery, Thriller\narvosteluja 5, keskiarvo 3.4 pistettä

    Sarjojen haku

    Tee kaksi funktiota arvosana_vahintaan(arvosana: float, sarjat: list) ja sisaltaa_genren(genre: str, sarjat: list), joiden avulla on mahdollista etsiä listalla olevia sarjoja.

    Metodit toimivat seuraavasti:

    s1 = Sarja(\"Dexter\", 8, [\"Crime\", \"Drama\", \"Mystery\", \"Thriller\"])\ns1.arvostele(5)\n\ns2 = Sarja(\"South Park\", 24, [\"Animation\", \"Comedy\"])\ns2.arvostele(3)\n\ns3 = Sarja(\"Friends\", 10, [\"Romance\", \"Comedy\"])\ns3.arvostele(2)\n\nsarjat = [s1, s2, s3]\n\nprint(\"arvosana vähintään 4.5:\")\nfor sarja in arvosana_vahintaan(4.5, sarjat):\n    print(sarja.nimi)\n\nprint(\"genre Comedy:\")\nfor sarja in sisaltaa_genren(\"Comedy\", sarjat):\n    print(sarja.nimi)

    arvosana vähintään 4.5:\nDexter

    genre Comedy:\nSouth Park\nFriends

    Huomaa, että yllä oleva koodi ja testit olettavat, että luokassa on attribuutti nimi. Jos olet käyttänyt muuta nimeä, sinun kannattaa vaihtaa se nyt.

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/5-lisaa-esimerkkeja.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-8/page-data.json b/page-data/osa-8/page-data.json index 78ddb50c3..563dc988c 100644 --- a/page-data/osa-8/page-data.json +++ b/page-data/osa-8/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-8", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-8","title":"Osa 8"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-8","title":"Osa 8"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-8/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/1-oliot-ja-viittaukset/page-data.json b/page-data/osa-9/1-oliot-ja-viittaukset/page-data.json index 139e7ce00..3b51c38f7 100644 --- a/page-data/osa-9/1-oliot-ja-viittaukset/page-data.json +++ b/page-data/osa-9/1-oliot-ja-viittaukset/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-9/1-oliot-ja-viittaukset", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten olioita voi tallentaa tietorakenteisiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten olioiden välitys parametrina toimii"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa kaikki arvot ovat olioita ja myös omista luokista luotuja olioita voi käsitellä kuin mitä tahansa muitakin olioita. Esimerkiksi olioita voidaan tallentaa listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kurssisuoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suorituspvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kurssi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorituspvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorituspvm\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan pari kurssisuoritusta ja lisätään listaan"}]},{"type":"text","value":"\n suoritukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n mat1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matematiikka 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ohj1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmointi 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mat1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohj1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään suoraan listaan muutama"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fysiikka 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmointi 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Käydään läpi kaikki suoritukset, tulostetaan nimet ja lasketaan opintopisteet yhteen"}]},{"type":"text","value":"\n opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteitä yhteensä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matematiikka 1\nOhjelmointi 1\nFysiikka 2\nOhjelmointi 2\nOpintopisteitä yhteensä: 20"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Nopein auto","tmcname":"osa09-01_nopein_auto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa oleva luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":" mallintaa autoa kahden attribuutin avulla: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkki (str)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"huippunopeus (int)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nopein_auto(autot: list)"}]},{"type":"text","value":", joka saa parametrikseen listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":"-luokan olioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa listassa olevista autoista nopeimman auton merkin. Voit olettaa, että nopein auto on yksikäsitteinen. Älä muuta alkuperäistä listaa tai luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion testauksesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n auto1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mersu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"195"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n auto2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lada\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n auto3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ferrari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"280"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n auto4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Trabant\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n autot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"auto1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" auto2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" auto3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" auto4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nopein_auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"autot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ferrari"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hyväksytyt suoritukset","tmcname":"osa09-02_hyvaksytyt_suoritukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Koesuoritus"}]},{"type":"text","value":", joka mallintaa nimensä mukaisesti koesuoritusta. Sillä on kaksi attribuuttia, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorittaja (str)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisteet (int)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hyvaksytyt(suoritukset: list, pisteraja: int)"}]},{"type":"text","value":", joka saa parametrikseen listan koesuorituksia ja alimman hyväksytyn pistemäärän kokonaislukuna."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio muodostaa ja palauttaa uuden listan, johon on tallennettu ainoastaan hyväksytyt suoritukset listalta. Älä muuta alkuperäistä listaa tai luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Koesuoritus"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pauli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirkko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Petriina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n hyv "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hyvaksytyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" hyvaksytty "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hyv"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hyvaksytty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koesuoritus (suorittaja: Pirjo, pisteet: 19)\nKoesuoritus (suorittaja: Pauli, pisteet: 15)\nKoesuoritus (suorittaja: Petriina, pisteet: 17)"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listaan ei tarkkaan ottaen tallenneta olioita vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittauksia olioihin"}]},{"type":"text","value":". Niinpä sama olio voi esiintyä listassa useaan kertaan ja samaan olioon voidaan viitata useaan kertaan listassa ja sen ulkopuolella. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yksikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yksikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" yksikko\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kauppalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n maito "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"litra\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maito"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maito"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kurkku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kpl\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 313px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/13e71ea262de820629eb873bb73f2d94/80977/9_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 64.34782608695653%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdUlEQVQ4y22TiarCQAxF+/9/pQVRLLihFKu4r1iXui8YOeHlMXa8UNLpJDc3SwP5w/v9VrtYLGS73crhcJD9fq/PbreT9XptrnK9XmW5XEqWZXqP/+VykXa7LUGeEIdfgNRAME8e0+nUJ1ytVhLHsQwGA6nVatLv9/V7mqb/gbfbTcbjsSRJoiT1el1Go5H6eoSUUqlUpFAoqGMYhnI6nVS5+dzvdw0uFosSRZFUq1UVQRKPcLPZaDmQPB4Pfce6JdNDzig9n896BpPJxCekwb9AIgMkx+PR86FNHiGZ6RcEnU5Her2eWlMBns+n3jNlSqV8EnyV7JKanc/nGoS173Zn4I7SDYE5uWRu862HEOeBKsp3474I8wpfr5cuOgqwBJPEhmHL7sYF+awuMQpoNIHD4VB7xFrRZ86z2eyLUEtuNpvSaDSkXC5Lq9XSEpk0JOyhAWX2lxiJTdoVEdjSWj/cS7YfUv7RUqmkEyUxIkje7XY9hR86hOegM+cgfwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/13e71ea262de820629eb873bb73f2d94/a0b58/9_1_1.webp 230w","/static/13e71ea262de820629eb873bb73f2d94/12766/9_1_1.webp 313w"],"sizes":"(max-width: 313px) 100vw, 313px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/13e71ea262de820629eb873bb73f2d94/81c8e/9_1_1.png 230w","/static/13e71ea262de820629eb873bb73f2d94/80977/9_1_1.png 313w"],"sizes":"(max-width: 313px) 100vw, 313px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/13e71ea262de820629eb873bb73f2d94/80977/9_1_1.png","alt":"9 1 1","title":"9 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos samaan olioon on useampi kuin yksi viittaus, on lopputuloksen kannalta yhdentekevää, mitä viittauksista käytetään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Koira"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi\n\nkoirat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nmusti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Musti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Musti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Koirat alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koira "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kohdan 0 koira saa uuden nimen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rekku\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koira "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kohdan 2 koira saa uuden nimen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fifi\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koira "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koirat alussa:\nMusti\nMusti\nMusti\nKohdan 0 koira saa uuden nimen:\nRekku\nRekku\nMusti\nKohdan 2 koira saa uuden nimen:\nRekku\nRekku\nFifi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan kohdissa 0 ja 1 on viittaus samaan olioon, joten olion sisältöä voidaan muuttaa kumman tahansa viittauksen kautta. Listan kohdassa 2 on kuitenkin viittaus toiseen olioon, minkä vuoksi tämän olion muuttaminen ei muuta muita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattorilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" voidaan tutkia, onko kyseessä täysin sama olio, ja operaattorilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" voidaan tutkia, onko kyseessä saman sisältöinen olio. Seuraava koodi havainnollistaa asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista1\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue\nFalse"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nTrue"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omista luokista muodostettuja olioita voidaan myös tallentaa esimerkiksi sanakirjaan ja muihin tietorakenteisiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" op"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"op "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" op\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Käytetään avaimena opiskelijanumeroa ja arvona Opiskelija-oliota"}]},{"type":"text","value":"\n opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"54321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"67"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visualisaattori"}]},{"type":"text","value":" osaa havainnollistaa nämäkin asiat hienosti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/d20c7f9a5570bf04d75c3836868a8870/15171/9_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.04347826086957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABPklEQVQoz2WR20rEMBBA/f+/8k0RFUVExdVda7ubtnHbSSfN3FLtVlHWA4E85DBnyEkYUow44Oj36PexB4wRpx9yzvPJ2cymf5xQSuM4ElHre1fvmSX/IGqA4xBHFgkBzPRYHgZ0BwIAMxFRSslynqbJeTi9uC9cr6ptceHr8zBcxXiNeKXazzIz9wcAYMkzs3yQY6Jy14ZILAJ+ReNONIqgCJrJLHddt1q9FEVRVVXT1AAQQmDmpXzJU5WuOuu7x3nv/CcbADabTVG873aurhvnnPfeOdc0zSHh9+lIXL7ddPvbMNwzl7OMiCmlnKcwUB+Sqi3xfycvmJl3dxHvRB5Ui28ZIxIRM5uZqorIcjn6HjMt15feX0K4IXqb5cQWQ6jK8nW93m63bdsy8zLnaPI05fDxHOOTyLNq9SV/Av8dBuHbnwNlAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d20c7f9a5570bf04d75c3836868a8870/a0b58/9_1_2.webp 230w","/static/d20c7f9a5570bf04d75c3836868a8870/bc10c/9_1_2.webp 460w","/static/d20c7f9a5570bf04d75c3836868a8870/966d8/9_1_2.webp 920w","/static/d20c7f9a5570bf04d75c3836868a8870/445df/9_1_2.webp 1380w","/static/d20c7f9a5570bf04d75c3836868a8870/78de1/9_1_2.webp 1840w","/static/d20c7f9a5570bf04d75c3836868a8870/995bd/9_1_2.webp 2230w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d20c7f9a5570bf04d75c3836868a8870/81c8e/9_1_2.png 230w","/static/d20c7f9a5570bf04d75c3836868a8870/08a84/9_1_2.png 460w","/static/d20c7f9a5570bf04d75c3836868a8870/c0255/9_1_2.png 920w","/static/d20c7f9a5570bf04d75c3836868a8870/b1001/9_1_2.png 1380w","/static/d20c7f9a5570bf04d75c3836868a8870/161ec/9_1_2.png 1840w","/static/d20c7f9a5570bf04d75c3836868a8870/15171/9_1_2.png 2230w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/d20c7f9a5570bf04d75c3836868a8870/c0255/9_1_2.png","alt":"9 1 2","title":"9 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"selfilla-vai-ilman","style":"position:relative;"},"children":[{"type":"text","value":"Selfillä vai ilman?"},{"type":"element","tagName":"a","properties":{"href":"#selfilla-vai-ilman","ariaLabel":"selfilla vai ilman permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä vaiheessa kurssia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määre saattaa vaikuttaa vielä hämärältä. Käytetään siis hetki sen pohtimiseen, milloin selfiä tulee käyttää, ja milloin sitä kannattaa olla käyttämättä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä yksinkertaista luokkaa, jonka avulla joukosta sanoja on mahdollista muodostaa sanasto:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsanasto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olio-ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nörtti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"nörtti\nolio\nolio-ohjelmointi\npython"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka tallentaa sanalistan oliomuuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.sanat"}]},{"type":"text","value":". Tässä tapauksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" tarvitaan ehdottomasti sekä luokan konstruktorissa että luokan muissa metodeissa tähän muuttujaan viitatessa, koska muuten sama lista ei ole kaikkien olion metodien käytettävissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään luokalle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin_sana(self)"}]},{"type":"text","value":" joka selvittää nimensä mukaisesti sanaston pisimmän sanan (tai yhden niistä)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävän voisi toteuttaa vaikkapa seuraavasti, mutta näemme kohta miksei se ole kovin hyvä idea:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään kaksi apumuuttujaa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisin"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi siis käyttää kahta apumuuttujaa, jotka on määritelty käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määrettä. Jos vielä halutaan hämmentää ohjelmakoodia lukevaa, apumuuttujat voisi lisäksi nimetä kryptisemmin, esim. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"apu"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"apu2"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään kaksi apumuuttujaa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun muuttujan määrittely tehdään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreen avulla, liitetään muuttuja olion attribuutiksi, eli muuttuja tulee olemaan edelleen olemassa myös metodin suorituksen päätyttyä. Tämä on aivan tarpeetonta, koska kyseisiä apumuuttujia on tarkoitus käyttää vain metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin_sana(self)"}]},{"type":"text","value":". Apumuuttujien määrittely "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreen avulla on siis varsin huono idea."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Paitsi turhaa, apumuuttujien liittäminen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreellä olion attribuuteiksi on myös riskialtista, varsinkin epämääräisesti nimettyjen apumuuttujien tapauksessa. Jos samaa apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.apu"}]},{"type":"text","value":" käytetään monessa eri metodissa mutta täysin eri tarkoituksiin, voivat seuraukset olla arvaamattomat ja koodissa voi ilmetä hankalasti löydettäviä bugeja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelma voi tulla esiin erityisesti silloin jos apumuuttujan alkuarvo annetaan jossain muualla, esimerkiksi konstruktorissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään apumuuttujia"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä ei toimi sillä apu2:n tyyppi on väärä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisaalta uusien olion attribuuttien määrittely "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muualla"}]},{"type":"text","value":" kuin konstruktorissa on sikäli vaarallista, että tällöin olion attribuutit riippuvat siitä, mitä metodeja on suoritettu. Kaikilla saman luokan avulla luoduilla olioilla ei välttämättä ole samoja attribuutteja, mistä seuraa helposti bugeja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siispä oikea tapa määritellä yhdessä metodissa käytettävät apumuuttujat on tehdä se "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ilman"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määrettä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä on oikea tapa määritellä yhden metodin sisäiset apumuuttujat"}]},{"type":"text","value":"\n pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" pisin"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällaisessa toteutuksessa apumuuttujat ovat olemassa ainoastaan metodin suorituksen aikana, ja niissä olevat arvot eivät pääse aiheuttamaan komplikaatioita muussa koodissa."}]},{"type":"element","tagName":"h2","properties":{"id":"oliot-funktioiden-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Oliot funktioiden parametrina"},{"type":"element","tagName":"a","properties":{"href":"#oliot-funktioiden-parametrina","ariaLabel":"oliot funktioiden parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omista luokista luodut oliot ovat yleensä muuttuvia eli mutatoituvia, joten niiden toiminta parametrina välitettäessä muistuttaa esimerkiksi listoista tuttua tapaa: funktio, jolle olio välitetään parametrina, voi muuttaa kyseistä oliota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan yksinkertaista esimerkkiä, jossa funktiolle välitetään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-luokasta luotu olio. Funktion sisällä muutetaan opiskelijan nimi, ja muutos näkyy myös pääohjelmassa, koska molemmissa tilanteissa viitataan samaan olioon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Huomaa, että tyyppivihjeenä käytetään nyt oman luokan nimeä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"muuta_nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan opiskelijaolio"}]},{"type":"text","value":"\nolli "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Oppilas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuuta_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olli Oppilas (12345)\nOlli Opiskelija (12345)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olion voi myös luoda funktion sisällä. Mikäli funktio palauttaa viittauksen olioon, on muodostettu olio käytettävissä myös pääohjelmassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" choice\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Funktio luo ja palauttaa Opiskelija-olion, jolla on satunnainen nimi ja opiskelijanumero"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n etunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Minna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n sukunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virtanen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahtinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Leinonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# arvo nimi"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" choice"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"etunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" choice"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Arvo opiskelijanumero"}]},{"type":"text","value":"\n opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99999"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luo ja palauta opiskelijaolio"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan metodia viidesti, tallennetaan tulokset listaan"}]},{"type":"text","value":"\n opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mari Lahtinen (36213)\nArto Virtanen (11859)\nMari Pythonen (77330)\nArto Pythonen (86451)\nMinna Pythonen (86211)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"oliot-metodien-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Oliot metodien parametrina"},{"type":"element","tagName":"a","properties":{"href":"#oliot-metodien-parametrina","ariaLabel":"oliot metodien parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oliot toimivat normaaliin tapaan myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodien"}]},{"type":"text","value":" parametrina. Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Huvipuistolaite"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pituusraja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kavijoita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituusraja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituusraja\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ota_kyytiin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituusraja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kavijoita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" pääsi kyytiin\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" liian lyhyt :(\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kavijoita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kävijää)\""}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huvipuistolaitteen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ota_kyytiin"}]},{"type":"text","value":" saa nyt parametrina luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" olion. Jos kävijä on riittävän pitkä, metodi päästää hänet laitteeseen ja lisää kävijöiden määrää. Seuraavassa esimerkkisuoritus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"hurjakuru "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huvipuistolaite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hurjakuru\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"120"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njarkko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jarkko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvenla "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"105"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhurjakuru"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_kyytiin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarkko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhurjakuru"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_kyytiin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"venla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hurjakuru"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jarkko pääsi kyytiin\nVenla liian lyhyt :(\nHurjakuru (1 kävijää)"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kasvatuslaitos","tmcname":"osa09-03_kasvatuslaitos"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassasi on valmiina jo luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" sekä runko luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kasvatuslaitos"}]},{"type":"text","value":". Kasvatuslaitosoliot käsittelevät ihmisiä eri tavalla, esim. punnitsevat ja syöttävät ihmisiä. Rakennamme tässä tehtävässä kasvatuslaitoksen. Luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" koodiin ei tehtävässä ole tarkoitus koskea!"}]},{"type":"element","tagName":"h2","properties":{"id":"henkiloiden-punnitseminen","style":"position:relative;"},"children":[{"type":"text","value":"Henkilöiden punnitseminen"},{"type":"element","tagName":"a","properties":{"href":"#henkiloiden-punnitseminen","ariaLabel":"henkiloiden punnitseminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kasvatuslaitoksen luokkarungossa on valmiina runko metodille punnitse:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kasvatuslaitos"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"punnitse"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# palautetaan parametrina annetun henkilön paino"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi saa parametrina henkilön ja metodin on tarkoitus palauttaa kutsujalleen parametrina olevan henkilön paino. Paino selviää pyytämällä parametrina olevalta henkilöltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo"}]},{"type":"text","value":" sopiva attribuutti. Sinun tulee täydentää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punnitse"}]},{"type":"text","value":"-metodin koodia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on pääohjelma jossa kasvatuslaitos punnitsee kaksi henkilöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"haagan_neuvola "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kasvatuslaitos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\neero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"176"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eero painaa 7 kg\nPekka painaa 85 kg"}]}]},{"type":"element","tagName":"h2","properties":{"id":"syottaminen","style":"position:relative;"},"children":[{"type":"text","value":"Syöttäminen"},{"type":"element","tagName":"a","properties":{"href":"#syottaminen","ariaLabel":"syottaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametrina olevan olion tilaa on mahdollista muuttaa. Tee kasvatuslaitokselle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syota(henkilo: Henkilo)"}]},{"type":"text","value":" joka kasvattaa parametrina olevan henkilön painoa yhdellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki, jossa henkilöt ensin punnitaan ja tämän jälkeen neuvolassa syötetään Eeroa kolme kertaa. Tämän jälkeen henkilöt taas punnitaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"haagan_neuvola "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kasvatuslaitos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\neero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"176"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syota"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syota"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syota"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen pitäisi paljastaa, että Eeron paino on noussut kolmella:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eero painaa 7 kg\nPekka painaa 85 kg"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eero painaa 10 kg\nPekka painaa 85 kg"}]}]},{"type":"element","tagName":"h2","properties":{"id":"punnitusten-laskeminen","style":"position:relative;"},"children":[{"type":"text","value":"Punnitusten laskeminen"},{"type":"element","tagName":"a","properties":{"href":"#punnitusten-laskeminen","ariaLabel":"punnitusten laskeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee kasvatuslaitokselle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punnitukset()"}]},{"type":"text","value":" joka kertoo, kuinka monta punnitusta kasvatuslaitos on ylipäätään tehnyt. Huom! Tarvitset uuden oliomuuttujan punnitusten lukumäärän laskemiseen. Testipääohjelma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"haagan_neuvola "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kasvatuslaitos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\neero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"176"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Punnituksia tehty "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Punnituksia tehty "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Punnituksia tehty "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Punnituksia tehty 0\nPunnituksia tehty 2\nPunnituksia tehty 6"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Maksukortti ja kassapääte","tmcname":"osa09-04_maksukortti_ja_kassapaate"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teimme edellisessä osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-8/5-lisaa-esimerkkeja#programming-exercise-maksukortti"},"children":[{"type":"text","value":"tehtävässä"}]},{"type":"text","value":" luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":". Kortilla oli metodit edullisesti ja maukkaasti syömistä sekä rahan lataamista varten."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisen osan tyylillä tehdyssä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"-luokassa oli kuitenkin ongelma. Kortti tiesi lounaiden hinnan ja osasi sen ansiosta vähentää saldoa oikean määrän. Entä kun hinnat nousevat? Tai jos myyntivalikoimaan tulee uusia tuotteita? Hintojen muuttaminen tarkoittaisi, että kaikki jo käytössä olevat kortit pitäisi korvata uudet hinnat tuntevilla korteilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi ratkaisu on tehdä kortit \"tyhmiksi\", hinnoista ja myytävistä tuotteista tietämättömiksi pelkän saldon säilyttäjiksi. Kaikki äly kannattaakin laittaa erillisiin olioihin, kassapäätteisiin."}]},{"type":"element","tagName":"h2","properties":{"id":"tyhma-maksukortti","style":"position:relative;"},"children":[{"type":"text","value":"\"Tyhmä\" maksukortti"},{"type":"element","tagName":"a","properties":{"href":"#tyhma-maksukortti","ariaLabel":"tyhma maksukortti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteutetaan ensin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"-luokasta \"tyhmä\" versio. Kortilla on ainoastaan metodit saldon kysymiseen, rahan lataamiseen ja rahan ottamiseen. Täydennä alla ja tehtäväpohjassa olevaan luokkaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ota_rahaa(maara)"}]},{"type":"text","value":" ohjeen mukaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" lisays\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ota_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Toteuta metodi siten, että se ottaa kortilta rahaa vain, jos saldoa riittää"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Onnistuessaan metodi palauttaa True ja muuten False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Testipääohjelma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onnistuiko otto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onnistuiko otto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rahaa 10\nOnnistuiko otto: True\nRahaa 2\nOnnistuiko otto: False\nRahaa 2"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kassapaate-ja-kateiskauppa","style":"position:relative;"},"children":[{"type":"text","value":"Kassapääte ja käteiskauppa"},{"type":"element","tagName":"a","properties":{"href":"#kassapaate-ja-kateiskauppa","ariaLabel":"kassapaate ja kateiskauppa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Unicafessa asioidessa asiakas maksaa joko käteisellä tai maksukortilla. Myyjä käyttää kassapäätettä kortin veloittamiseen ja käteismaksujen hoitamiseen. Tehdään ensin kassapäätteestä käteismaksuihin sopiva versio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kassapäätteen runko on seuraavanlainen. Metodien kommentit kertovat halutun toiminnallisuuden."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kassapaate"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kassassa on aluksi 1000 euroa rahaa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_edullisesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maksu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Edullinen lounas maksaa 2.50 euroa."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan kassan rahamäärää edullisen lounaan hinnalla ja palautetaan vaihtorahat"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_maukkaasti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maksu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Maukas lounas maksaa 4.30 euroa."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan kassan rahamäärää maukkaan lounaan hinnalla ja palautetaan vaihtorahat"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"exactum "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kassapaate"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kassassa rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Edullisia lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maukkaita lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaihtorahaa jäi 7.5\nVaihtorahaa jäi 2.5\nVaihtorahaa jäi 0.0\nKassassa rahaa 1009.3\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kortilla-maksaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kortilla maksaminen"},{"type":"element","tagName":"a","properties":{"href":"#kortilla-maksaminen","ariaLabel":"kortilla maksaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan kassapäätettä siten, että myös kortilla voi maksaa. Teemme kassapäätteelle siis metodit, joiden parametrina kassapääte saa maksukortin, jolta se vähentää valitun lounaan hinnan. Seuraavassa ovat uusien metodien rungot ja ohje niiden toteuttamiseksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kassapaate"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_edullisesti_kortilla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Edullinen lounas maksaa 2.50 euroa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten palautetaan False"}]},{"type":"text","value":"\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_maukkaasti_kortilla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Maukas lounas maksaa 4.30 euroa."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten palautetaan False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" kortilla maksaminen ei lisää kassapäätteessä olevan käteisen määrää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on testipääohjelma ja haluttu tulostus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"exactum "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kassapaate"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kassassa rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Edullisia lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maukkaita lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaihtorahaa jäi 7.5\nRiittikö raha: True\nRiittikö raha: False\nRiittikö raha: True\nKassassa rahaa 1002.5\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"rahan-lataaminen","style":"position:relative;"},"children":[{"type":"text","value":"Rahan lataaminen"},{"type":"element","tagName":"a","properties":{"href":"#rahan-lataaminen","ariaLabel":"rahan lataaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään vielä kassapäätteelle metodi jonka avulla kortille voidaan ladata lisää rahaa. Muista, että rahan lataamisen yhteydessä ladattava summa viedään kassapäätteeseen. Metodin runko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_rahaa_kortille"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Testipääohjelma ja esimerkkisyöte:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"exactum "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kassapaate"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nantin_kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kortilla rahaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nexactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa_kortille"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kortilla rahaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kortilla rahaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kassassa rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Edullisia lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maukkaita lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla rahaa 2 euroa\nRiittikö raha: False\nKortilla rahaa 102 euroa\nRiittikö raha: True\nKortilla rahaa 97.7 euroa\nKassassa rahaa 1100\nEdullisia lounaita myyty 0\nMaukkaita lounaita myyty 1"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"saman-luokan-oliot-metodien-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Saman luokan oliot metodien parametrina"},{"type":"element","tagName":"a","properties":{"href":"#saman-luokan-oliot-metodien-parametrina","ariaLabel":"saman luokan oliot metodien parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan jälleen kerran yhtä versiota luokasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" syntynyt"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan että olemme tekemässä ohjelmaa, joka vertailee henkilöiden ikiä. Voisimme tehdä tarkoitusta varten erillisen funktion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\nmuhammad "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muhammad ibn Musa al-Khwarizmi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"780"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npascal "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Blaise Pascal\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1623"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ngrace "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Grace Hopper\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1906"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muhammad ibn Musa al-Khwarizmi on vanhempi kuin Blaise Pascal\nGrace Hopper ei ole vanhempi kuin Blaise Pascal"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnin henkeen kuuluu kuitenkin sijoittaa oliota käsittelevät \"funktiot\" luokan metodeiksi. Voisimmekin tehdä henkilölle metodin, jonka avulla henkilön ikää voidaan verrata "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"toiseen"}]},{"type":"text","value":" henkilöön:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" syntynyt\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Henkilo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis olio itse on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"toinen"}]},{"type":"text","value":" on henkilöolio, joka toimii vertailukohtana."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, miten metodin kutsuminen eroaa funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"muhammad "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muhammad ibn Musa al-Khwarizmi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"780"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npascal "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Blaise Pascal\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1623"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ngrace "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Grace Hopper\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1906"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pisteen vasemmalla puolella on siis verrattava henkilö, eli olio, johon metodin suorituksessa viittaa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":". Metodin parametrina taas on vertailukohta, eli metodin suorituksessa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"toinen"}]},{"type":"text","value":" viittaama olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on sama kuin edellisessä funktiota käyttäneessä esimerkissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että if-else-rakenne metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"text","value":" on oikeastaan turha, sillä vertailun arvona on suoraan haluamamme totuusarvo. Voimme siis yksinkertaistaa metodia seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" syntynyt\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Henkilo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisestä esimerkistä kannattaa huomata se, että kun metodi saa parametrikseen toisen saman luokan olion, tulee tyyppivihje antaa hipsuissa, eli seuraava koodi aiheuttaisi virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä ei toimi, Henkilo pitaa olla hipsuissa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Asuntovertailu","tmcname":"osa09-05_asuntovertailu"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asuntovälitystoimiston tietojärjestelmässä kuvataan myynnissä olevaa asuntoa seuraavasta luokasta tehdyillä olioilla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Asunto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huoneita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nelioita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" neliohinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"huoneita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huoneita\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nelioita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nelioita\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"neliohinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" neliohinta"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävänä on toteuttaa metodeita, joiden avulla myynnissä olevia asuntoja voidaan vertailla."}]},{"type":"element","tagName":"h2","properties":{"id":"onko-suurempi","style":"position:relative;"},"children":[{"type":"text","value":"Onko suurempi"},{"type":"element","tagName":"a","properties":{"href":"#onko-suurempi","ariaLabel":"onko suurempi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurempi(self, verrattava)"}]},{"type":"text","value":", joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos asunto-olio itse on pinta-alaltaan suurempi kuin verrattava asunto-olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"eira_yksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkallio_kaksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njakomaki_kolmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eira_yksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suurempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jakomaki_kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suurempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"hintaero","style":"position:relative;"},"children":[{"type":"text","value":"Hintaero"},{"type":"element","tagName":"a","properties":{"href":"#hintaero","ariaLabel":"hintaero permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hintaero(self, verrattava)"}]},{"type":"text","value":", joka palauttaa asunto-olion ja verrattavan asunto-olion hintaeron. Hintaero on asuntojen hintojen erotuksen (hinta lasketaan kertomalla neliöhinta neliöillä) itseisarvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"eira_yksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkallio_kaksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njakomaki_kolmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eira_yksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hintaero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jakomaki_kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hintaero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"71600\n35400"}]}]},{"type":"element","tagName":"h2","properties":{"id":"onko-kalliimpi","style":"position:relative;"},"children":[{"type":"text","value":"Onko kalliimpi?"},{"type":"element","tagName":"a","properties":{"href":"#onko-kalliimpi","ariaLabel":"onko kalliimpi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kalliimpi(self, verrattava)"}]},{"type":"text","value":" joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos asunto-olio on kalliimpi kuin verrattavana oleva asunto-olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"eira_yksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkallio_kaksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njakomaki_kolmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eira_yksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kalliimpi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jakomaki_kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kalliimpi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten olioita voi tallentaa tietorakenteisiin
    • \n
    • Tiedät, miten olioiden välitys parametrina toimii
    • \n

    Pythonissa kaikki arvot ovat olioita ja myös omista luokista luotuja olioita voi käsitellä kuin mitä tahansa muitakin olioita. Esimerkiksi olioita voidaan tallentaa listaan:

    from datetime import date\n\nclass Kurssisuoritus:\n\n    def __init__(self, kurssi: str, opintopisteet: int, suorituspvm: date):\n        self.kurssi = kurssi\n        self.opintopisteet = opintopisteet\n        self.suorituspvm = suorituspvm\n\n\nif __name__ == \"__main__\":\n    # Luodaan pari kurssisuoritusta ja lisätään listaan\n    suoritukset = []\n\n    mat1 = Kurssisuoritus(\"Matematiikka 1\", 5, date(2020, 3, 11))\n    ohj1 = Kurssisuoritus(\"Ohjelmointi 1\", 6, date(2019, 12, 17))\n\n    suoritukset.append(mat1)\n    suoritukset.append(ohj1)\n\n    # Lisätään suoraan listaan muutama\n    suoritukset.append(Kurssisuoritus(\"Fysiikka 2\", 4, date(2019, 11, 10)))\n    suoritukset.append(Kurssisuoritus(\"Ohjelmointi 2\", 5, date(2020, 5, 19)))\n\n    # Käydään läpi kaikki suoritukset, tulostetaan nimet ja lasketaan opintopisteet yhteen\n    opintopisteet = 0\n    for suoritus in suoritukset:\n        print(suoritus.kurssi)\n        opintopisteet += suoritus.opintopisteet\n\n    print(\"Opintopisteitä yhteensä:\", opintopisteet)

    Matematiikka 1\nOhjelmointi 1\nFysiikka 2\nOhjelmointi 2\nOpintopisteitä yhteensä: 20

    Tehtäväpohjassa oleva luokka Auto mallintaa autoa kahden attribuutin avulla: merkki (str) ja huippunopeus (int).

    Kirjoita funktio nopein_auto(autot: list), joka saa parametrikseen listan Auto-luokan olioita.

    Funktio palauttaa listassa olevista autoista nopeimman auton merkin. Voit olettaa, että nopein auto on yksikäsitteinen. Älä muuta alkuperäistä listaa tai luokkaa Auto.

    Esimerkki funktion testauksesta:

    if __name__ == \"__main__\":\n    auto1 = Auto(\"Mersu\", 195)\n    auto2 = Auto(\"Lada\", 110)\n    auto3 = Auto(\"Ferrari\", 280)\n    auto4 = Auto(\"Trabant\", 85)\n\n    autot = [auto1, auto2, auto3, auto4]\n    print(nopein_auto(autot))

    Ferrari

    Tehtäväpohjasta löytyy luokka Koesuoritus, joka mallintaa nimensä mukaisesti koesuoritusta. Sillä on kaksi attribuuttia, suorittaja (str) ja pisteet (int).

    Kirjoita funktio hyvaksytyt(suoritukset: list, pisteraja: int), joka saa parametrikseen listan koesuorituksia ja alimman hyväksytyn pistemäärän kokonaislukuna.

    Funktio muodostaa ja palauttaa uuden listan, johon on tallennettu ainoastaan hyväksytyt suoritukset listalta. Älä muuta alkuperäistä listaa tai luokkaa Koesuoritus.

    Esimerkki funktion käytöstä:

    if __name__ == \"__main__\":\n    s1 = Koesuoritus(\"Pekka\", 12)\n    s2 = Koesuoritus(\"Pirjo\", 19)\n    s3 = Koesuoritus(\"Pauli\", 15)\n    s4 = Koesuoritus(\"Pirkko\", 9)\n    s5 = Koesuoritus(\"Petriina\", 17)\n\n    hyv = hyvaksytyt([s1, s2, s3, s4, s5], 15)\n    for hyvaksytty in hyv:\n        print(hyvaksytty)

    Koesuoritus (suorittaja: Pirjo, pisteet: 19)\nKoesuoritus (suorittaja: Pauli, pisteet: 15)\nKoesuoritus (suorittaja: Petriina, pisteet: 17)

    Listaan ei tarkkaan ottaen tallenneta olioita vaan viittauksia olioihin. Niinpä sama olio voi esiintyä listassa useaan kertaan ja samaan olioon voidaan viitata useaan kertaan listassa ja sen ulkopuolella. Esimerkiksi näin:

    class Tuote:\n    def __init__(self, nimi: int, yksikko: str):\n        self.nimi = nimi\n        self.yksikko = yksikko\n\n\nif __name__ == \"__main__\":\n    kauppalista = []\n    maito = Tuote(\"Maito\", \"litra\")\n\n    kauppalista.append(maito)\n    kauppalista.append(maito)\n    kauppalista.append(Tuote(\"Kurkku\", \"kpl\"))
    \n \n \n \n \n \n \"9\n \n \n

    Jos samaan olioon on useampi kuin yksi viittaus, on lopputuloksen kannalta yhdentekevää, mitä viittauksista käytetään:

    class Koira:\n    def __init__(self, nimi):\n        self.nimi = nimi\n\n    def __str__(self):\n        return self.nimi\n\nkoirat = []\nmusti = Koira(\"Musti\")\nkoirat.append(musti)\nkoirat.append(musti)\nkoirat.append(Koira(\"Musti\"))\n\nprint(\"Koirat alussa:\")\nfor koira in koirat:\n    print(koira)\n\nprint(\"Kohdan 0 koira saa uuden nimen:\")\nkoirat[0].nimi = \"Rekku\"\nfor koira in koirat:\n    print(koira)\n\nprint(\"Kohdan 2 koira saa uuden nimen:\")\nkoirat[2].nimi = \"Fifi\"\nfor koira in koirat:\n    print(koira)

    Koirat alussa:\nMusti\nMusti\nMusti\nKohdan 0 koira saa uuden nimen:\nRekku\nRekku\nMusti\nKohdan 2 koira saa uuden nimen:\nRekku\nRekku\nFifi

    Listan kohdissa 0 ja 1 on viittaus samaan olioon, joten olion sisältöä voidaan muuttaa kumman tahansa viittauksen kautta. Listan kohdassa 2 on kuitenkin viittaus toiseen olioon, minkä vuoksi tämän olion muuttaminen ei muuta muita.

    Operaattorilla is voidaan tutkia, onko kyseessä täysin sama olio, ja operaattorilla == voidaan tutkia, onko kyseessä saman sisältöinen olio. Seuraava koodi havainnollistaa asiaa:

    lista1 = [1, 2, 3]\nlista2 = [1, 2, 3]\nlista3 = lista1\n\nprint(lista1 is lista2)\nprint(lista1 is lista3)\nprint(lista2 is lista3)\n\nprint()\n\nprint(lista1 == lista2)\nprint(lista1 == lista3)\nprint(lista2 == lista3)

    False\nTrue\nFalse

    True\nTrue\nTrue

    Omista luokista muodostettuja olioita voidaan myös tallentaa esimerkiksi sanakirjaan ja muihin tietorakenteisiin:

    class Opiskelija:\n    def __init__(self, nimi: str, op: int):\n        self.nimi = nimi\n        self.op = op\n\nif __name__ == \"__main__\":\n    # Käytetään avaimena opiskelijanumeroa ja arvona Opiskelija-oliota\n    opiskelijat = {}\n    opiskelijat[\"12345\"] = Opiskelija(\"Olli Opiskelija\", 10)\n    opiskelijat[\"54321\"] = Opiskelija(\"Outi Opiskelija\", 67)

    Visualisaattori osaa havainnollistaa nämäkin asiat hienosti:

    \n \n \n \n \n \n \"9\n \n \n

    Selfillä vai ilman?

    Tässä vaiheessa kurssia self-määre saattaa vaikuttaa vielä hämärältä. Käytetään siis hetki sen pohtimiseen, milloin selfiä tulee käyttää, ja milloin sitä kannattaa olla käyttämättä.

    Tarkastellaan esimerkkinä yksinkertaista luokkaa, jonka avulla joukosta sanoja on mahdollista muodostaa sanasto:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    def lisaa_sana(self, sana: str):\n        if not sana in self.sanat:\n            self.sanat.append(sana)\n\n    def tulosta(self):\n        for sana in sorted(self.sanat):\n            print(sana)\n\nsanasto = Sanasto()\nsanasto.lisaa_sana(\"python\")\nsanasto.lisaa_sana(\"olio\")\nsanasto.lisaa_sana(\"olio-ohjelmointi\")\nsanasto.lisaa_sana(\"olio\")\nsanasto.lisaa_sana(\"nörtti\")\n\nsanasto.tulosta()

    nörtti\nolio\nolio-ohjelmointi\npython

    Luokka tallentaa sanalistan oliomuuttujaan self.sanat. Tässä tapauksessa self tarvitaan ehdottomasti sekä luokan konstruktorissa että luokan muissa metodeissa tähän muuttujaan viitatessa, koska muuten sama lista ei ole kaikkien olion metodien käytettävissä.

    Lisätään luokalle metodi pisin_sana(self) joka selvittää nimensä mukaisesti sanaston pisimmän sanan (tai yhden niistä).

    Tehtävän voisi toteuttaa vaikkapa seuraavasti, mutta näemme kohta miksei se ole kovin hyvä idea:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    # ...\n\n    def pisin_sana(self):\n        # määritellään kaksi apumuuttujaa\n        self.pisin = \"\"\n        self.pisimman_pituus = 0\n\n        for sana in self.sanat:\n            if len(sana) > self.pisimman_pituus:\n                self.pisimman_pituus = len(sana)\n                self.pisin = sana\n\n        return self.pisin

    Metodi siis käyttää kahta apumuuttujaa, jotka on määritelty käyttäen self-määrettä. Jos vielä halutaan hämmentää ohjelmakoodia lukevaa, apumuuttujat voisi lisäksi nimetä kryptisemmin, esim. apu ja apu2:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    # ...\n\n    def pisin_sana(self):\n        # määritellään kaksi apumuuttujaa\n        self.apu = \"\"\n        self.apu2 = 0\n\n        for sana in self.sanat:\n            if len(sana) > self.apu2:\n                self.apu2 = len(sana)\n                self.apu = sana\n\n        return self.apu

    Kun muuttujan määrittely tehdään self-määreen avulla, liitetään muuttuja olion attribuutiksi, eli muuttuja tulee olemaan edelleen olemassa myös metodin suorituksen päätyttyä. Tämä on aivan tarpeetonta, koska kyseisiä apumuuttujia on tarkoitus käyttää vain metodissa pisin_sana(self). Apumuuttujien määrittely self-määreen avulla on siis varsin huono idea.

    Paitsi turhaa, apumuuttujien liittäminen self-määreellä olion attribuuteiksi on myös riskialtista, varsinkin epämääräisesti nimettyjen apumuuttujien tapauksessa. Jos samaa apumuuttujaa self.apu käytetään monessa eri metodissa mutta täysin eri tarkoituksiin, voivat seuraukset olla arvaamattomat ja koodissa voi ilmetä hankalasti löydettäviä bugeja.

    Ongelma voi tulla esiin erityisesti silloin jos apumuuttujan alkuarvo annetaan jossain muualla, esimerkiksi konstruktorissa:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n        # määritellään apumuuttujia\n        self.apu = \"\"\n        self.apu2 = \"\"\n        self.apu3 = \"\"\n        self.apu4 = \"\"\n\n    # ...\n\n    def pisin_sana(self):\n        for sana in self.sanat:\n            # tämä ei toimi sillä apu2:n tyyppi on väärä\n            if len(sana) > self.apu2:\n                self.apu2 = len(sana)\n                self.apu = sana\n\n        return self.apu

    Toisaalta uusien olion attribuuttien määrittely muualla kuin konstruktorissa on sikäli vaarallista, että tällöin olion attribuutit riippuvat siitä, mitä metodeja on suoritettu. Kaikilla saman luokan avulla luoduilla olioilla ei välttämättä ole samoja attribuutteja, mistä seuraa helposti bugeja.

    Siispä oikea tapa määritellä yhdessä metodissa käytettävät apumuuttujat on tehdä se ilman self-määrettä:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    # ...\n\n    def pisin_sana(self):\n        # tämä on oikea tapa määritellä yhden metodin sisäiset apumuuttujat\n        pisin = \"\"\n        pisimman_pituus = 0\n\n        for sana in self.sanat:\n            if len(sana) > pisimman_pituus:\n                pisimman_pituus = len(sana)\n                pisin = sana\n\n        return pisin

    Tällaisessa toteutuksessa apumuuttujat ovat olemassa ainoastaan metodin suorituksen aikana, ja niissä olevat arvot eivät pääse aiheuttamaan komplikaatioita muussa koodissa.

    Oliot funktioiden parametrina

    Omista luokista luodut oliot ovat yleensä muuttuvia eli mutatoituvia, joten niiden toiminta parametrina välitettäessä muistuttaa esimerkiksi listoista tuttua tapaa: funktio, jolle olio välitetään parametrina, voi muuttaa kyseistä oliota.

    Tarkastellaan yksinkertaista esimerkkiä, jossa funktiolle välitetään Opiskelija-luokasta luotu olio. Funktion sisällä muutetaan opiskelijan nimi, ja muutos näkyy myös pääohjelmassa, koska molemmissa tilanteissa viitataan samaan olioon.

    class Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.opiskelijanumero})\"\n\n# Huomaa, että tyyppivihjeenä käytetään nyt oman luokan nimeä\ndef muuta_nimi(opiskelija: Opiskelija):\n    opiskelija.nimi = \"Olli Opiskelija\"\n\n# Luodaan opiskelijaolio\nolli = Opiskelija(\"Olli Oppilas\", \"12345\")\n\nprint(olli)\nmuuta_nimi(olli)\nprint(olli)

    Olli Oppilas (12345)\nOlli Opiskelija (12345)

    Olion voi myös luoda funktion sisällä. Mikäli funktio palauttaa viittauksen olioon, on muodostettu olio käytettävissä myös pääohjelmassa:

    from random import randint, choice\n\nclass Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.opiskelijanumero})\"\n\n\n# Funktio luo ja palauttaa Opiskelija-olion, jolla on satunnainen nimi ja opiskelijanumero\ndef uusi_opiskelija():\n    etunimet = [\"Arto\",\"Pekka\",\"Minna\",\"Mari\"]\n    sukunimet = [\"Virtanen\", \"Lahtinen\", \"Leinonen\", \"Pythonen\"]\n\n    # arvo nimi\n    nimi = choice(etunimet) + \" \" + choice(sukunimet)\n\n    # Arvo opiskelijanumero\n    opiskelijanumero = str(randint(10000,99999))\n\n    # Luo ja palauta opiskelijaolio\n    return Opiskelija(nimi, opiskelijanumero)\n\nif __name__ == \"__main__\":\n    # Kutsutaan metodia viidesti, tallennetaan tulokset listaan\n    opiskelijat = []\n    for i in range(5):\n        opiskelijat.append(uusi_opiskelija())\n\n    # Tulostetaan\n    for opiskelija in opiskelijat:\n        print(opiskelija)

    Mari Lahtinen (36213)\nArto Virtanen (11859)\nMari Pythonen (77330)\nArto Pythonen (86451)\nMinna Pythonen (86211)

    Oliot metodien parametrina

    Oliot toimivat normaaliin tapaan myös metodien parametrina. Tarkastellaan seuraavaa esimerkkiä:

    class Henkilo:\n    def __init__(self, nimi: str, pituus: int):\n        self.nimi = nimi\n        self.pituus = pituus\n\nclass Huvipuistolaite:\n    def __init__(self, nimi: str, pituusraja: int):\n        self.kavijoita = 0\n        self.nimi = nimi\n        self.pituusraja = pituusraja\n\n    def ota_kyytiin(self, henkilo: Henkilo):\n        if henkilo.pituus >= self.pituusraja:\n            self.kavijoita += 1\n            print(f\"{henkilo.nimi} pääsi kyytiin\")\n        else:\n            print(f\"{henkilo.nimi} liian lyhyt :(\")\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.kavijoita} kävijää)\"

    Huvipuistolaitteen metodi ota_kyytiin saa nyt parametrina luokan Henkilo olion. Jos kävijä on riittävän pitkä, metodi päästää hänet laitteeseen ja lisää kävijöiden määrää. Seuraavassa esimerkkisuoritus:

    hurjakuru = Huvipuistolaite(\"Hurjakuru\", 120)\njarkko = Henkilo(\"Jarkko\", 172)\nvenla = Henkilo(\"Venla\", 105)\n\nhurjakuru.ota_kyytiin(jarkko)\nhurjakuru.ota_kyytiin(venla)\n\nprint(hurjakuru)

    Jarkko pääsi kyytiin\nVenla liian lyhyt :(\nHurjakuru (1 kävijää)

    Tehtäväpohjassasi on valmiina jo luokka Henkilo sekä runko luokalle Kasvatuslaitos. Kasvatuslaitosoliot käsittelevät ihmisiä eri tavalla, esim. punnitsevat ja syöttävät ihmisiä. Rakennamme tässä tehtävässä kasvatuslaitoksen. Luokan Henkilo koodiin ei tehtävässä ole tarkoitus koskea!

    Henkilöiden punnitseminen

    Kasvatuslaitoksen luokkarungossa on valmiina runko metodille punnitse:

    class Kasvatuslaitos:\n    def punnitse(self, henkilo: Henkilo):\n        # palautetaan parametrina annetun henkilön paino\n        return -1

    Metodi saa parametrina henkilön ja metodin on tarkoitus palauttaa kutsujalleen parametrina olevan henkilön paino. Paino selviää pyytämällä parametrina olevalta henkilöltä henkilo sopiva attribuutti. Sinun tulee täydentää punnitse-metodin koodia.

    Seuraavassa on pääohjelma jossa kasvatuslaitos punnitsee kaksi henkilöä:

    haagan_neuvola = Kasvatuslaitos()\n\neero = Henkilo(\"Eero\", 1, 110, 7)\npekka = Henkilo(\"Pekka\", 33, 176, 85)\n\nprint(f\"{eero.nimi} painaa {haagan_neuvola.punnitse(eero)} kg\")\nprint(f\"{pekka.nimi} painaa {haagan_neuvola.punnitse(pekka)} kg\")

    Eero painaa 7 kg\nPekka painaa 85 kg

    Syöttäminen

    Parametrina olevan olion tilaa on mahdollista muuttaa. Tee kasvatuslaitokselle metodi syota(henkilo: Henkilo) joka kasvattaa parametrina olevan henkilön painoa yhdellä.

    Seuraavassa on esimerkki, jossa henkilöt ensin punnitaan ja tämän jälkeen neuvolassa syötetään Eeroa kolme kertaa. Tämän jälkeen henkilöt taas punnitaan:

    haagan_neuvola = Kasvatuslaitos()\n\neero = Henkilo(\"Eero\", 1, 110, 7)\npekka = Henkilo(\"Pekka\", 33, 176, 85)\n\nprint(f\"{eero.nimi} painaa {haagan_neuvola.punnitse(eero)} kg\")\nprint(f\"{pekka.nimi} painaa {haagan_neuvola.punnitse(pekka)} kg\")\nprint()\n\nhaagan_neuvola.syota(eero)\nhaagan_neuvola.syota(eero)\nhaagan_neuvola.syota(eero)\n\nprint(f\"{eero.nimi} painaa {haagan_neuvola.punnitse(eero)} kg\")\nprint(f\"{pekka.nimi} painaa {haagan_neuvola.punnitse(pekka)} kg\")

    Tulostuksen pitäisi paljastaa, että Eeron paino on noussut kolmella:

    Eero painaa 7 kg\nPekka painaa 85 kg

    Eero painaa 10 kg\nPekka painaa 85 kg

    Punnitusten laskeminen

    Tee kasvatuslaitokselle metodi punnitukset() joka kertoo, kuinka monta punnitusta kasvatuslaitos on ylipäätään tehnyt. Huom! Tarvitset uuden oliomuuttujan punnitusten lukumäärän laskemiseen. Testipääohjelma:

    haagan_neuvola = Kasvatuslaitos()\n\neero = Henkilo(\"Eero\", 1, 110, 7)\npekka = Henkilo(\"Pekka\", 33, 176, 85)\n\nprint(f\"Punnituksia tehty {haagan_neuvola.punnitukset()}\")\n\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\n\nprint(f\"Punnituksia tehty {haagan_neuvola.punnitukset()}\")\n\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\n\nprint(f\"Punnituksia tehty {haagan_neuvola.punnitukset()}\")

    Punnituksia tehty 0\nPunnituksia tehty 2\nPunnituksia tehty 6

    Teimme edellisessä osan tehtävässä luokan Maksukortti. Kortilla oli metodit edullisesti ja maukkaasti syömistä sekä rahan lataamista varten.

    Edellisen osan tyylillä tehdyssä Maksukortti-luokassa oli kuitenkin ongelma. Kortti tiesi lounaiden hinnan ja osasi sen ansiosta vähentää saldoa oikean määrän. Entä kun hinnat nousevat? Tai jos myyntivalikoimaan tulee uusia tuotteita? Hintojen muuttaminen tarkoittaisi, että kaikki jo käytössä olevat kortit pitäisi korvata uudet hinnat tuntevilla korteilla.

    Parempi ratkaisu on tehdä kortit \"tyhmiksi\", hinnoista ja myytävistä tuotteista tietämättömiksi pelkän saldon säilyttäjiksi. Kaikki äly kannattaakin laittaa erillisiin olioihin, kassapäätteisiin.

    \"Tyhmä\" maksukortti

    Toteutetaan ensin Maksukortti-luokasta \"tyhmä\" versio. Kortilla on ainoastaan metodit saldon kysymiseen, rahan lataamiseen ja rahan ottamiseen. Täydennä alla ja tehtäväpohjassa olevaan luokkaan metodin ota_rahaa(maara) ohjeen mukaan:

    class Maksukortti:\n    def __init__(self, saldo: float):\n        self.saldo = saldo\n\n    def lataa_rahaa(self, lisays: float):\n        self.saldo += lisays\n\n    def ota_rahaa(self, maara: float):\n        pass\n        # Toteuta metodi siten, että se ottaa kortilta rahaa vain, jos saldoa riittää\n        # Onnistuessaan metodi palauttaa True ja muuten False

    Testipääohjelma:

    if __name__ == \"__main__\":\n    kortti = Maksukortti(10)\n    print(\"Rahaa\", kortti.saldo)\n    tulos = kortti.ota_rahaa(8)\n    print(\"Onnistuiko otto:\", tulos)\n    print(\"Rahaa\", kortti.saldo)\n    tulos = kortti.ota_rahaa(4)\n    print(\"Onnistuiko otto:\", tulos)\n    print(\"Rahaa\", kortti.saldo)

    Rahaa 10\nOnnistuiko otto: True\nRahaa 2\nOnnistuiko otto: False\nRahaa 2

    Kassapääte ja käteiskauppa

    Unicafessa asioidessa asiakas maksaa joko käteisellä tai maksukortilla. Myyjä käyttää kassapäätettä kortin veloittamiseen ja käteismaksujen hoitamiseen. Tehdään ensin kassapäätteestä käteismaksuihin sopiva versio.

    Kassapäätteen runko on seuraavanlainen. Metodien kommentit kertovat halutun toiminnallisuuden.

    class Kassapaate:\n    def __init__(self):\n        # Kassassa on aluksi 1000 euroa rahaa\n        self.rahaa = 1000\n        self.edulliset = 0\n        self.maukkaat = 0\n\n    def syo_edullisesti(self, maksu: float):\n        # Edullinen lounas maksaa 2.50 euroa.\n        # Kasvatetaan kassan rahamäärää edullisen lounaan hinnalla ja palautetaan vaihtorahat\n        # Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan\n\n    def syo_maukkaasti(self, maksu: float):\n        # Maukas lounas maksaa 4.30 euroa.\n        # Kasvatetaan kassan rahamäärää maukkaan lounaan hinnalla ja palautetaan vaihtorahat\n        # Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan

    Käyttöesimerkki

    exactum = Kassapaate()\n\nvaihtorahaa = exactum.syo_edullisesti(10)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nvaihtorahaa = exactum.syo_edullisesti(5)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nvaihtorahaa = exactum.syo_maukkaasti(4.3)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nprint(\"Kassassa rahaa\", exactum.rahaa)\nprint(\"Edullisia lounaita myyty\", exactum.edulliset)\nprint(\"Maukkaita lounaita myyty\", exactum.maukkaat)

    Vaihtorahaa jäi 7.5\nVaihtorahaa jäi 2.5\nVaihtorahaa jäi 0.0\nKassassa rahaa 1009.3\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1

    Kortilla maksaminen

    Laajennetaan kassapäätettä siten, että myös kortilla voi maksaa. Teemme kassapäätteelle siis metodit, joiden parametrina kassapääte saa maksukortin, jolta se vähentää valitun lounaan hinnan. Seuraavassa ovat uusien metodien rungot ja ohje niiden toteuttamiseksi:

    class Kassapaate:\n    # ...\n\n    def syo_edullisesti_kortilla(self, kortti: Maksukortti):\n        # Edullinen lounas maksaa 2.50 euroa\n        # Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True\n        # Muuten palautetaan False\n\n\n    def syo_maukkaasti_kortilla(self, kortti: Maksukortti):\n        # Maukas lounas maksaa 4.30 euroa.\n        # Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True\n        # Muuten palautetaan False

    Huom: kortilla maksaminen ei lisää kassapäätteessä olevan käteisen määrää.

    Seuraavassa on testipääohjelma ja haluttu tulostus:

    exactum = Kassapaate()\n\nvaihtorahaa = exactum.syo_edullisesti(10)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nkortti = Maksukortti(7)\n\ntulos = exactum.syo_maukkaasti_kortilla(kortti)\nprint(\"Riittikö raha:\", tulos)\ntulos = exactum.syo_maukkaasti_kortilla(kortti)\nprint(\"Riittikö raha:\", tulos)\ntulos = exactum.syo_edullisesti_kortilla(kortti)\nprint(\"Riittikö raha:\", tulos)\n\nprint(\"Kassassa rahaa\", exactum.rahaa)\nprint(\"Edullisia lounaita myyty\", exactum.edulliset)\nprint(\"Maukkaita lounaita myyty\", exactum.maukkaat)

    Vaihtorahaa jäi 7.5\nRiittikö raha: True\nRiittikö raha: False\nRiittikö raha: True\nKassassa rahaa 1002.5\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1

    Rahan lataaminen

    Lisätään vielä kassapäätteelle metodi jonka avulla kortille voidaan ladata lisää rahaa. Muista, että rahan lataamisen yhteydessä ladattava summa viedään kassapäätteeseen. Metodin runko:

    def lataa_rahaa_kortille(self, kortti: Maksukortti, summa: float):\n    pass

    Testipääohjelma ja esimerkkisyöte:

    exactum = Kassapaate()\n\nantin_kortti = Maksukortti(2)\nprint(f\"Kortilla rahaa {antin_kortti.saldo} euroa\")\n\ntulos = exactum.syo_maukkaasti_kortilla(antin_kortti)\nprint(\"Riittikö raha:\", tulos)\n\nexactum.lataa_rahaa_kortille(antin_kortti, 100)\nprint(f\"Kortilla rahaa {antin_kortti.saldo} euroa\")\n\ntulos = exactum.syo_maukkaasti_kortilla(antin_kortti)\nprint(\"Riittikö raha:\", tulos)\nprint(f\"Kortilla rahaa {antin_kortti.saldo} euroa\")\n\nprint(\"Kassassa rahaa\", exactum.rahaa)\nprint(\"Edullisia lounaita myyty\", exactum.edulliset)\nprint(\"Maukkaita lounaita myyty\", exactum.maukkaat)

    Kortilla rahaa 2 euroa\nRiittikö raha: False\nKortilla rahaa 102 euroa\nRiittikö raha: True\nKortilla rahaa 97.7 euroa\nKassassa rahaa 1100\nEdullisia lounaita myyty 0\nMaukkaita lounaita myyty 1

    Saman luokan oliot metodien parametrina

    Tarkastellaan jälleen kerran yhtä versiota luokasta Henkilo:

    class Henkilo:\n    def __init__(self, nimi: str, syntynyt: int):\n        self.nimi = nimi\n        self.syntynyt = syntynyt

    Oletetaan että olemme tekemässä ohjelmaa, joka vertailee henkilöiden ikiä. Voisimme tehdä tarkoitusta varten erillisen funktion:

    def vanhempi_kuin(henkilo1: Henkilo, henkilo2: Henkilo):\n    if henkilo1.syntynyt < henkilo2.syntynyt:\n        return True\n    else:\n        return False\n\nmuhammad = Henkilo(\"Muhammad ibn Musa al-Khwarizmi\", 780)\npascal = Henkilo(\"Blaise Pascal\", 1623)\ngrace = Henkilo(\"Grace Hopper\", 1906)\n\nif vanhempi_kuin(muhammad, pascal):\n    print(f\"{muhammad} on vanhempi kuin {pascal}\")\nelse:\n    print(f\"{muhammad} ei ole vanhempi kuin {pascal}\")\n\nif vanhempi_kuin(grace, pascal):\n    print(f\"{grace} on vanhempi kuin {pascal}\")\nelse:\n    print(f\"{grace} ei ole vanhempi kuin {pascal}\")

    Muhammad ibn Musa al-Khwarizmi on vanhempi kuin Blaise Pascal\nGrace Hopper ei ole vanhempi kuin Blaise Pascal

    Olio-ohjelmoinnin henkeen kuuluu kuitenkin sijoittaa oliota käsittelevät \"funktiot\" luokan metodeiksi. Voisimmekin tehdä henkilölle metodin, jonka avulla henkilön ikää voidaan verrata toiseen henkilöön:

    class Henkilo:\n    def __init__(self, nimi: str, syntynyt: int):\n        self.nimi = nimi\n        self.syntynyt = syntynyt\n\n    # huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!\n    def vanhempi_kuin(self, toinen: \"Henkilo\"):\n        if self.syntynyt < toinen.syntynyt:\n            return True\n        else:\n            return False

    Nyt siis olio itse on self ja toinen on henkilöolio, joka toimii vertailukohtana.

    Huomaa, miten metodin kutsuminen eroaa funktion kutsumisesta:

    muhammad = Henkilo(\"Muhammad ibn Musa al-Khwarizmi\", 780)\npascal = Henkilo(\"Blaise Pascal\", 1623)\ngrace = Henkilo(\"Grace Hopper\", 1906)\n\nif muhammad.vanhempi_kuin(pascal):\n    print(f\"{muhammad.nimi} on vanhempi kuin {pascal.nimi}\")\nelse:\n    print(f\"{muhammad.nimi} ei ole vanhempi kuin {pascal.nimi}\")\n\nif grace.vanhempi_kuin(pascal):\n    print(f\"{grace.nimi} on vanhempi kuin {pascal.nimi}\")\nelse:\n    print(f\"{grace.nimi} ei ole vanhempi kuin {pascal.nimi}\")

    Pisteen vasemmalla puolella on siis verrattava henkilö, eli olio, johon metodin suorituksessa viittaa muuttuja self. Metodin parametrina taas on vertailukohta, eli metodin suorituksessa muuttujan toinen viittaama olio.

    Ohjelman tulostus on sama kuin edellisessä funktiota käyttäneessä esimerkissä.

    Huomaa, että if-else-rakenne metodissa vanhempi_kuin on oikeastaan turha, sillä vertailun arvona on suoraan haluamamme totuusarvo. Voimme siis yksinkertaistaa metodia seuraavasti:

    class Henkilo:\n    def __init__(self, nimi: str, syntynyt: int):\n        self.nimi = nimi\n        self.syntynyt = syntynyt\n\n    # huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!\n    def vanhempi_kuin(self, toinen: \"Henkilo\"):\n        return self.syntynyt < toinen.syntynyt:

    Edellisestä esimerkistä kannattaa huomata se, että kun metodi saa parametrikseen toisen saman luokan olion, tulee tyyppivihje antaa hipsuissa, eli seuraava koodi aiheuttaisi virheen:

    class Henkilo:\n    # ...\n\n    # tämä ei toimi, Henkilo pitaa olla hipsuissa\n    def vanhempi_kuin(self, toinen: Henkilo):\n        return self.syntynyt < toinen.syntynyt:

    Asuntovälitystoimiston tietojärjestelmässä kuvataan myynnissä olevaa asuntoa seuraavasta luokasta tehdyillä olioilla:

    class Asunto:\n    def __init__(self, huoneita: int, nelioita: int, neliohinta: int):\n        self.huoneita = huoneita\n        self.nelioita = nelioita\n        self.neliohinta = neliohinta

    Tehtävänä on toteuttaa metodeita, joiden avulla myynnissä olevia asuntoja voidaan vertailla.

    Onko suurempi

    Tee metodi suurempi(self, verrattava), joka palauttaa True, jos asunto-olio itse on pinta-alaltaan suurempi kuin verrattava asunto-olio.

    Esimerkki metodin toiminnasta:

    eira_yksio = Asunto(1, 16, 5500)\nkallio_kaksio = Asunto(2, 38, 4200)\njakomaki_kolmio = Asunto(3, 78, 2500)\n\nprint(eira_yksio.suurempi(kallio_kaksio))\nprint(jakomaki_kolmio.suurempi(kallio_kaksio))

    False\nTrue

    Hintaero

    Tee metodi hintaero(self, verrattava), joka palauttaa asunto-olion ja verrattavan asunto-olion hintaeron. Hintaero on asuntojen hintojen erotuksen (hinta lasketaan kertomalla neliöhinta neliöillä) itseisarvo.

    Esimerkki metodin toiminnasta:

    eira_yksio = Asunto(1, 16, 5500)\nkallio_kaksio = Asunto(2, 38, 4200)\njakomaki_kolmio = Asunto(3, 78, 2500)\n\nprint(eira_yksio.hintaero(kallio_kaksio))\nprint(jakomaki_kolmio.hintaero(kallio_kaksio))

    71600\n35400

    Onko kalliimpi?

    Tee metodi kalliimpi(self, verrattava) joka palauttaa True, jos asunto-olio on kalliimpi kuin verrattavana oleva asunto-olio.

    Esimerkki metodin toiminnasta:

    eira_yksio = Asunto(1, 16, 5500)\nkallio_kaksio = Asunto(2, 38, 4200)\njakomaki_kolmio = Asunto(3, 78, 2500)\n\nprint(eira_yksio.kalliimpi(kallio_kaksio))\nprint(jakomaki_kolmio.kalliimpi(kallio_kaksio))

    False\nTrue

    ","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/1-oliot-ja-viitteet.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten olioita voi tallentaa tietorakenteisiin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten olioiden välitys parametrina toimii"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa kaikki arvot ovat olioita ja myös omista luokista luotuja olioita voi käsitellä kuin mitä tahansa muitakin olioita. Esimerkiksi olioita voidaan tallentaa listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" datetime "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" date\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kurssisuoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" suorituspvm"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kurssi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suorituspvm "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" suorituspvm\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan pari kurssisuoritusta ja lisätään listaan"}]},{"type":"text","value":"\n suoritukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n mat1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matematiikka 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n ohj1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmointi 1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"mat1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ohj1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään suoraan listaan muutama"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fysiikka 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2019"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Kurssisuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmointi 2\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" date"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2020"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Käydään läpi kaikki suoritukset, tulostetaan nimet ja lasketaan opintopisteet yhteen"}]},{"type":"text","value":"\n opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteitä yhteensä:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matematiikka 1\nOhjelmointi 1\nFysiikka 2\nOhjelmointi 2\nOpintopisteitä yhteensä: 20"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Nopein auto","tmcname":"osa09-01_nopein_auto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa oleva luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":" mallintaa autoa kahden attribuutin avulla: "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"merkki (str)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"huippunopeus (int)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nopein_auto(autot: list)"}]},{"type":"text","value":", joka saa parametrikseen listan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":"-luokan olioita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio palauttaa listassa olevista autoista nopeimman auton merkin. Voit olettaa, että nopein auto on yksikäsitteinen. Älä muuta alkuperäistä listaa tai luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion testauksesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n auto1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mersu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"195"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n auto2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lada\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n auto3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ferrari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"280"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n auto4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Trabant\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n autot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"auto1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" auto2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" auto3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" auto4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nopein_auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"autot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ferrari"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Hyväksytyt suoritukset","tmcname":"osa09-02_hyvaksytyt_suoritukset"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjasta löytyy luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Koesuoritus"}]},{"type":"text","value":", joka mallintaa nimensä mukaisesti koesuoritusta. Sillä on kaksi attribuuttia, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suorittaja (str)"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisteet (int)"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita funktio "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hyvaksytyt(suoritukset: list, pisteraja: int)"}]},{"type":"text","value":", joka saa parametrikseen listan koesuorituksia ja alimman hyväksytyn pistemäärän kokonaislukuna."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Funktio muodostaa ja palauttaa uuden listan, johon on tallennettu ainoastaan hyväksytyt suoritukset listalta. Älä muuta alkuperäistä listaa tai luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Koesuoritus"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki funktion käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n s1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"12"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirjo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"19"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pauli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pirkko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"9"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n s5 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koesuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Petriina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"17"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n hyv "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" hyvaksytyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"s1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" s5"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"15"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" hyvaksytty "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" hyv"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hyvaksytty"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koesuoritus (suorittaja: Pirjo, pisteet: 19)\nKoesuoritus (suorittaja: Pauli, pisteet: 15)\nKoesuoritus (suorittaja: Petriina, pisteet: 17)"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listaan ei tarkkaan ottaen tallenneta olioita vaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"viittauksia olioihin"}]},{"type":"text","value":". Niinpä sama olio voi esiintyä listassa useaan kertaan ja samaan olioon voidaan viitata useaan kertaan listassa ja sen ulkopuolella. Esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Tuote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" yksikko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yksikko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" yksikko\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kauppalista "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n maito "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maito\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"litra\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maito"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maito"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n kauppalista"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Tuote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kurkku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"kpl\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 313px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/13e71ea262de820629eb873bb73f2d94/80977/9_1_1.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 64.34782608695653%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdUlEQVQ4y22TiarCQAxF+/9/pQVRLLihFKu4r1iXui8YOeHlMXa8UNLpJDc3SwP5w/v9VrtYLGS73crhcJD9fq/PbreT9XptrnK9XmW5XEqWZXqP/+VykXa7LUGeEIdfgNRAME8e0+nUJ1ytVhLHsQwGA6nVatLv9/V7mqb/gbfbTcbjsSRJoiT1el1Go5H6eoSUUqlUpFAoqGMYhnI6nVS5+dzvdw0uFosSRZFUq1UVQRKPcLPZaDmQPB4Pfce6JdNDzig9n896BpPJxCekwb9AIgMkx+PR86FNHiGZ6RcEnU5Her2eWlMBns+n3jNlSqV8EnyV7JKanc/nGoS173Zn4I7SDYE5uWRu862HEOeBKsp3474I8wpfr5cuOgqwBJPEhmHL7sYF+awuMQpoNIHD4VB7xFrRZ86z2eyLUEtuNpvSaDSkXC5Lq9XSEpk0JOyhAWX2lxiJTdoVEdjSWj/cS7YfUv7RUqmkEyUxIkje7XY9hR86hOegM+cgfwAAAABJRU5ErkJggg=='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/13e71ea262de820629eb873bb73f2d94/a0b58/9_1_1.webp 230w","/static/13e71ea262de820629eb873bb73f2d94/12766/9_1_1.webp 313w"],"sizes":"(max-width: 313px) 100vw, 313px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/13e71ea262de820629eb873bb73f2d94/81c8e/9_1_1.png 230w","/static/13e71ea262de820629eb873bb73f2d94/80977/9_1_1.png 313w"],"sizes":"(max-width: 313px) 100vw, 313px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/13e71ea262de820629eb873bb73f2d94/80977/9_1_1.png","alt":"9 1 1","title":"9 1 1","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos samaan olioon on useampi kuin yksi viittaus, on lopputuloksen kannalta yhdentekevää, mitä viittauksista käytetään:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Koira"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi\n\nkoirat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nmusti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Musti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"musti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Musti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Koirat alussa:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koira "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kohdan 0 koira saa uuden nimen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rekku\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koira "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kohdan 2 koira saa uuden nimen:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkoirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Fifi\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" koira "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" koirat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"koira"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koirat alussa:\nMusti\nMusti\nMusti\nKohdan 0 koira saa uuden nimen:\nRekku\nRekku\nMusti\nKohdan 2 koira saa uuden nimen:\nRekku\nRekku\nFifi"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listan kohdissa 0 ja 1 on viittaus samaan olioon, joten olion sisältöä voidaan muuttaa kumman tahansa viittauksen kautta. Listan kohdassa 2 on kuitenkin viittaus toiseen olioon, minkä vuoksi tämän olion muuttaminen ei muuta muita."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Operaattorilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" voidaan tutkia, onko kyseessä täysin sama olio, ja operaattorilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" voidaan tutkia, onko kyseessä saman sisältöinen olio. Seuraava koodi havainnollistaa asiaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nlista3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" lista1\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2 "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" lista2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lista2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" lista3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue\nFalse"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"True\nTrue\nTrue"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omista luokista muodostettuja olioita voidaan myös tallentaa esimerkiksi sanakirjaan ja muihin tietorakenteisiin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" op"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"op "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" op\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Käytetään avaimena opiskelijanumeroa ja arvona Opiskelija-oliota"}]},{"type":"text","value":"\n opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"54321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"67"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"http://www.pythontutor.com/visualize.html#mode=edit","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Visualisaattori"}]},{"type":"text","value":" osaa havainnollistaa nämäkin asiat hienosti:"}]},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 920px; margin-bottom: 1rem;"},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"a","properties":{"className":["gatsby-resp-image-link"],"href":"/static/d20c7f9a5570bf04d75c3836868a8870/15171/9_1_2.png","style":"display: block","target":"_blank","rel":["noopener"]},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 43.04347826086957%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABYlAAAWJQFJUiTwAAABPklEQVQoz2WR20rEMBBA/f+/8k0RFUVExdVda7ubtnHbSSfN3FLtVlHWA4E85DBnyEkYUow44Oj36PexB4wRpx9yzvPJ2cymf5xQSuM4ElHre1fvmSX/IGqA4xBHFgkBzPRYHgZ0BwIAMxFRSslynqbJeTi9uC9cr6ptceHr8zBcxXiNeKXazzIz9wcAYMkzs3yQY6Jy14ZILAJ+ReNONIqgCJrJLHddt1q9FEVRVVXT1AAQQmDmpXzJU5WuOuu7x3nv/CcbADabTVG873aurhvnnPfeOdc0zSHh9+lIXL7ddPvbMNwzl7OMiCmlnKcwUB+Sqi3xfycvmJl3dxHvRB5Ui28ZIxIRM5uZqorIcjn6HjMt15feX0K4IXqb5cQWQ6jK8nW93m63bdsy8zLnaPI05fDxHOOTyLNq9SV/Av8dBuHbnwNlAAAAAElFTkSuQmCC'); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"picture","properties":{},"children":[{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d20c7f9a5570bf04d75c3836868a8870/a0b58/9_1_2.webp 230w","/static/d20c7f9a5570bf04d75c3836868a8870/bc10c/9_1_2.webp 460w","/static/d20c7f9a5570bf04d75c3836868a8870/966d8/9_1_2.webp 920w","/static/d20c7f9a5570bf04d75c3836868a8870/445df/9_1_2.webp 1380w","/static/d20c7f9a5570bf04d75c3836868a8870/78de1/9_1_2.webp 1840w","/static/d20c7f9a5570bf04d75c3836868a8870/995bd/9_1_2.webp 2230w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/webp"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"source","properties":{"srcSet":["/static/d20c7f9a5570bf04d75c3836868a8870/81c8e/9_1_2.png 230w","/static/d20c7f9a5570bf04d75c3836868a8870/08a84/9_1_2.png 460w","/static/d20c7f9a5570bf04d75c3836868a8870/c0255/9_1_2.png 920w","/static/d20c7f9a5570bf04d75c3836868a8870/b1001/9_1_2.png 1380w","/static/d20c7f9a5570bf04d75c3836868a8870/161ec/9_1_2.png 1840w","/static/d20c7f9a5570bf04d75c3836868a8870/15171/9_1_2.png 2230w"],"sizes":"(max-width: 920px) 100vw, 920px","type":"image/png"},"children":[]},{"type":"text","value":"\n "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"src":"/static/d20c7f9a5570bf04d75c3836868a8870/c0255/9_1_2.png","alt":"9 1 2","title":"9 1 2","loading":"lazy","decoding":"async","style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"},"children":[]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"text","value":"\n "}]},{"type":"element","tagName":"h2","properties":{"id":"selfilla-vai-ilman","style":"position:relative;"},"children":[{"type":"text","value":"Selfillä vai ilman?"},{"type":"element","tagName":"a","properties":{"href":"#selfilla-vai-ilman","ariaLabel":"selfilla vai ilman permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä vaiheessa kurssia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määre saattaa vaikuttaa vielä hämärältä. Käytetään siis hetki sen pohtimiseen, milloin selfiä tulee käyttää, ja milloin sitä kannattaa olla käyttämättä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä yksinkertaista luokkaa, jonka avulla joukosta sanoja on mahdollista muodostaa sanasto:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"sorted"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsanasto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Sanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olio-ohjelmointi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"olio\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"nörtti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nsanasto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"nörtti\nolio\nolio-ohjelmointi\npython"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka tallentaa sanalistan oliomuuttujaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.sanat"}]},{"type":"text","value":". Tässä tapauksessa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" tarvitaan ehdottomasti sekä luokan konstruktorissa että luokan muissa metodeissa tähän muuttujaan viitatessa, koska muuten sama lista ei ole kaikkien olion metodien käytettävissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään luokalle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin_sana(self)"}]},{"type":"text","value":" joka selvittää nimensä mukaisesti sanaston pisimmän sanan (tai yhden niistä)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävän voisi toteuttaa vaikkapa seuraavasti, mutta näemme kohta miksei se ole kovin hyvä idea:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään kaksi apumuuttujaa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pisin"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi siis käyttää kahta apumuuttujaa, jotka on määritelty käyttäen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määrettä. Jos vielä halutaan hämmentää ohjelmakoodia lukevaa, apumuuttujat voisi lisäksi nimetä kryptisemmin, esim. "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"apu"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"apu2"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään kaksi apumuuttujaa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun muuttujan määrittely tehdään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreen avulla, liitetään muuttuja olion attribuutiksi, eli muuttuja tulee olemaan edelleen olemassa myös metodin suorituksen päätyttyä. Tämä on aivan tarpeetonta, koska kyseisiä apumuuttujia on tarkoitus käyttää vain metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pisin_sana(self)"}]},{"type":"text","value":". Apumuuttujien määrittely "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreen avulla on siis varsin huono idea."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Paitsi turhaa, apumuuttujien liittäminen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määreellä olion attribuuteiksi on myös riskialtista, varsinkin epämääräisesti nimettyjen apumuuttujien tapauksessa. Jos samaa apumuuttujaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self.apu"}]},{"type":"text","value":" käytetään monessa eri metodissa mutta täysin eri tarkoituksiin, voivat seuraukset olla arvaamattomat ja koodissa voi ilmetä hankalasti löydettäviä bugeja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ongelma voi tulla esiin erityisesti silloin jos apumuuttujan alkuarvo annetaan jossain muualla, esimerkiksi konstruktorissa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# määritellään apumuuttujia"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä ei toimi sillä apu2:n tyyppi on väärä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"apu"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toisaalta uusien olion attribuuttien määrittely "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"muualla"}]},{"type":"text","value":" kuin konstruktorissa on sikäli vaarallista, että tällöin olion attribuutit riippuvat siitä, mitä metodeja on suoritettu. Kaikilla saman luokan avulla luoduilla olioilla ei välttämättä ole samoja attribuutteja, mistä seuraa helposti bugeja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Siispä oikea tapa määritellä yhdessä metodissa käytettävät apumuuttujat on tehdä se "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"ilman"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-määrettä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Sanasto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pisin_sana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä on oikea tapa määritellä yhden metodin sisäiset apumuuttujat"}]},{"type":"text","value":"\n pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"\n pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" sana "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sanat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" pisimman_pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pisimman_pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n pisin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sana\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" pisin"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tällaisessa toteutuksessa apumuuttujat ovat olemassa ainoastaan metodin suorituksen aikana, ja niissä olevat arvot eivät pääse aiheuttamaan komplikaatioita muussa koodissa."}]},{"type":"element","tagName":"h2","properties":{"id":"oliot-funktioiden-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Oliot funktioiden parametrina"},{"type":"element","tagName":"a","properties":{"href":"#oliot-funktioiden-parametrina","ariaLabel":"oliot funktioiden parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Omista luokista luodut oliot ovat yleensä muuttuvia eli mutatoituvia, joten niiden toiminta parametrina välitettäessä muistuttaa esimerkiksi listoista tuttua tapaa: funktio, jolle olio välitetään parametrina, voi muuttaa kyseistä oliota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan yksinkertaista esimerkkiä, jossa funktiolle välitetään "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-luokasta luotu olio. Funktion sisällä muutetaan opiskelijan nimi, ja muutos näkyy myös pääohjelmassa, koska molemmissa tilanteissa viitataan samaan olioon."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Huomaa, että tyyppivihjeenä käytetään nyt oman luokan nimeä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"muuta_nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan opiskelijaolio"}]},{"type":"text","value":"\nolli "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Oppilas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmuuta_nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"olli"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olli Oppilas (12345)\nOlli Opiskelija (12345)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olion voi myös luoda funktion sisällä. Mikäli funktio palauttaa viittauksen olioon, on muodostettu olio käytettävissä myös pääohjelmassa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" choice\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Funktio luo ja palauttaa Opiskelija-olion, jolla on satunnainen nimi ja opiskelijanumero"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"uusi_opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n etunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Minna\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Mari\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n sukunimet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Virtanen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahtinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Leinonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# arvo nimi"}]},{"type":"text","value":"\n nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" choice"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"etunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" choice"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sukunimet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Arvo opiskelijanumero"}]},{"type":"text","value":"\n opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"randint"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"99999"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luo ja palauta opiskelijaolio"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan metodia viidesti, tallennetaan tulokset listaan"}]},{"type":"text","value":"\n opiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"uusi_opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mari Lahtinen (36213)\nArto Virtanen (11859)\nMari Pythonen (77330)\nArto Pythonen (86451)\nMinna Pythonen (86211)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"oliot-metodien-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Oliot metodien parametrina"},{"type":"element","tagName":"a","properties":{"href":"#oliot-metodien-parametrina","ariaLabel":"oliot metodien parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oliot toimivat normaaliin tapaan myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"metodien"}]},{"type":"text","value":" parametrina. Tarkastellaan seuraavaa esimerkkiä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituus\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Huvipuistolaite"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pituusraja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kavijoita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituusraja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pituusraja\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ota_kyytiin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituusraja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kavijoita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" pääsi kyytiin\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" liian lyhyt :(\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kavijoita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kävijää)\""}]}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huvipuistolaitteen metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ota_kyytiin"}]},{"type":"text","value":" saa nyt parametrina luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" olion. Jos kävijä on riittävän pitkä, metodi päästää hänet laitteeseen ja lisää kävijöiden määrää. Seuraavassa esimerkkisuoritus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"hurjakuru "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huvipuistolaite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hurjakuru\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"120"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njarkko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jarkko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nvenla "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Venla\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"105"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhurjakuru"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_kyytiin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jarkko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhurjakuru"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_kyytiin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"venla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"hurjakuru"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jarkko pääsi kyytiin\nVenla liian lyhyt :(\nHurjakuru (1 kävijää)"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Kasvatuslaitos","tmcname":"osa09-03_kasvatuslaitos"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassasi on valmiina jo luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" sekä runko luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kasvatuslaitos"}]},{"type":"text","value":". Kasvatuslaitosoliot käsittelevät ihmisiä eri tavalla, esim. punnitsevat ja syöttävät ihmisiä. Rakennamme tässä tehtävässä kasvatuslaitoksen. Luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" koodiin ei tehtävässä ole tarkoitus koskea!"}]},{"type":"element","tagName":"h2","properties":{"id":"henkiloiden-punnitseminen","style":"position:relative;"},"children":[{"type":"text","value":"Henkilöiden punnitseminen"},{"type":"element","tagName":"a","properties":{"href":"#henkiloiden-punnitseminen","ariaLabel":"henkiloiden punnitseminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kasvatuslaitoksen luokkarungossa on valmiina runko metodille punnitse:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kasvatuslaitos"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"punnitse"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# palautetaan parametrina annetun henkilön paino"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodi saa parametrina henkilön ja metodin on tarkoitus palauttaa kutsujalleen parametrina olevan henkilön paino. Paino selviää pyytämällä parametrina olevalta henkilöltä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"henkilo"}]},{"type":"text","value":" sopiva attribuutti. Sinun tulee täydentää "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punnitse"}]},{"type":"text","value":"-metodin koodia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on pääohjelma jossa kasvatuslaitos punnitsee kaksi henkilöä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"haagan_neuvola "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kasvatuslaitos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\neero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"176"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eero painaa 7 kg\nPekka painaa 85 kg"}]}]},{"type":"element","tagName":"h2","properties":{"id":"syottaminen","style":"position:relative;"},"children":[{"type":"text","value":"Syöttäminen"},{"type":"element","tagName":"a","properties":{"href":"#syottaminen","ariaLabel":"syottaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametrina olevan olion tilaa on mahdollista muuttaa. Tee kasvatuslaitokselle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"syota(henkilo: Henkilo)"}]},{"type":"text","value":" joka kasvattaa parametrina olevan henkilön painoa yhdellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on esimerkki, jossa henkilöt ensin punnitaan ja tämän jälkeen neuvolassa syötetään Eeroa kolme kertaa. Tämän jälkeen henkilöt taas punnitaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"haagan_neuvola "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kasvatuslaitos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\neero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"176"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syota"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syota"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syota"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" painaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tulostuksen pitäisi paljastaa, että Eeron paino on noussut kolmella:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eero painaa 7 kg\nPekka painaa 85 kg"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Eero painaa 10 kg\nPekka painaa 85 kg"}]}]},{"type":"element","tagName":"h2","properties":{"id":"punnitusten-laskeminen","style":"position:relative;"},"children":[{"type":"text","value":"Punnitusten laskeminen"},{"type":"element","tagName":"a","properties":{"href":"#punnitusten-laskeminen","ariaLabel":"punnitusten laskeminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee kasvatuslaitokselle metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"punnitukset()"}]},{"type":"text","value":" joka kertoo, kuinka monta punnitusta kasvatuslaitos on ylipäätään tehnyt. Huom! Tarvitset uuden oliomuuttujan punnitusten lukumäärän laskemiseen. Testipääohjelma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"haagan_neuvola "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kasvatuslaitos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\neero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Eero\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"110"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"33"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"176"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"85"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Punnituksia tehty "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Punnituksia tehty "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhaagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitse"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Punnituksia tehty "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"haagan_neuvola"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"punnitukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Punnituksia tehty 0\nPunnituksia tehty 2\nPunnituksia tehty 6"}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Maksukortti ja kassapääte","tmcname":"osa09-04_maksukortti_ja_kassapaate"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teimme edellisessä osan "},{"type":"element","tagName":"a","properties":{"href":"/osa-8/5-lisaa-esimerkkeja#programming-exercise-maksukortti"},"children":[{"type":"text","value":"tehtävässä"}]},{"type":"text","value":" luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":". Kortilla oli metodit edullisesti ja maukkaasti syömistä sekä rahan lataamista varten."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisen osan tyylillä tehdyssä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"-luokassa oli kuitenkin ongelma. Kortti tiesi lounaiden hinnan ja osasi sen ansiosta vähentää saldoa oikean määrän. Entä kun hinnat nousevat? Tai jos myyntivalikoimaan tulee uusia tuotteita? Hintojen muuttaminen tarkoittaisi, että kaikki jo käytössä olevat kortit pitäisi korvata uudet hinnat tuntevilla korteilla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parempi ratkaisu on tehdä kortit \"tyhmiksi\", hinnoista ja myytävistä tuotteista tietämättömiksi pelkän saldon säilyttäjiksi. Kaikki äly kannattaakin laittaa erillisiin olioihin, kassapäätteisiin."}]},{"type":"element","tagName":"h2","properties":{"id":"tyhma-maksukortti","style":"position:relative;"},"children":[{"type":"text","value":"\"Tyhmä\" maksukortti"},{"type":"element","tagName":"a","properties":{"href":"#tyhma-maksukortti","ariaLabel":"tyhma maksukortti permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteutetaan ensin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"text","value":"-luokasta \"tyhmä\" versio. Kortilla on ainoastaan metodit saldon kysymiseen, rahan lataamiseen ja rahan ottamiseen. Täydennä alla ja tehtäväpohjassa olevaan luokkaan metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ota_rahaa(maara)"}]},{"type":"text","value":" ohjeen mukaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Maksukortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" lisays"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" lisays\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"ota_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Toteuta metodi siten, että se ottaa kortilta rahaa vain, jos saldoa riittää"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Onnistuessaan metodi palauttaa True ja muuten False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Testipääohjelma:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onnistuiko otto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n tulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"ota_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onnistuiko otto:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rahaa 10\nOnnistuiko otto: True\nRahaa 2\nOnnistuiko otto: False\nRahaa 2"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kassapaate-ja-kateiskauppa","style":"position:relative;"},"children":[{"type":"text","value":"Kassapääte ja käteiskauppa"},{"type":"element","tagName":"a","properties":{"href":"#kassapaate-ja-kateiskauppa","ariaLabel":"kassapaate ja kateiskauppa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Unicafessa asioidessa asiakas maksaa joko käteisellä tai maksukortilla. Myyjä käyttää kassapäätettä kortin veloittamiseen ja käteismaksujen hoitamiseen. Tehdään ensin kassapäätteestä käteismaksuihin sopiva versio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kassapäätteen runko on seuraavanlainen. Metodien kommentit kertovat halutun toiminnallisuuden."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kassapaate"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kassassa on aluksi 1000 euroa rahaa"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_edullisesti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maksu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Edullinen lounas maksaa 2.50 euroa."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan kassan rahamäärää edullisen lounaan hinnalla ja palautetaan vaihtorahat"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_maukkaasti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maksu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Maukas lounas maksaa 4.30 euroa."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kasvatetaan kassan rahamäärää maukkaan lounaan hinnalla ja palautetaan vaihtorahat"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"exactum "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kassapaate"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4.3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kassassa rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Edullisia lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maukkaita lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaihtorahaa jäi 7.5\nVaihtorahaa jäi 2.5\nVaihtorahaa jäi 0.0\nKassassa rahaa 1009.3\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kortilla-maksaminen","style":"position:relative;"},"children":[{"type":"text","value":"Kortilla maksaminen"},{"type":"element","tagName":"a","properties":{"href":"#kortilla-maksaminen","ariaLabel":"kortilla maksaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan kassapäätettä siten, että myös kortilla voi maksaa. Teemme kassapäätteelle siis metodit, joiden parametrina kassapääte saa maksukortin, jolta se vähentää valitun lounaan hinnan. Seuraavassa ovat uusien metodien rungot ja ohje niiden toteuttamiseksi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kassapaate"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_edullisesti_kortilla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Edullinen lounas maksaa 2.50 euroa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten palautetaan False"}]},{"type":"text","value":"\n\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"syo_maukkaasti_kortilla"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Maukas lounas maksaa 4.30 euroa."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Muuten palautetaan False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" kortilla maksaminen ei lisää kassapäätteessä olevan käteisen määrää."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on testipääohjelma ja haluttu tulostus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"exactum "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kassapaate"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nvaihtorahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Vaihtorahaa jäi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vaihtorahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"7"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_edullisesti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kassassa rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Edullisia lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maukkaita lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaihtorahaa jäi 7.5\nRiittikö raha: True\nRiittikö raha: False\nRiittikö raha: True\nKassassa rahaa 1002.5\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1"}]}]},{"type":"element","tagName":"h2","properties":{"id":"rahan-lataaminen","style":"position:relative;"},"children":[{"type":"text","value":"Rahan lataaminen"},{"type":"element","tagName":"a","properties":{"href":"#rahan-lataaminen","ariaLabel":"rahan lataaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisätään vielä kassapäätteelle metodi jonka avulla kortille voidaan ladata lisää rahaa. Muista, että rahan lataamisen yhteydessä ladattava summa viedään kassapäätteeseen. Metodin runko:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lataa_rahaa_kortille"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"pass"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Testipääohjelma ja esimerkkisyöte:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"exactum "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kassapaate"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nantin_kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Maksukortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kortilla rahaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nexactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lataa_rahaa_kortille"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kortilla rahaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntulos "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syo_maukkaasti_kortilla"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Riittikö raha:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tulos"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Kortilla rahaa "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"antin_kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" euroa\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kassassa rahaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Edullisia lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"edulliset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Maukkaita lounaita myyty\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" exactum"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maukkaat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kortilla rahaa 2 euroa\nRiittikö raha: False\nKortilla rahaa 102 euroa\nRiittikö raha: True\nKortilla rahaa 97.7 euroa\nKassassa rahaa 1100\nEdullisia lounaita myyty 0\nMaukkaita lounaita myyty 1"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"saman-luokan-oliot-metodien-parametrina","style":"position:relative;"},"children":[{"type":"text","value":"Saman luokan oliot metodien parametrina"},{"type":"element","tagName":"a","properties":{"href":"#saman-luokan-oliot-metodien-parametrina","ariaLabel":"saman luokan oliot metodien parametrina permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan jälleen kerran yhtä versiota luokasta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" syntynyt"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletetaan että olemme tekemässä ohjelmaa, joka vertailee henkilöiden ikiä. Voisimme tehdä tarkoitusta varten erillisen funktion:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" henkilo1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" henkilo2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\nmuhammad "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muhammad ibn Musa al-Khwarizmi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"780"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npascal "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Blaise Pascal\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1623"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ngrace "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Grace Hopper\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1906"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muhammad ibn Musa al-Khwarizmi on vanhempi kuin Blaise Pascal\nGrace Hopper ei ole vanhempi kuin Blaise Pascal"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnin henkeen kuuluu kuitenkin sijoittaa oliota käsittelevät \"funktiot\" luokan metodeiksi. Voisimmekin tehdä henkilölle metodin, jonka avulla henkilön ikää voidaan verrata "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"toiseen"}]},{"type":"text","value":" henkilöön:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" syntynyt\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Henkilo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt siis olio itse on "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"toinen"}]},{"type":"text","value":" on henkilöolio, joka toimii vertailukohtana."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, miten metodin kutsuminen eroaa funktion kutsumisesta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"muhammad "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Muhammad ibn Musa al-Khwarizmi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"780"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npascal "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Blaise Pascal\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1623"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ngrace "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Grace Hopper\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1906"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"muhammad"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"vanhempi_kuin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" on vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"grace"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ei ole vanhempi kuin "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pascal"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pisteen vasemmalla puolella on siis verrattava henkilö, eli olio, johon metodin suorituksessa viittaa muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":". Metodin parametrina taas on vertailukohta, eli metodin suorituksessa muuttujan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"toinen"}]},{"type":"text","value":" viittaama olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostus on sama kuin edellisessä funktiota käyttäneessä esimerkissä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että if-else-rakenne metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"text","value":" on oikeastaan turha, sillä vertailun arvona on suoraan haluamamme totuusarvo. Voimme siis yksinkertaistaa metodia seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" syntynyt\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Henkilo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisestä esimerkistä kannattaa huomata se, että kun metodi saa parametrikseen toisen saman luokan olion, tulee tyyppivihje antaa hipsuissa, eli seuraava koodi aiheuttaisi virheen:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# tämä ei toimi, Henkilo pitaa olla hipsuissa"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"vanhempi_kuin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" toinen"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"syntynyt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]}]}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Asuntovertailu","tmcname":"osa09-05_asuntovertailu"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asuntovälitystoimiston tietojärjestelmässä kuvataan myynnissä olevaa asuntoa seuraavasta luokasta tehdyillä olioilla:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Asunto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huoneita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nelioita"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" neliohinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"huoneita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huoneita\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nelioita "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nelioita\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"neliohinta "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" neliohinta"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtävänä on toteuttaa metodeita, joiden avulla myynnissä olevia asuntoja voidaan vertailla."}]},{"type":"element","tagName":"h2","properties":{"id":"onko-suurempi","style":"position:relative;"},"children":[{"type":"text","value":"Onko suurempi"},{"type":"element","tagName":"a","properties":{"href":"#onko-suurempi","ariaLabel":"onko suurempi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurempi(self, verrattava)"}]},{"type":"text","value":", joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos asunto-olio itse on pinta-alaltaan suurempi kuin verrattava asunto-olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"eira_yksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkallio_kaksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njakomaki_kolmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eira_yksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suurempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jakomaki_kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suurempi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]},{"type":"element","tagName":"h2","properties":{"id":"hintaero","style":"position:relative;"},"children":[{"type":"text","value":"Hintaero"},{"type":"element","tagName":"a","properties":{"href":"#hintaero","ariaLabel":"hintaero permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hintaero(self, verrattava)"}]},{"type":"text","value":", joka palauttaa asunto-olion ja verrattavan asunto-olion hintaeron. Hintaero on asuntojen hintojen erotuksen (hinta lasketaan kertomalla neliöhinta neliöillä) itseisarvo."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"eira_yksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkallio_kaksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njakomaki_kolmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eira_yksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hintaero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jakomaki_kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hintaero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"71600\n35400"}]}]},{"type":"element","tagName":"h2","properties":{"id":"onko-kalliimpi","style":"position:relative;"},"children":[{"type":"text","value":"Onko kalliimpi?"},{"type":"element","tagName":"a","properties":{"href":"#onko-kalliimpi","ariaLabel":"onko kalliimpi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kalliimpi(self, verrattava)"}]},{"type":"text","value":" joka palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":", jos asunto-olio on kalliimpi kuin verrattavana oleva asunto-olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki metodin toiminnasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"eira_yksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"16"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkallio_kaksio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"38"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\njakomaki_kolmio "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Asunto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"78"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"eira_yksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kalliimpi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jakomaki_kolmio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kalliimpi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kallio_kaksio"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"False\nTrue"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten olioita voi tallentaa tietorakenteisiin
    • \n
    • Tiedät, miten olioiden välitys parametrina toimii
    • \n

    Pythonissa kaikki arvot ovat olioita ja myös omista luokista luotuja olioita voi käsitellä kuin mitä tahansa muitakin olioita. Esimerkiksi olioita voidaan tallentaa listaan:

    from datetime import date\n\nclass Kurssisuoritus:\n\n    def __init__(self, kurssi: str, opintopisteet: int, suorituspvm: date):\n        self.kurssi = kurssi\n        self.opintopisteet = opintopisteet\n        self.suorituspvm = suorituspvm\n\n\nif __name__ == \"__main__\":\n    # Luodaan pari kurssisuoritusta ja lisätään listaan\n    suoritukset = []\n\n    mat1 = Kurssisuoritus(\"Matematiikka 1\", 5, date(2020, 3, 11))\n    ohj1 = Kurssisuoritus(\"Ohjelmointi 1\", 6, date(2019, 12, 17))\n\n    suoritukset.append(mat1)\n    suoritukset.append(ohj1)\n\n    # Lisätään suoraan listaan muutama\n    suoritukset.append(Kurssisuoritus(\"Fysiikka 2\", 4, date(2019, 11, 10)))\n    suoritukset.append(Kurssisuoritus(\"Ohjelmointi 2\", 5, date(2020, 5, 19)))\n\n    # Käydään läpi kaikki suoritukset, tulostetaan nimet ja lasketaan opintopisteet yhteen\n    opintopisteet = 0\n    for suoritus in suoritukset:\n        print(suoritus.kurssi)\n        opintopisteet += suoritus.opintopisteet\n\n    print(\"Opintopisteitä yhteensä:\", opintopisteet)

    Matematiikka 1\nOhjelmointi 1\nFysiikka 2\nOhjelmointi 2\nOpintopisteitä yhteensä: 20

    Tehtäväpohjassa oleva luokka Auto mallintaa autoa kahden attribuutin avulla: merkki (str) ja huippunopeus (int).

    Kirjoita funktio nopein_auto(autot: list), joka saa parametrikseen listan Auto-luokan olioita.

    Funktio palauttaa listassa olevista autoista nopeimman auton merkin. Voit olettaa, että nopein auto on yksikäsitteinen. Älä muuta alkuperäistä listaa tai luokkaa Auto.

    Esimerkki funktion testauksesta:

    if __name__ == \"__main__\":\n    auto1 = Auto(\"Mersu\", 195)\n    auto2 = Auto(\"Lada\", 110)\n    auto3 = Auto(\"Ferrari\", 280)\n    auto4 = Auto(\"Trabant\", 85)\n\n    autot = [auto1, auto2, auto3, auto4]\n    print(nopein_auto(autot))

    Ferrari

    Tehtäväpohjasta löytyy luokka Koesuoritus, joka mallintaa nimensä mukaisesti koesuoritusta. Sillä on kaksi attribuuttia, suorittaja (str) ja pisteet (int).

    Kirjoita funktio hyvaksytyt(suoritukset: list, pisteraja: int), joka saa parametrikseen listan koesuorituksia ja alimman hyväksytyn pistemäärän kokonaislukuna.

    Funktio muodostaa ja palauttaa uuden listan, johon on tallennettu ainoastaan hyväksytyt suoritukset listalta. Älä muuta alkuperäistä listaa tai luokkaa Koesuoritus.

    Esimerkki funktion käytöstä:

    if __name__ == \"__main__\":\n    s1 = Koesuoritus(\"Pekka\", 12)\n    s2 = Koesuoritus(\"Pirjo\", 19)\n    s3 = Koesuoritus(\"Pauli\", 15)\n    s4 = Koesuoritus(\"Pirkko\", 9)\n    s5 = Koesuoritus(\"Petriina\", 17)\n\n    hyv = hyvaksytyt([s1, s2, s3, s4, s5], 15)\n    for hyvaksytty in hyv:\n        print(hyvaksytty)

    Koesuoritus (suorittaja: Pirjo, pisteet: 19)\nKoesuoritus (suorittaja: Pauli, pisteet: 15)\nKoesuoritus (suorittaja: Petriina, pisteet: 17)

    Listaan ei tarkkaan ottaen tallenneta olioita vaan viittauksia olioihin. Niinpä sama olio voi esiintyä listassa useaan kertaan ja samaan olioon voidaan viitata useaan kertaan listassa ja sen ulkopuolella. Esimerkiksi näin:

    class Tuote:\n    def __init__(self, nimi: int, yksikko: str):\n        self.nimi = nimi\n        self.yksikko = yksikko\n\n\nif __name__ == \"__main__\":\n    kauppalista = []\n    maito = Tuote(\"Maito\", \"litra\")\n\n    kauppalista.append(maito)\n    kauppalista.append(maito)\n    kauppalista.append(Tuote(\"Kurkku\", \"kpl\"))
    \n \n \n \n \n \n \"9\n \n \n

    Jos samaan olioon on useampi kuin yksi viittaus, on lopputuloksen kannalta yhdentekevää, mitä viittauksista käytetään:

    class Koira:\n    def __init__(self, nimi):\n        self.nimi = nimi\n\n    def __str__(self):\n        return self.nimi\n\nkoirat = []\nmusti = Koira(\"Musti\")\nkoirat.append(musti)\nkoirat.append(musti)\nkoirat.append(Koira(\"Musti\"))\n\nprint(\"Koirat alussa:\")\nfor koira in koirat:\n    print(koira)\n\nprint(\"Kohdan 0 koira saa uuden nimen:\")\nkoirat[0].nimi = \"Rekku\"\nfor koira in koirat:\n    print(koira)\n\nprint(\"Kohdan 2 koira saa uuden nimen:\")\nkoirat[2].nimi = \"Fifi\"\nfor koira in koirat:\n    print(koira)

    Koirat alussa:\nMusti\nMusti\nMusti\nKohdan 0 koira saa uuden nimen:\nRekku\nRekku\nMusti\nKohdan 2 koira saa uuden nimen:\nRekku\nRekku\nFifi

    Listan kohdissa 0 ja 1 on viittaus samaan olioon, joten olion sisältöä voidaan muuttaa kumman tahansa viittauksen kautta. Listan kohdassa 2 on kuitenkin viittaus toiseen olioon, minkä vuoksi tämän olion muuttaminen ei muuta muita.

    Operaattorilla is voidaan tutkia, onko kyseessä täysin sama olio, ja operaattorilla == voidaan tutkia, onko kyseessä saman sisältöinen olio. Seuraava koodi havainnollistaa asiaa:

    lista1 = [1, 2, 3]\nlista2 = [1, 2, 3]\nlista3 = lista1\n\nprint(lista1 is lista2)\nprint(lista1 is lista3)\nprint(lista2 is lista3)\n\nprint()\n\nprint(lista1 == lista2)\nprint(lista1 == lista3)\nprint(lista2 == lista3)

    False\nTrue\nFalse

    True\nTrue\nTrue

    Omista luokista muodostettuja olioita voidaan myös tallentaa esimerkiksi sanakirjaan ja muihin tietorakenteisiin:

    class Opiskelija:\n    def __init__(self, nimi: str, op: int):\n        self.nimi = nimi\n        self.op = op\n\nif __name__ == \"__main__\":\n    # Käytetään avaimena opiskelijanumeroa ja arvona Opiskelija-oliota\n    opiskelijat = {}\n    opiskelijat[\"12345\"] = Opiskelija(\"Olli Opiskelija\", 10)\n    opiskelijat[\"54321\"] = Opiskelija(\"Outi Opiskelija\", 67)

    Visualisaattori osaa havainnollistaa nämäkin asiat hienosti:

    \n \n \n \n \n \n \"9\n \n \n

    Selfillä vai ilman?

    Tässä vaiheessa kurssia self-määre saattaa vaikuttaa vielä hämärältä. Käytetään siis hetki sen pohtimiseen, milloin selfiä tulee käyttää, ja milloin sitä kannattaa olla käyttämättä.

    Tarkastellaan esimerkkinä yksinkertaista luokkaa, jonka avulla joukosta sanoja on mahdollista muodostaa sanasto:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    def lisaa_sana(self, sana: str):\n        if not sana in self.sanat:\n            self.sanat.append(sana)\n\n    def tulosta(self):\n        for sana in sorted(self.sanat):\n            print(sana)\n\nsanasto = Sanasto()\nsanasto.lisaa_sana(\"python\")\nsanasto.lisaa_sana(\"olio\")\nsanasto.lisaa_sana(\"olio-ohjelmointi\")\nsanasto.lisaa_sana(\"olio\")\nsanasto.lisaa_sana(\"nörtti\")\n\nsanasto.tulosta()

    nörtti\nolio\nolio-ohjelmointi\npython

    Luokka tallentaa sanalistan oliomuuttujaan self.sanat. Tässä tapauksessa self tarvitaan ehdottomasti sekä luokan konstruktorissa että luokan muissa metodeissa tähän muuttujaan viitatessa, koska muuten sama lista ei ole kaikkien olion metodien käytettävissä.

    Lisätään luokalle metodi pisin_sana(self) joka selvittää nimensä mukaisesti sanaston pisimmän sanan (tai yhden niistä).

    Tehtävän voisi toteuttaa vaikkapa seuraavasti, mutta näemme kohta miksei se ole kovin hyvä idea:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    # ...\n\n    def pisin_sana(self):\n        # määritellään kaksi apumuuttujaa\n        self.pisin = \"\"\n        self.pisimman_pituus = 0\n\n        for sana in self.sanat:\n            if len(sana) > self.pisimman_pituus:\n                self.pisimman_pituus = len(sana)\n                self.pisin = sana\n\n        return self.pisin

    Metodi siis käyttää kahta apumuuttujaa, jotka on määritelty käyttäen self-määrettä. Jos vielä halutaan hämmentää ohjelmakoodia lukevaa, apumuuttujat voisi lisäksi nimetä kryptisemmin, esim. apu ja apu2:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    # ...\n\n    def pisin_sana(self):\n        # määritellään kaksi apumuuttujaa\n        self.apu = \"\"\n        self.apu2 = 0\n\n        for sana in self.sanat:\n            if len(sana) > self.apu2:\n                self.apu2 = len(sana)\n                self.apu = sana\n\n        return self.apu

    Kun muuttujan määrittely tehdään self-määreen avulla, liitetään muuttuja olion attribuutiksi, eli muuttuja tulee olemaan edelleen olemassa myös metodin suorituksen päätyttyä. Tämä on aivan tarpeetonta, koska kyseisiä apumuuttujia on tarkoitus käyttää vain metodissa pisin_sana(self). Apumuuttujien määrittely self-määreen avulla on siis varsin huono idea.

    Paitsi turhaa, apumuuttujien liittäminen self-määreellä olion attribuuteiksi on myös riskialtista, varsinkin epämääräisesti nimettyjen apumuuttujien tapauksessa. Jos samaa apumuuttujaa self.apu käytetään monessa eri metodissa mutta täysin eri tarkoituksiin, voivat seuraukset olla arvaamattomat ja koodissa voi ilmetä hankalasti löydettäviä bugeja.

    Ongelma voi tulla esiin erityisesti silloin jos apumuuttujan alkuarvo annetaan jossain muualla, esimerkiksi konstruktorissa:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n        # määritellään apumuuttujia\n        self.apu = \"\"\n        self.apu2 = \"\"\n        self.apu3 = \"\"\n        self.apu4 = \"\"\n\n    # ...\n\n    def pisin_sana(self):\n        for sana in self.sanat:\n            # tämä ei toimi sillä apu2:n tyyppi on väärä\n            if len(sana) > self.apu2:\n                self.apu2 = len(sana)\n                self.apu = sana\n\n        return self.apu

    Toisaalta uusien olion attribuuttien määrittely muualla kuin konstruktorissa on sikäli vaarallista, että tällöin olion attribuutit riippuvat siitä, mitä metodeja on suoritettu. Kaikilla saman luokan avulla luoduilla olioilla ei välttämättä ole samoja attribuutteja, mistä seuraa helposti bugeja.

    Siispä oikea tapa määritellä yhdessä metodissa käytettävät apumuuttujat on tehdä se ilman self-määrettä:

    class Sanasto:\n    def __init__(self):\n        self.sanat = []\n\n    # ...\n\n    def pisin_sana(self):\n        # tämä on oikea tapa määritellä yhden metodin sisäiset apumuuttujat\n        pisin = \"\"\n        pisimman_pituus = 0\n\n        for sana in self.sanat:\n            if len(sana) > pisimman_pituus:\n                pisimman_pituus = len(sana)\n                pisin = sana\n\n        return pisin

    Tällaisessa toteutuksessa apumuuttujat ovat olemassa ainoastaan metodin suorituksen aikana, ja niissä olevat arvot eivät pääse aiheuttamaan komplikaatioita muussa koodissa.

    Oliot funktioiden parametrina

    Omista luokista luodut oliot ovat yleensä muuttuvia eli mutatoituvia, joten niiden toiminta parametrina välitettäessä muistuttaa esimerkiksi listoista tuttua tapaa: funktio, jolle olio välitetään parametrina, voi muuttaa kyseistä oliota.

    Tarkastellaan yksinkertaista esimerkkiä, jossa funktiolle välitetään Opiskelija-luokasta luotu olio. Funktion sisällä muutetaan opiskelijan nimi, ja muutos näkyy myös pääohjelmassa, koska molemmissa tilanteissa viitataan samaan olioon.

    class Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.opiskelijanumero})\"\n\n# Huomaa, että tyyppivihjeenä käytetään nyt oman luokan nimeä\ndef muuta_nimi(opiskelija: Opiskelija):\n    opiskelija.nimi = \"Olli Opiskelija\"\n\n# Luodaan opiskelijaolio\nolli = Opiskelija(\"Olli Oppilas\", \"12345\")\n\nprint(olli)\nmuuta_nimi(olli)\nprint(olli)

    Olli Oppilas (12345)\nOlli Opiskelija (12345)

    Olion voi myös luoda funktion sisällä. Mikäli funktio palauttaa viittauksen olioon, on muodostettu olio käytettävissä myös pääohjelmassa:

    from random import randint, choice\n\nclass Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.opiskelijanumero})\"\n\n\n# Funktio luo ja palauttaa Opiskelija-olion, jolla on satunnainen nimi ja opiskelijanumero\ndef uusi_opiskelija():\n    etunimet = [\"Arto\",\"Pekka\",\"Minna\",\"Mari\"]\n    sukunimet = [\"Virtanen\", \"Lahtinen\", \"Leinonen\", \"Pythonen\"]\n\n    # arvo nimi\n    nimi = choice(etunimet) + \" \" + choice(sukunimet)\n\n    # Arvo opiskelijanumero\n    opiskelijanumero = str(randint(10000,99999))\n\n    # Luo ja palauta opiskelijaolio\n    return Opiskelija(nimi, opiskelijanumero)\n\nif __name__ == \"__main__\":\n    # Kutsutaan metodia viidesti, tallennetaan tulokset listaan\n    opiskelijat = []\n    for i in range(5):\n        opiskelijat.append(uusi_opiskelija())\n\n    # Tulostetaan\n    for opiskelija in opiskelijat:\n        print(opiskelija)

    Mari Lahtinen (36213)\nArto Virtanen (11859)\nMari Pythonen (77330)\nArto Pythonen (86451)\nMinna Pythonen (86211)

    Oliot metodien parametrina

    Oliot toimivat normaaliin tapaan myös metodien parametrina. Tarkastellaan seuraavaa esimerkkiä:

    class Henkilo:\n    def __init__(self, nimi: str, pituus: int):\n        self.nimi = nimi\n        self.pituus = pituus\n\nclass Huvipuistolaite:\n    def __init__(self, nimi: str, pituusraja: int):\n        self.kavijoita = 0\n        self.nimi = nimi\n        self.pituusraja = pituusraja\n\n    def ota_kyytiin(self, henkilo: Henkilo):\n        if henkilo.pituus >= self.pituusraja:\n            self.kavijoita += 1\n            print(f\"{henkilo.nimi} pääsi kyytiin\")\n        else:\n            print(f\"{henkilo.nimi} liian lyhyt :(\")\n\n    def __str__(self):\n        return f\"{self.nimi} ({self.kavijoita} kävijää)\"

    Huvipuistolaitteen metodi ota_kyytiin saa nyt parametrina luokan Henkilo olion. Jos kävijä on riittävän pitkä, metodi päästää hänet laitteeseen ja lisää kävijöiden määrää. Seuraavassa esimerkkisuoritus:

    hurjakuru = Huvipuistolaite(\"Hurjakuru\", 120)\njarkko = Henkilo(\"Jarkko\", 172)\nvenla = Henkilo(\"Venla\", 105)\n\nhurjakuru.ota_kyytiin(jarkko)\nhurjakuru.ota_kyytiin(venla)\n\nprint(hurjakuru)

    Jarkko pääsi kyytiin\nVenla liian lyhyt :(\nHurjakuru (1 kävijää)

    Tehtäväpohjassasi on valmiina jo luokka Henkilo sekä runko luokalle Kasvatuslaitos. Kasvatuslaitosoliot käsittelevät ihmisiä eri tavalla, esim. punnitsevat ja syöttävät ihmisiä. Rakennamme tässä tehtävässä kasvatuslaitoksen. Luokan Henkilo koodiin ei tehtävässä ole tarkoitus koskea!

    Henkilöiden punnitseminen

    Kasvatuslaitoksen luokkarungossa on valmiina runko metodille punnitse:

    class Kasvatuslaitos:\n    def punnitse(self, henkilo: Henkilo):\n        # palautetaan parametrina annetun henkilön paino\n        return -1

    Metodi saa parametrina henkilön ja metodin on tarkoitus palauttaa kutsujalleen parametrina olevan henkilön paino. Paino selviää pyytämällä parametrina olevalta henkilöltä henkilo sopiva attribuutti. Sinun tulee täydentää punnitse-metodin koodia.

    Seuraavassa on pääohjelma jossa kasvatuslaitos punnitsee kaksi henkilöä:

    haagan_neuvola = Kasvatuslaitos()\n\neero = Henkilo(\"Eero\", 1, 110, 7)\npekka = Henkilo(\"Pekka\", 33, 176, 85)\n\nprint(f\"{eero.nimi} painaa {haagan_neuvola.punnitse(eero)} kg\")\nprint(f\"{pekka.nimi} painaa {haagan_neuvola.punnitse(pekka)} kg\")

    Eero painaa 7 kg\nPekka painaa 85 kg

    Syöttäminen

    Parametrina olevan olion tilaa on mahdollista muuttaa. Tee kasvatuslaitokselle metodi syota(henkilo: Henkilo) joka kasvattaa parametrina olevan henkilön painoa yhdellä.

    Seuraavassa on esimerkki, jossa henkilöt ensin punnitaan ja tämän jälkeen neuvolassa syötetään Eeroa kolme kertaa. Tämän jälkeen henkilöt taas punnitaan:

    haagan_neuvola = Kasvatuslaitos()\n\neero = Henkilo(\"Eero\", 1, 110, 7)\npekka = Henkilo(\"Pekka\", 33, 176, 85)\n\nprint(f\"{eero.nimi} painaa {haagan_neuvola.punnitse(eero)} kg\")\nprint(f\"{pekka.nimi} painaa {haagan_neuvola.punnitse(pekka)} kg\")\nprint()\n\nhaagan_neuvola.syota(eero)\nhaagan_neuvola.syota(eero)\nhaagan_neuvola.syota(eero)\n\nprint(f\"{eero.nimi} painaa {haagan_neuvola.punnitse(eero)} kg\")\nprint(f\"{pekka.nimi} painaa {haagan_neuvola.punnitse(pekka)} kg\")

    Tulostuksen pitäisi paljastaa, että Eeron paino on noussut kolmella:

    Eero painaa 7 kg\nPekka painaa 85 kg

    Eero painaa 10 kg\nPekka painaa 85 kg

    Punnitusten laskeminen

    Tee kasvatuslaitokselle metodi punnitukset() joka kertoo, kuinka monta punnitusta kasvatuslaitos on ylipäätään tehnyt. Huom! Tarvitset uuden oliomuuttujan punnitusten lukumäärän laskemiseen. Testipääohjelma:

    haagan_neuvola = Kasvatuslaitos()\n\neero = Henkilo(\"Eero\", 1, 110, 7)\npekka = Henkilo(\"Pekka\", 33, 176, 85)\n\nprint(f\"Punnituksia tehty {haagan_neuvola.punnitukset()}\")\n\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\n\nprint(f\"Punnituksia tehty {haagan_neuvola.punnitukset()}\")\n\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\nhaagan_neuvola.punnitse(eero)\n\nprint(f\"Punnituksia tehty {haagan_neuvola.punnitukset()}\")

    Punnituksia tehty 0\nPunnituksia tehty 2\nPunnituksia tehty 6

    Teimme edellisessä osan tehtävässä luokan Maksukortti. Kortilla oli metodit edullisesti ja maukkaasti syömistä sekä rahan lataamista varten.

    Edellisen osan tyylillä tehdyssä Maksukortti-luokassa oli kuitenkin ongelma. Kortti tiesi lounaiden hinnan ja osasi sen ansiosta vähentää saldoa oikean määrän. Entä kun hinnat nousevat? Tai jos myyntivalikoimaan tulee uusia tuotteita? Hintojen muuttaminen tarkoittaisi, että kaikki jo käytössä olevat kortit pitäisi korvata uudet hinnat tuntevilla korteilla.

    Parempi ratkaisu on tehdä kortit \"tyhmiksi\", hinnoista ja myytävistä tuotteista tietämättömiksi pelkän saldon säilyttäjiksi. Kaikki äly kannattaakin laittaa erillisiin olioihin, kassapäätteisiin.

    \"Tyhmä\" maksukortti

    Toteutetaan ensin Maksukortti-luokasta \"tyhmä\" versio. Kortilla on ainoastaan metodit saldon kysymiseen, rahan lataamiseen ja rahan ottamiseen. Täydennä alla ja tehtäväpohjassa olevaan luokkaan metodin ota_rahaa(maara) ohjeen mukaan:

    class Maksukortti:\n    def __init__(self, saldo: float):\n        self.saldo = saldo\n\n    def lataa_rahaa(self, lisays: float):\n        self.saldo += lisays\n\n    def ota_rahaa(self, maara: float):\n        pass\n        # Toteuta metodi siten, että se ottaa kortilta rahaa vain, jos saldoa riittää\n        # Onnistuessaan metodi palauttaa True ja muuten False

    Testipääohjelma:

    if __name__ == \"__main__\":\n    kortti = Maksukortti(10)\n    print(\"Rahaa\", kortti.saldo)\n    tulos = kortti.ota_rahaa(8)\n    print(\"Onnistuiko otto:\", tulos)\n    print(\"Rahaa\", kortti.saldo)\n    tulos = kortti.ota_rahaa(4)\n    print(\"Onnistuiko otto:\", tulos)\n    print(\"Rahaa\", kortti.saldo)

    Rahaa 10\nOnnistuiko otto: True\nRahaa 2\nOnnistuiko otto: False\nRahaa 2

    Kassapääte ja käteiskauppa

    Unicafessa asioidessa asiakas maksaa joko käteisellä tai maksukortilla. Myyjä käyttää kassapäätettä kortin veloittamiseen ja käteismaksujen hoitamiseen. Tehdään ensin kassapäätteestä käteismaksuihin sopiva versio.

    Kassapäätteen runko on seuraavanlainen. Metodien kommentit kertovat halutun toiminnallisuuden.

    class Kassapaate:\n    def __init__(self):\n        # Kassassa on aluksi 1000 euroa rahaa\n        self.rahaa = 1000\n        self.edulliset = 0\n        self.maukkaat = 0\n\n    def syo_edullisesti(self, maksu: float):\n        # Edullinen lounas maksaa 2.50 euroa.\n        # Kasvatetaan kassan rahamäärää edullisen lounaan hinnalla ja palautetaan vaihtorahat\n        # Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan\n\n    def syo_maukkaasti(self, maksu: float):\n        # Maukas lounas maksaa 4.30 euroa.\n        # Kasvatetaan kassan rahamäärää maukkaan lounaan hinnalla ja palautetaan vaihtorahat\n        # Jos parametrina annettu maksu ei ole riittävän suuri, ei lounasta myydä ja metodi palauttaa koko summan

    Käyttöesimerkki

    exactum = Kassapaate()\n\nvaihtorahaa = exactum.syo_edullisesti(10)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nvaihtorahaa = exactum.syo_edullisesti(5)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nvaihtorahaa = exactum.syo_maukkaasti(4.3)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nprint(\"Kassassa rahaa\", exactum.rahaa)\nprint(\"Edullisia lounaita myyty\", exactum.edulliset)\nprint(\"Maukkaita lounaita myyty\", exactum.maukkaat)

    Vaihtorahaa jäi 7.5\nVaihtorahaa jäi 2.5\nVaihtorahaa jäi 0.0\nKassassa rahaa 1009.3\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1

    Kortilla maksaminen

    Laajennetaan kassapäätettä siten, että myös kortilla voi maksaa. Teemme kassapäätteelle siis metodit, joiden parametrina kassapääte saa maksukortin, jolta se vähentää valitun lounaan hinnan. Seuraavassa ovat uusien metodien rungot ja ohje niiden toteuttamiseksi:

    class Kassapaate:\n    # ...\n\n    def syo_edullisesti_kortilla(self, kortti: Maksukortti):\n        # Edullinen lounas maksaa 2.50 euroa\n        # Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True\n        # Muuten palautetaan False\n\n\n    def syo_maukkaasti_kortilla(self, kortti: Maksukortti):\n        # Maukas lounas maksaa 4.30 euroa.\n        # Jos kortilla on tarpeeksi rahaa, vähennetään hinta kortilta ja palautetaan True\n        # Muuten palautetaan False

    Huom: kortilla maksaminen ei lisää kassapäätteessä olevan käteisen määrää.

    Seuraavassa on testipääohjelma ja haluttu tulostus:

    exactum = Kassapaate()\n\nvaihtorahaa = exactum.syo_edullisesti(10)\nprint(\"Vaihtorahaa jäi\", vaihtorahaa)\n\nkortti = Maksukortti(7)\n\ntulos = exactum.syo_maukkaasti_kortilla(kortti)\nprint(\"Riittikö raha:\", tulos)\ntulos = exactum.syo_maukkaasti_kortilla(kortti)\nprint(\"Riittikö raha:\", tulos)\ntulos = exactum.syo_edullisesti_kortilla(kortti)\nprint(\"Riittikö raha:\", tulos)\n\nprint(\"Kassassa rahaa\", exactum.rahaa)\nprint(\"Edullisia lounaita myyty\", exactum.edulliset)\nprint(\"Maukkaita lounaita myyty\", exactum.maukkaat)

    Vaihtorahaa jäi 7.5\nRiittikö raha: True\nRiittikö raha: False\nRiittikö raha: True\nKassassa rahaa 1002.5\nEdullisia lounaita myyty 2\nMaukkaita lounaita myyty 1

    Rahan lataaminen

    Lisätään vielä kassapäätteelle metodi jonka avulla kortille voidaan ladata lisää rahaa. Muista, että rahan lataamisen yhteydessä ladattava summa viedään kassapäätteeseen. Metodin runko:

    def lataa_rahaa_kortille(self, kortti: Maksukortti, summa: float):\n    pass

    Testipääohjelma ja esimerkkisyöte:

    exactum = Kassapaate()\n\nantin_kortti = Maksukortti(2)\nprint(f\"Kortilla rahaa {antin_kortti.saldo} euroa\")\n\ntulos = exactum.syo_maukkaasti_kortilla(antin_kortti)\nprint(\"Riittikö raha:\", tulos)\n\nexactum.lataa_rahaa_kortille(antin_kortti, 100)\nprint(f\"Kortilla rahaa {antin_kortti.saldo} euroa\")\n\ntulos = exactum.syo_maukkaasti_kortilla(antin_kortti)\nprint(\"Riittikö raha:\", tulos)\nprint(f\"Kortilla rahaa {antin_kortti.saldo} euroa\")\n\nprint(\"Kassassa rahaa\", exactum.rahaa)\nprint(\"Edullisia lounaita myyty\", exactum.edulliset)\nprint(\"Maukkaita lounaita myyty\", exactum.maukkaat)

    Kortilla rahaa 2 euroa\nRiittikö raha: False\nKortilla rahaa 102 euroa\nRiittikö raha: True\nKortilla rahaa 97.7 euroa\nKassassa rahaa 1100\nEdullisia lounaita myyty 0\nMaukkaita lounaita myyty 1

    Saman luokan oliot metodien parametrina

    Tarkastellaan jälleen kerran yhtä versiota luokasta Henkilo:

    class Henkilo:\n    def __init__(self, nimi: str, syntynyt: int):\n        self.nimi = nimi\n        self.syntynyt = syntynyt

    Oletetaan että olemme tekemässä ohjelmaa, joka vertailee henkilöiden ikiä. Voisimme tehdä tarkoitusta varten erillisen funktion:

    def vanhempi_kuin(henkilo1: Henkilo, henkilo2: Henkilo):\n    if henkilo1.syntynyt < henkilo2.syntynyt:\n        return True\n    else:\n        return False\n\nmuhammad = Henkilo(\"Muhammad ibn Musa al-Khwarizmi\", 780)\npascal = Henkilo(\"Blaise Pascal\", 1623)\ngrace = Henkilo(\"Grace Hopper\", 1906)\n\nif vanhempi_kuin(muhammad, pascal):\n    print(f\"{muhammad} on vanhempi kuin {pascal}\")\nelse:\n    print(f\"{muhammad} ei ole vanhempi kuin {pascal}\")\n\nif vanhempi_kuin(grace, pascal):\n    print(f\"{grace} on vanhempi kuin {pascal}\")\nelse:\n    print(f\"{grace} ei ole vanhempi kuin {pascal}\")

    Muhammad ibn Musa al-Khwarizmi on vanhempi kuin Blaise Pascal\nGrace Hopper ei ole vanhempi kuin Blaise Pascal

    Olio-ohjelmoinnin henkeen kuuluu kuitenkin sijoittaa oliota käsittelevät \"funktiot\" luokan metodeiksi. Voisimmekin tehdä henkilölle metodin, jonka avulla henkilön ikää voidaan verrata toiseen henkilöön:

    class Henkilo:\n    def __init__(self, nimi: str, syntynyt: int):\n        self.nimi = nimi\n        self.syntynyt = syntynyt\n\n    # huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!\n    def vanhempi_kuin(self, toinen: \"Henkilo\"):\n        if self.syntynyt < toinen.syntynyt:\n            return True\n        else:\n            return False

    Nyt siis olio itse on self ja toinen on henkilöolio, joka toimii vertailukohtana.

    Huomaa, miten metodin kutsuminen eroaa funktion kutsumisesta:

    muhammad = Henkilo(\"Muhammad ibn Musa al-Khwarizmi\", 780)\npascal = Henkilo(\"Blaise Pascal\", 1623)\ngrace = Henkilo(\"Grace Hopper\", 1906)\n\nif muhammad.vanhempi_kuin(pascal):\n    print(f\"{muhammad.nimi} on vanhempi kuin {pascal.nimi}\")\nelse:\n    print(f\"{muhammad.nimi} ei ole vanhempi kuin {pascal.nimi}\")\n\nif grace.vanhempi_kuin(pascal):\n    print(f\"{grace.nimi} on vanhempi kuin {pascal.nimi}\")\nelse:\n    print(f\"{grace.nimi} ei ole vanhempi kuin {pascal.nimi}\")

    Pisteen vasemmalla puolella on siis verrattava henkilö, eli olio, johon metodin suorituksessa viittaa muuttuja self. Metodin parametrina taas on vertailukohta, eli metodin suorituksessa muuttujan toinen viittaama olio.

    Ohjelman tulostus on sama kuin edellisessä funktiota käyttäneessä esimerkissä.

    Huomaa, että if-else-rakenne metodissa vanhempi_kuin on oikeastaan turha, sillä vertailun arvona on suoraan haluamamme totuusarvo. Voimme siis yksinkertaistaa metodia seuraavasti:

    class Henkilo:\n    def __init__(self, nimi: str, syntynyt: int):\n        self.nimi = nimi\n        self.syntynyt = syntynyt\n\n    # huomaa, että tyyppivihje pitää antaa hipsuissa jos parametri on saman luokan olio!\n    def vanhempi_kuin(self, toinen: \"Henkilo\"):\n        return self.syntynyt < toinen.syntynyt:

    Edellisestä esimerkistä kannattaa huomata se, että kun metodi saa parametrikseen toisen saman luokan olion, tulee tyyppivihje antaa hipsuissa, eli seuraava koodi aiheuttaisi virheen:

    class Henkilo:\n    # ...\n\n    # tämä ei toimi, Henkilo pitaa olla hipsuissa\n    def vanhempi_kuin(self, toinen: Henkilo):\n        return self.syntynyt < toinen.syntynyt:

    Asuntovälitystoimiston tietojärjestelmässä kuvataan myynnissä olevaa asuntoa seuraavasta luokasta tehdyillä olioilla:

    class Asunto:\n    def __init__(self, huoneita: int, nelioita: int, neliohinta: int):\n        self.huoneita = huoneita\n        self.nelioita = nelioita\n        self.neliohinta = neliohinta

    Tehtävänä on toteuttaa metodeita, joiden avulla myynnissä olevia asuntoja voidaan vertailla.

    Onko suurempi

    Tee metodi suurempi(self, verrattava), joka palauttaa True, jos asunto-olio itse on pinta-alaltaan suurempi kuin verrattava asunto-olio.

    Esimerkki metodin toiminnasta:

    eira_yksio = Asunto(1, 16, 5500)\nkallio_kaksio = Asunto(2, 38, 4200)\njakomaki_kolmio = Asunto(3, 78, 2500)\n\nprint(eira_yksio.suurempi(kallio_kaksio))\nprint(jakomaki_kolmio.suurempi(kallio_kaksio))

    False\nTrue

    Hintaero

    Tee metodi hintaero(self, verrattava), joka palauttaa asunto-olion ja verrattavan asunto-olion hintaeron. Hintaero on asuntojen hintojen erotuksen (hinta lasketaan kertomalla neliöhinta neliöillä) itseisarvo.

    Esimerkki metodin toiminnasta:

    eira_yksio = Asunto(1, 16, 5500)\nkallio_kaksio = Asunto(2, 38, 4200)\njakomaki_kolmio = Asunto(3, 78, 2500)\n\nprint(eira_yksio.hintaero(kallio_kaksio))\nprint(jakomaki_kolmio.hintaero(kallio_kaksio))

    71600\n35400

    Onko kalliimpi?

    Tee metodi kalliimpi(self, verrattava) joka palauttaa True, jos asunto-olio on kalliimpi kuin verrattavana oleva asunto-olio.

    Esimerkki metodin toiminnasta:

    eira_yksio = Asunto(1, 16, 5500)\nkallio_kaksio = Asunto(2, 38, 4200)\njakomaki_kolmio = Asunto(3, 78, 2500)\n\nprint(eira_yksio.kalliimpi(kallio_kaksio))\nprint(jakomaki_kolmio.kalliimpi(kallio_kaksio))

    False\nTrue

    ","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/1-oliot-ja-viitteet.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/2-oliot-attribuuttina/page-data.json b/page-data/osa-9/2-oliot-attribuuttina/page-data.json index 2d7800eb1..fcedd71f9 100644 --- a/page-data/osa-9/2-oliot-attribuuttina/page-data.json +++ b/page-data/osa-9/2-oliot-attribuuttina/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-9/2-oliot-attribuuttina", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tallentaa olioita toisten olioiden sisään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin nähtiin esimerkkejä luokista, joissa attribuutteina oli käytetty esimerkiksi listoja. Samalla tavalla myös omista luokista luotuja olioita voi käyttää toisten olioiden attribuutteina. Seuraavissa esimerkeissä on määritelty luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"text","value":". Opintosuorituksessa hyödynnetään kahta ensimmäistä luokkaa. Luokkien sisäinen toteutus on lyhyt, jotta esimerkki toisi esille oleellisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä jokainen luokka on kirjoitettu omaan tiedostoonsa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esitellään aluksi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":", joka on määritelty tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssi.py"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" koodi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" koodi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" mallintaa yhtä opiskelijaa. Luokka on määritelty tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opiskelija.py"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"text","value":" hyödyntää luokkia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" suorituksen tallentamiseen. Huomaa, että luokat tuodaan mukaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Kurssi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opiskelija\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelija\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kurssi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvosana"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki opintosuoritusten lisäämisestä listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opintosuoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opintosuoritus\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Kurssi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opiskelija\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan lista opiskelijoista"}]},{"type":"text","value":"\nopiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Leena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"9999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"43"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"3333\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kurssi Ohjelmoinnin perusteet"}]},{"type":"text","value":"\nohpe "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohpe1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan suoritukset kaikille opiskelijoille, kaikille arvosanaksi 3"}]},{"type":"text","value":"\nsuoritukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opintosuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ohpe"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikista suorituksista opiskelijan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olli\nPekka\nLeena\nTiina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan lähemmin riviä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print(suoritus.opiskelija.nimi)"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suoritus"}]},{"type":"text","value":" on luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"text","value":" mukainen olio"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Niinpä muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opiskelija"}]},{"type":"text","value":" viittaa suoritukseen tallennettuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-olioon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-luokan muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" sisältää opiskelijan nimen"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"h2","properties":{"id":"milloin-import-tarvitaan","style":"position:relative;"},"children":[{"type":"text","value":"Milloin import tarvitaan?"},{"type":"element","tagName":"a","properties":{"href":"#milloin-import-tarvitaan","ariaLabel":"milloin import tarvitaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä esimerkissä käytetään muutamassa kohdassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":":ia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opintosuoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opintosuoritus\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Kurssi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opiskelija\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Importia tarvitaan vain jos tiedostossa käytetään jossain muualla määriteltyä koodia. Näin on esimerkiksi kun käytetään jotain Pythonin valmista kalustoa, esim. matemaattisia operaatiota tarjoavaa moduulia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"luvun "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"neliöjuuri math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä tehtävässä oletettiin, että luokat on määritelty omissa tiedostoissaan. Esimerkki toteaa mm.\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Esitellään aluksi luokka Kurssi, joka on määritelty tiedostossa kurssi.py"}]},{"type":"text","value":"\nja importin tarve siis johtuu tästä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kaikki koodi sijoitetaan samaan tiedostoon, kuten kaikissa kurssin ohjelmointitehtävissä ohjeistetaan, "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"et tarvitse"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":":ia luomiesi luokkien käytöön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos siis päädyt kirjottamaan kurssilla seuraavanlaista koodia"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Henkilo\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ratkaisusi on todennäköisesti väärä! Lisää importin käytöstä "},{"type":"element","tagName":"a","properties":{"href":"/osa-7/1-moduulit/"},"children":[{"type":"text","value":"osan 7"}]},{"type":"text","value":" materiaalissa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lemmikit","tmcname":"osa09-06_lemmikki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa tulee kaksi luokkaa, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":". Jokaisella henkilöllä on yksi lemmikki. Täydennä luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" siten, että metodi palauttaa merkkijonon, joka kertoo henkilön nimen lisäksi lemmikin nimen ja rodun alta löytyvät esimerkkitulosteen mukaisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodin palauttaman merkkijonon pitää olla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"täsmälleen samanlainen kuin esimerkkitulosteessa esitetty"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"hulda "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lemmikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hulda\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sekarotuinen koira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nleevi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Leevi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hulda"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"leevi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leevi, kaverina Hulda, joka on sekarotuinen koira"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" koska kaikki koodi tulee samaan tiedostoon, et tarvitse tehtävässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":":ia ollenkaan!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"olion-attribuuttina-lista-olioita","style":"position:relative;"},"children":[{"type":"text","value":"Olion attribuuttina lista olioita"},{"type":"element","tagName":"a","properties":{"href":"#olion-attribuuttina-lista-olioita","ariaLabel":"olion attribuuttina lista olioita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Äskeisissä esimerkeissä oliolla oli attribuuttina yksittäinen toisen luokan olio, esim. henkilöllä attribuuttina lemmikki ja opintosuorituksella attribuuttina kurssi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnissa törmätään kutenkin usein tilanteeseen, jossa oliolla on attribuuttina "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"joukko"}]},{"type":"text","value":" toisen luokan olioita. Eräs tälläinen tilanne kuvaa joukkueen ja sen pelaajien välistä yhteyttä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maalit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (maaleja "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Joukkue"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"yhteenveto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Joukkue\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelaajia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelaajien maalimäärät\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joukkue Kumpulan pallo\nPelaajia 3\nPelaajien maalimäärät [10, 22, 1]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lahjapakkaus","tmcname":"osa09-07_lahjapakkaus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä harjoitellaan lahjojen pakkaamista. Tehdään luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lahja"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pakkaus"}]},{"type":"text","value":". Lahjalla on nimi ja paino, ja pakkaus sisältää lahjoja."}]},{"type":"element","tagName":"h2","properties":{"id":"lahja-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Lahja-luokka"},{"type":"element","tagName":"a","properties":{"href":"#lahja-luokka","ariaLabel":"lahja luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lahja"}]},{"type":"text","value":", josta muodostetut oliot kuvaavat erilaisia lahjoja. Tallennettavat tiedot ovat tavaran nimi ja paino (kg). Luokan olioiden tulee toimia seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahjan nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahjan paino:\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahja:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan nimi: Aapiskukko\nLahjan paino: 2\nLahja: Aapiskukko (2 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"pakkaus-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Pakkaus-luokka"},{"type":"element","tagName":"a","properties":{"href":"#pakkaus-luokka","ariaLabel":"pakkaus luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pakkaus"}]},{"type":"text","value":", johon voi lisätä lahjoja ja joka pitää kirjaa pakkauksessa olevien lahjojen yhteispainosta. Luokassa tulee olla seuraavat metodit"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_lahja(self, lahja: Lahja)"}]},{"type":"text","value":", joka lisää parametrina annettavan lahjan pakkaukseen. Metodi ei palauta mitään arvoa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yhteispaino(self)"}]},{"type":"text","value":", joka palauttaa pakkauksessa olevien lahjojen yhteispainon."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npakkaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteispaino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ncd_levy "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pink Floyd: Dark side of the moon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cd_levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteispaino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"none-eli-viite-ei-mihinkaan","style":"position:relative;"},"children":[{"type":"text","value":"None eli viite ei mihinkään"},{"type":"element","tagName":"a","properties":{"href":"#none-eli-viite-ei-mihinkaan","ariaLabel":"none eli viite ei mihinkaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa muuttujat viittaavat aina johonkin olioon. On kuitenkin tilanteita, joissa haluaisimme määrittää arvon, joka ei viittaa mihinkään. Arvoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":" käytetään esittämään tyhjää viittausta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos esimerkiksi luokkaan joukkue lisättäisiin metodi, joka etsii joukkueen pelaajan, saattaisi olla luontevaa esittää paluuarvolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":" tilanne, jossa pelaajaa ei löydy:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maalit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (maaleja "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Joukkue"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" pelaaja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npelaaja2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukkis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Antti (maaleja 1)\nNone"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-arvojen kanssa pitää olla tarkkana. On hyvin tyypillistä, että ohjelmassa kutsutaan jotain metodia oliolle (tai pyydetään attribuutin arvoa oliolta), joka onkin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukkis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jukkiksen maalimäärä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos näin tehdään, ohjelma päättyy virheeseen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Traceback (most recent call last):\nFile \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nAttributeError: 'NoneType' object has no attribute 'maalit'"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-arvojen varalta onkin syytä tehdä tarkistus, ennen kuin riskialtista koodia kutsutaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukkis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jukkiksen maalimäärä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"p"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jukkis ei pelaa Kumpulan pallossa :(\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jukkis ei pelaa Kumpulan pallossa :("}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Huoneen lyhin","tmcname":"osa09-08_huoneen_lyhin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":". Henkilöllä on nimi ja pituus. Toteutetaan tässä tehtävässä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":", jonne voi lisätä henkilöitä ja josta voi hakea ja poistaa lyhimmän henkilön."}]},{"type":"element","tagName":"h2","properties":{"id":"huone","style":"position:relative;"},"children":[{"type":"text","value":"Huone"},{"type":"element","tagName":"a","properties":{"href":"#huone","ariaLabel":"huone permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luo luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":", jonka sisällä on lista henkilöitä ja jolla on seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa(henkilo: Henkilo)"}]},{"type":"text","value":" lisää huoneeseen parametrina annetun henkilön."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"on_tyhja()"}]},{"type":"text","value":" - palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":", joka kertoo, onko huone tyhjä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_tiedot()"}]},{"type":"text","value":" tulostaa huoneessa olevat henkilöt"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lea\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"183"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kenya\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"182"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Auli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"186"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Terhi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"185"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huone tyhjä? True\nHuone tyhjä? False\nHuoneessa 5 henkilöä, yhteispituus 908 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)\nNina (172 cm)\nTerhi (185 cm)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lyhin-henkilo","style":"position:relative;"},"children":[{"type":"text","value":"Lyhin henkilö"},{"type":"element","tagName":"a","properties":{"href":"#lyhin-henkilo","ariaLabel":"lyhin henkilo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lyhin()"}]},{"type":"text","value":", joka palauttaa huoneeseen lisätyistä henkilöistä lyhimmän. Mikäli huone on tyhjä, metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-viitteen. Metodin ei tule poistaa henkilöä huoneesta."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lyhin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lea\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"183"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kenya\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"182"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Auli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"186"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lyhin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huone tyhjä? True\nLyhin: None"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huone tyhjä? False\nLyhin: Nina"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"huoneesta-ottaminen","style":"position:relative;"},"children":[{"type":"text","value":"Huoneesta ottaminen"},{"type":"element","tagName":"a","properties":{"href":"#huoneesta-ottaminen","ariaLabel":"huoneesta ottaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_lyhin()"}]},{"type":"text","value":", joka poistaa ja palauttaa huoneesta lyhimmän henkilön. Mikäli huone on tyhjä, metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-viitteen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lea\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"183"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kenya\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"182"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Auli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"186"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npoistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"poista_lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Otettiin huoneesta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"poistettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Otettiin huoneesta Nina"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huoneessa 3 henkilöä, yhteispituus 551 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":": "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/3-listat#alkioiden-lisaaminen-ja-poistaminen"},"children":[{"type":"text","value":"osassa 4"}]},{"type":"text","value":" kerrottiin, miten alkion poistaminen listalta onnistuu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje2"}]},{"type":"text","value":": muista, että metodissa on mahdollista kutsua saman olion toista metodia. Eli seuraava koodi toimii:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Huone"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lyhin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"poista_lyhin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lyhin_henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]}]}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat tallentaa olioita toisten olioiden sisään
    • \n
    • Tiedät, mitä tarkoittaa None
    • \n

    Aikaisemmin nähtiin esimerkkejä luokista, joissa attribuutteina oli käytetty esimerkiksi listoja. Samalla tavalla myös omista luokista luotuja olioita voi käyttää toisten olioiden attribuutteina. Seuraavissa esimerkeissä on määritelty luokat Kurssi, Opiskelija ja Opintosuoritus. Opintosuorituksessa hyödynnetään kahta ensimmäistä luokkaa. Luokkien sisäinen toteutus on lyhyt, jotta esimerkki toisi esille oleellisen.

    Esimerkissä jokainen luokka on kirjoitettu omaan tiedostoonsa.

    Esitellään aluksi luokka Kurssi, joka on määritelty tiedostossa kurssi.py:

    class Kurssi:\n    def __init__(self, nimi: str, koodi: str, opintopisteet: int):\n        self.nimi = nimi\n        self.koodi = koodi\n        self.opintopisteet = opintopisteet

    Luokka Opiskelija mallintaa yhtä opiskelijaa. Luokka on määritelty tiedostossa opiskelija.py:

    class Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str, opintopisteet: int):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n        self.opintopisteet = opintopisteet

    Luokka Opintosuoritus hyödyntää luokkia Kurssi ja Opiskelija suorituksen tallentamiseen. Huomaa, että luokat tuodaan mukaan import-lauseella:

    from kurssi import Kurssi\nfrom opiskelija import Opiskelija\n\nclass Opintosuoritus:\n    def __init__(self, opiskelija: Opiskelija, kurssi: Kurssi, arvosana: int):\n        self.opiskelija = opiskelija\n        self.kurssi = kurssi\n        self.arvosana = arvosana

    Esimerkki opintosuoritusten lisäämisestä listaan:

    from opintosuoritus import Opintosuoritus\nfrom kurssi import Kurssi\nfrom opiskelija import Opiskelija\n\n# Luodaan lista opiskelijoista\nopiskelijat = []\nopiskelijat.append(Opiskelija(\"Olli\", \"1234\", 10))\nopiskelijat.append(Opiskelija(\"Pekka\", \"3210\", 23))\nopiskelijat.append(Opiskelija(\"Leena\", \"9999\", 43))\nopiskelijat.append(Opiskelija(\"Tiina\", \"3333\", 8))\n\n# Kurssi Ohjelmoinnin perusteet\nohpe = Kurssi(\"Ohjelmoinnin perusteet\", \"ohpe1\", 5)\n\n# Annetaan suoritukset kaikille opiskelijoille, kaikille arvosanaksi 3\nsuoritukset = []\nfor opiskelija in opiskelijat:\n    suoritukset.append(Opintosuoritus(opiskelija, ohpe, 3))\n\n# Tulostetaan kaikista suorituksista opiskelijan nimi\nfor suoritus in suoritukset:\n    print(suoritus.opiskelija.nimi)

    Olli\nPekka\nLeena\nTiina

    Tarkastellaan lähemmin riviä print(suoritus.opiskelija.nimi):

      \n
    • suoritus on luokan Opintosuoritus mukainen olio
    • \n
    • Niinpä muuttuja opiskelija viittaa suoritukseen tallennettuun Opiskelija-olioon
    • \n
    • Opiskelija-luokan muuttuja nimi sisältää opiskelijan nimen
    • \n

    Milloin import tarvitaan?

    Edellisessä esimerkissä käytetään muutamassa kohdassa import:ia:

    from opintosuoritus import Opintosuoritus\nfrom kurssi import Kurssi\nfrom opiskelija import Opiskelija\n\n# koodi

    Importia tarvitaan vain jos tiedostossa käytetään jossain muualla määriteltyä koodia. Näin on esimerkiksi kun käytetään jotain Pythonin valmista kalustoa, esim. matemaattisia operaatiota tarjoavaa moduulia math:

    import math\n\nx = 10\nprint(f\"luvun {x} {neliöjuuri math.sqrt(x)}\")

    Edellisessä tehtävässä oletettiin, että luokat on määritelty omissa tiedostoissaan. Esimerkki toteaa mm.\nEsitellään aluksi luokka Kurssi, joka on määritelty tiedostossa kurssi.py\nja importin tarve siis johtuu tästä.

    Jos kaikki koodi sijoitetaan samaan tiedostoon, kuten kaikissa kurssin ohjelmointitehtävissä ohjeistetaan, et tarvitse import:ia luomiesi luokkien käytöön.

    Jos siis päädyt kirjottamaan kurssilla seuraavanlaista koodia

    from henkilo import Henkilo\n\n# koodi

    ratkaisusi on todennäköisesti väärä! Lisää importin käytöstä osan 7 materiaalissa.

    Tehtäväpohjassa tulee kaksi luokkaa, Henkilo ja Lemmikki. Jokaisella henkilöllä on yksi lemmikki. Täydennä luokan Henkilo metodia __str__ siten, että metodi palauttaa merkkijonon, joka kertoo henkilön nimen lisäksi lemmikin nimen ja rodun alta löytyvät esimerkkitulosteen mukaisesti.

    Huomaa, että metodin palauttaman merkkijonon pitää olla täsmälleen samanlainen kuin esimerkkitulosteessa esitetty!

    hulda = Lemmikki(\"Hulda\", \"sekarotuinen koira\")\nleevi = Henkilo(\"Leevi\", hulda)\n\nprint(leevi)

    Leevi, kaverina Hulda, joka on sekarotuinen koira

    Huom: koska kaikki koodi tulee samaan tiedostoon, et tarvitse tehtävässä import:ia ollenkaan!

    Olion attribuuttina lista olioita

    Äskeisissä esimerkeissä oliolla oli attribuuttina yksittäinen toisen luokan olio, esim. henkilöllä attribuuttina lemmikki ja opintosuorituksella attribuuttina kurssi.

    Olio-ohjelmoinnissa törmätään kutenkin usein tilanteeseen, jossa oliolla on attribuuttina joukko toisen luokan olioita. Eräs tälläinen tilanne kuvaa joukkueen ja sen pelaajien välistä yhteyttä:

    class Pelaaja:\n    def __init__(self, nimi: str, maalit: int):\n        self.nimi = nimi\n        self.maalit = maalit\n\n    def __str__(self):\n        return f\"{self.nimi} (maaleja {self.maalit})\"\n\nclass Joukkue:\n    def __init__(self, nimi: str):\n        self.nimi = nimi\n        self.pelaajat = []\n\n    def lisaa_pelaaja(self, pelaaja: Pelaaja):\n        self.pelaajat.append(pelaaja)\n\n    def yhteenveto(self):\n        maalit = []\n        for pelaaja in self.pelaajat:\n            maalit.append(pelaaja.maalit)\n        print(\"Joukkue\", self.nimi)\n        print(\"Pelaajia\", len(self.pelaajat))\n        print(\"Pelaajien maalimäärät\", maalit)

    Käyttöesimerkki:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\nkupa.lisaa_pelaaja(Pelaaja(\"Emilia\", 22))\nkupa.lisaa_pelaaja(Pelaaja(\"Antti\", 1))\nkupa.yhteenveto()

    Joukkue Kumpulan pallo\nPelaajia 3\nPelaajien maalimäärät [10, 22, 1]

    Tässä tehtävässä harjoitellaan lahjojen pakkaamista. Tehdään luokat Lahja ja Pakkaus. Lahjalla on nimi ja paino, ja pakkaus sisältää lahjoja.

    Lahja-luokka

    Tee luokka Lahja, josta muodostetut oliot kuvaavat erilaisia lahjoja. Tallennettavat tiedot ovat tavaran nimi ja paino (kg). Luokan olioiden tulee toimia seuraavasti:

    kirja = Lahja(\"Aapiskukko\", 2)\n\nprint(\"Lahjan nimi:\", kirja.nimi)\nprint(\"Lahjan paino:\" ,kirja.paino)\nprint(\"Lahja:\", kirja)

    Ohjelman tulostuksen tulisi olla seuraava:

    Lahjan nimi: Aapiskukko\nLahjan paino: 2\nLahja: Aapiskukko (2 kg)

    Pakkaus-luokka

    Tee luokka Pakkaus, johon voi lisätä lahjoja ja joka pitää kirjaa pakkauksessa olevien lahjojen yhteispainosta. Luokassa tulee olla seuraavat metodit

      \n
    • lisaa_lahja(self, lahja: Lahja), joka lisää parametrina annettavan lahjan pakkaukseen. Metodi ei palauta mitään arvoa.
    • \n
    • yhteispaino(self), joka palauttaa pakkauksessa olevien lahjojen yhteispainon.
    • \n

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Lahja(\"Aapiskukko\", 2)\n\npakkaus = Pakkaus()\npakkaus.lisaa_lahja(kirja)\nprint(pakkaus.yhteispaino())\n\ncd_levy = Lahja(\"Pink Floyd: Dark side of the moon\", 1)\npakkaus.lisaa_lahja(cd_levy)\nprint(pakkaus.yhteispaino())

    2\n3

    None eli viite ei mihinkään

    Pythonissa muuttujat viittaavat aina johonkin olioon. On kuitenkin tilanteita, joissa haluaisimme määrittää arvon, joka ei viittaa mihinkään. Arvoa None käytetään esittämään tyhjää viittausta.

    Jos esimerkiksi luokkaan joukkue lisättäisiin metodi, joka etsii joukkueen pelaajan, saattaisi olla luontevaa esittää paluuarvolla None tilanne, jossa pelaajaa ei löydy:

    class Pelaaja:\n    def __init__(self, nimi: str, maalit: int):\n        self.nimi = nimi\n        self.maalit = maalit\n\n    def __str__(self):\n        return f\"{self.nimi} (maaleja {self.maalit})\"\n\nclass Joukkue:\n    def __init__(self, nimi: str):\n        self.nimi = nimi\n        self.pelaajat = []\n\n    def lisaa_pelaaja(self, pelaaja: Pelaaja):\n        self.pelaajat.append(pelaaja)\n\n    def etsi(self, nimi: str):\n        for pelaaja in self.pelaajat:\n            if pelaaja.nimi == nimi:\n                return pelaaja\n        return None

    Käyttöesimerkki:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\nkupa.lisaa_pelaaja(Pelaaja(\"Emilia\", 22))\nkupa.lisaa_pelaaja(Pelaaja(\"Antti\", 1))\n\npelaaja1 = kupa.etsi(\"Antti\")\nprint(pelaaja1)\npelaaja2 = kupa.etsi(\"Jukkis\")\nprint(pelaaja2)

    Antti (maaleja 1)\nNone

    None-arvojen kanssa pitää olla tarkkana. On hyvin tyypillistä, että ohjelmassa kutsutaan jotain metodia oliolle (tai pyydetään attribuutin arvoa oliolta), joka onkin None:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\n\npelaaja = kupa.etsi(\"Jukkis\")\nprint(f\"Jukkiksen maalimäärä {pelaaja.maalit}\")

    Jos näin tehdään, ohjelma päättyy virheeseen:

    Traceback (most recent call last):\nFile \"\", line 1, in \nAttributeError: 'NoneType' object has no attribute 'maalit'

    None-arvojen varalta onkin syytä tehdä tarkistus, ennen kuin riskialtista koodia kutsutaan:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\n\npelaaja = kupa.etsi(\"Jukkis\")\nif pelaaja is not None:\n    print(f\"Jukkiksen maalimäärä {p.maalit}\")\nelse:\n    print(f\"Jukkis ei pelaa Kumpulan pallossa :(\")

    Jukkis ei pelaa Kumpulan pallossa :(

    Tehtäväpohjassa on valmiina luokka Henkilo. Henkilöllä on nimi ja pituus. Toteutetaan tässä tehtävässä luokka Huone, jonne voi lisätä henkilöitä ja josta voi hakea ja poistaa lyhimmän henkilön.

    Huone

    Luo luokka Huone, jonka sisällä on lista henkilöitä ja jolla on seuraavat metodit:

      \n
    • lisaa(henkilo: Henkilo) lisää huoneeseen parametrina annetun henkilön.
    • \n
    • on_tyhja() - palauttaa arvon True tai False, joka kertoo, onko huone tyhjä.
    • \n
    • tulosta_tiedot() tulostaa huoneessa olevat henkilöt
    • \n

    Seuraavassa käyttöesimerkki:

    huone = Huone()\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nhuone.lisaa(Henkilo(\"Lea\", 183))\nhuone.lisaa(Henkilo(\"Kenya\", 182))\nhuone.lisaa(Henkilo(\"Auli\", 186))\nhuone.lisaa(Henkilo(\"Nina\", 172))\nhuone.lisaa(Henkilo(\"Terhi\", 185))\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nhuone.tulosta_tiedot()

    Huone tyhjä? True\nHuone tyhjä? False\nHuoneessa 5 henkilöä, yhteispituus 908 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)\nNina (172 cm)\nTerhi (185 cm)

    Lyhin henkilö

    Lisää luokalle Huone metodi lyhin(), joka palauttaa huoneeseen lisätyistä henkilöistä lyhimmän. Mikäli huone on tyhjä, metodi palauttaa None-viitteen. Metodin ei tule poistaa henkilöä huoneesta.

    huone = Huone()\n\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nprint(\"Lyhin:\", huone.lyhin())\n\nhuone.lisaa(Henkilo(\"Lea\", 183))\nhuone.lisaa(Henkilo(\"Kenya\", 182))\nhuone.lisaa(Henkilo(\"Nina\", 172))\nhuone.lisaa(Henkilo(\"Auli\", 186))\n\nprint()\n\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nprint(\"Lyhin:\", huone.lyhin())\n\nprint()\n\nhuone.tulosta_tiedot()

    Huone tyhjä? True\nLyhin: None

    Huone tyhjä? False\nLyhin: Nina

    Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)

    Huoneesta ottaminen

    Lisää luokalle Huone metodi poista_lyhin(), joka poistaa ja palauttaa huoneesta lyhimmän henkilön. Mikäli huone on tyhjä, metodi palauttaa None-viitteen.

    huone = Huone()\n\nhuone.lisaa(Henkilo(\"Lea\", 183))\nhuone.lisaa(Henkilo(\"Kenya\", 182))\nhuone.lisaa(Henkilo(\"Nina\", 172))\nhuone.lisaa(Henkilo(\"Auli\", 186))\nhuone.tulosta_tiedot()\n\nprint()\n\npoistettu = huone.poista_lyhin()\nprint(f\"Otettiin huoneesta {poistettu.nimi}\")\n\nprint()\n\nhuone.tulosta_tiedot()

    Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)

    Otettiin huoneesta Nina

    Huoneessa 3 henkilöä, yhteispituus 551 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)

    Vihje: osassa 4 kerrottiin, miten alkion poistaminen listalta onnistuu.

    Vihje2: muista, että metodissa on mahdollista kutsua saman olion toista metodia. Eli seuraava koodi toimii:

    class Huone:\n    # ...\n    def lyhin(self):\n        # koodi\n\n    def poista_lyhin(self):\n        lyhin_henkilo = self.lyhin()\n        # ...
    ","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/2-oliot-attribuuttina.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat tallentaa olioita toisten olioiden sisään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoittaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aikaisemmin nähtiin esimerkkejä luokista, joissa attribuutteina oli käytetty esimerkiksi listoja. Samalla tavalla myös omista luokista luotuja olioita voi käyttää toisten olioiden attribuutteina. Seuraavissa esimerkeissä on määritelty luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"text","value":". Opintosuorituksessa hyödynnetään kahta ensimmäistä luokkaa. Luokkien sisäinen toteutus on lyhyt, jotta esimerkki toisi esille oleellisen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkissä jokainen luokka on kirjoitettu omaan tiedostoonsa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esitellään aluksi luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":", joka on määritelty tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kurssi.py"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" koodi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"koodi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" koodi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" mallintaa yhtä opiskelijaa. Luokka on määritelty tiedostossa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opiskelija.py"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"text","value":" hyödyntää luokkia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kurssi"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" suorituksen tallentamiseen. Huomaa, että luokat tuodaan mukaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":"-lauseella:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Kurssi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opiskelija\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" arvosana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelija\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kurssi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"arvosana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" arvosana"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki opintosuoritusten lisäämisestä listaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opintosuoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opintosuoritus\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Kurssi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opiskelija\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luodaan lista opiskelijoista"}]},{"type":"text","value":"\nopiskelijat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"23"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Leena\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"9999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"43"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"3333\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"8"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kurssi Ohjelmoinnin perusteet"}]},{"type":"text","value":"\nohpe "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohjelmoinnin perusteet\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ohpe1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan suoritukset kaikille opiskelijoille, kaikille arvosanaksi 3"}]},{"type":"text","value":"\nsuoritukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" opiskelijat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Opintosuoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" ohpe"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tulostetaan kaikista suorituksista opiskelijan nimi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" suoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" suoritukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olli\nPekka\nLeena\nTiina"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan lähemmin riviä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"print(suoritus.opiskelija.nimi)"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suoritus"}]},{"type":"text","value":" on luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opintosuoritus"}]},{"type":"text","value":" mukainen olio"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Niinpä muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opiskelija"}]},{"type":"text","value":" viittaa suoritukseen tallennettuun "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-olioon"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-luokan muuttuja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" sisältää opiskelijan nimen"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"h2","properties":{"id":"milloin-import-tarvitaan","style":"position:relative;"},"children":[{"type":"text","value":"Milloin import tarvitaan?"},{"type":"element","tagName":"a","properties":{"href":"#milloin-import-tarvitaan","ariaLabel":"milloin import tarvitaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä esimerkissä käytetään muutamassa kohdassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":":ia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opintosuoritus "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opintosuoritus\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" kurssi "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Kurssi\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" opiskelija "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Opiskelija\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Importia tarvitaan vain jos tiedostossa käytetään jossain muualla määriteltyä koodia. Näin on esimerkiksi kun käytetään jotain Pythonin valmista kalustoa, esim. matemaattisia operaatiota tarjoavaa moduulia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"math"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\nx "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"luvun "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"neliöjuuri math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä tehtävässä oletettiin, että luokat on määritelty omissa tiedostoissaan. Esimerkki toteaa mm.\n"},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"Esitellään aluksi luokka Kurssi, joka on määritelty tiedostossa kurssi.py"}]},{"type":"text","value":"\nja importin tarve siis johtuu tästä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos kaikki koodi sijoitetaan samaan tiedostoon, kuten kaikissa kurssin ohjelmointitehtävissä ohjeistetaan, "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"et tarvitse"}]},{"type":"text","value":" "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":":ia luomiesi luokkien käytöön."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos siis päädyt kirjottamaan kurssilla seuraavanlaista koodia"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" Henkilo\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ratkaisusi on todennäköisesti väärä! Lisää importin käytöstä "},{"type":"element","tagName":"a","properties":{"href":"/osa-7/1-moduulit/"},"children":[{"type":"text","value":"osan 7"}]},{"type":"text","value":" materiaalissa."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lemmikit","tmcname":"osa09-06_lemmikki"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa tulee kaksi luokkaa, "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lemmikki"}]},{"type":"text","value":". Jokaisella henkilöllä on yksi lemmikki. Täydennä luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":" metodia "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":" siten, että metodi palauttaa merkkijonon, joka kertoo henkilön nimen lisäksi lemmikin nimen ja rodun alta löytyvät esimerkkitulosteen mukaisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että metodin palauttaman merkkijonon pitää olla "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"täsmälleen samanlainen kuin esimerkkitulosteessa esitetty"}]},{"type":"text","value":"!"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"hulda "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lemmikki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Hulda\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"sekarotuinen koira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nleevi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Leevi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" hulda"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"leevi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Leevi, kaverina Hulda, joka on sekarotuinen koira"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huom:"}]},{"type":"text","value":" koska kaikki koodi tulee samaan tiedostoon, et tarvitse tehtävässä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":":ia ollenkaan!"}]}]},{"type":"element","tagName":"h2","properties":{"id":"olion-attribuuttina-lista-olioita","style":"position:relative;"},"children":[{"type":"text","value":"Olion attribuuttina lista olioita"},{"type":"element","tagName":"a","properties":{"href":"#olion-attribuuttina-lista-olioita","ariaLabel":"olion attribuuttina lista olioita permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Äskeisissä esimerkeissä oliolla oli attribuuttina yksittäinen toisen luokan olio, esim. henkilöllä attribuuttina lemmikki ja opintosuorituksella attribuuttina kurssi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnissa törmätään kutenkin usein tilanteeseen, jossa oliolla on attribuuttina "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"joukko"}]},{"type":"text","value":" toisen luokan olioita. Eräs tälläinen tilanne kuvaa joukkueen ja sen pelaajien välistä yhteyttä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maalit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (maaleja "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Joukkue"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"yhteenveto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Joukkue\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelaajia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelaajien maalimäärät\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Joukkue Kumpulan pallo\nPelaajia 3\nPelaajien maalimäärät [10, 22, 1]"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lahjapakkaus","tmcname":"osa09-07_lahjapakkaus"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtävässä harjoitellaan lahjojen pakkaamista. Tehdään luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lahja"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pakkaus"}]},{"type":"text","value":". Lahjalla on nimi ja paino, ja pakkaus sisältää lahjoja."}]},{"type":"element","tagName":"h2","properties":{"id":"lahja-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Lahja-luokka"},{"type":"element","tagName":"a","properties":{"href":"#lahja-luokka","ariaLabel":"lahja luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lahja"}]},{"type":"text","value":", josta muodostetut oliot kuvaavat erilaisia lahjoja. Tallennettavat tiedot ovat tavaran nimi ja paino (kg). Luokan olioiden tulee toimia seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahjan nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahjan paino:\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lahja:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lahjan nimi: Aapiskukko\nLahjan paino: 2\nLahja: Aapiskukko (2 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"pakkaus-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Pakkaus-luokka"},{"type":"element","tagName":"a","properties":{"href":"#pakkaus-luokka","ariaLabel":"pakkaus luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pakkaus"}]},{"type":"text","value":", johon voi lisätä lahjoja ja joka pitää kirjaa pakkauksessa olevien lahjojen yhteispainosta. Luokassa tulee olla seuraavat metodit"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_lahja(self, lahja: Lahja)"}]},{"type":"text","value":", joka lisää parametrina annettavan lahjan pakkaukseen. Metodi ei palauta mitään arvoa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"yhteispaino(self)"}]},{"type":"text","value":", joka palauttaa pakkauksessa olevien lahjojen yhteispainon."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npakkaus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteispaino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ncd_levy "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pink Floyd: Dark side of the moon\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_lahja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cd_levy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pakkaus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteispaino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"2\n3"}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"none-eli-viite-ei-mihinkaan","style":"position:relative;"},"children":[{"type":"text","value":"None eli viite ei mihinkään"},{"type":"element","tagName":"a","properties":{"href":"#none-eli-viite-ei-mihinkaan","ariaLabel":"none eli viite ei mihinkaan permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa muuttujat viittaavat aina johonkin olioon. On kuitenkin tilanteita, joissa haluaisimme määrittää arvon, joka ei viittaa mihinkään. Arvoa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":" käytetään esittämään tyhjää viittausta."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos esimerkiksi luokkaan joukkue lisättäisiin metodi, joka etsii joukkueen pelaajan, saattaisi olla luontevaa esittää paluuarvolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":" tilanne, jossa pelaajaa ei löydy:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maalit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" (maaleja "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Joukkue"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"etsi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelaajat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" pelaaja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Emilia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"22"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Antti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npelaaja2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukkis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Antti (maaleja 1)\nNone"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-arvojen kanssa pitää olla tarkkana. On hyvin tyypillistä, että ohjelmassa kutsutaan jotain metodia oliolle (tai pyydetään attribuutin arvoa oliolta), joka onkin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukkis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jukkiksen maalimäärä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos näin tehdään, ohjelma päättyy virheeseen:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"Traceback (most recent call last):\nFile \""},{"type":"element","tagName":"stdin","properties":{},"children":[{"type":"text","value":"\", line 1, in "},{"type":"element","tagName":"module","properties":{},"children":[{"type":"text","value":"\nAttributeError: 'NoneType' object has no attribute 'maalit'"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-arvojen varalta onkin syytä tehdä tarkistus, ennen kuin riskialtista koodia kutsutaan:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kupa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Joukkue"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpulan pallo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Erkki\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" kupa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"etsi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Jukkis\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jukkiksen maalimäärä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"p"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maalit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Jukkis ei pelaa Kumpulan pallossa :(\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jukkis ei pelaa Kumpulan pallossa :("}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Huoneen lyhin","tmcname":"osa09-08_huoneen_lyhin"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on valmiina luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Henkilo"}]},{"type":"text","value":". Henkilöllä on nimi ja pituus. Toteutetaan tässä tehtävässä luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":", jonne voi lisätä henkilöitä ja josta voi hakea ja poistaa lyhimmän henkilön."}]},{"type":"element","tagName":"h2","properties":{"id":"huone","style":"position:relative;"},"children":[{"type":"text","value":"Huone"},{"type":"element","tagName":"a","properties":{"href":"#huone","ariaLabel":"huone permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luo luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":", jonka sisällä on lista henkilöitä ja jolla on seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa(henkilo: Henkilo)"}]},{"type":"text","value":" lisää huoneeseen parametrina annetun henkilön."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"on_tyhja()"}]},{"type":"text","value":" - palauttaa arvon "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"True"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":", joka kertoo, onko huone tyhjä."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_tiedot()"}]},{"type":"text","value":" tulostaa huoneessa olevat henkilöt"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lea\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"183"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kenya\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"182"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Auli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"186"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Terhi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"185"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huone tyhjä? True\nHuone tyhjä? False\nHuoneessa 5 henkilöä, yhteispituus 908 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)\nNina (172 cm)\nTerhi (185 cm)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lyhin-henkilo","style":"position:relative;"},"children":[{"type":"text","value":"Lyhin henkilö"},{"type":"element","tagName":"a","properties":{"href":"#lyhin-henkilo","ariaLabel":"lyhin henkilo permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lyhin()"}]},{"type":"text","value":", joka palauttaa huoneeseen lisätyistä henkilöistä lyhimmän. Mikäli huone on tyhjä, metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-viitteen. Metodin ei tule poistaa henkilöä huoneesta."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lyhin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lea\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"183"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kenya\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"182"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Auli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"186"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Huone tyhjä?\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"on_tyhja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lyhin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huone tyhjä? True\nLyhin: None"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huone tyhjä? False\nLyhin: Nina"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"huoneesta-ottaminen","style":"position:relative;"},"children":[{"type":"text","value":"Huoneesta ottaminen"},{"type":"element","tagName":"a","properties":{"href":"#huoneesta-ottaminen","ariaLabel":"huoneesta ottaminen permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokalle "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Huone"}]},{"type":"text","value":" metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"poista_lyhin()"}]},{"type":"text","value":", joka poistaa ja palauttaa huoneesta lyhimmän henkilön. Mikäli huone on tyhjä, metodi palauttaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"-viitteen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"huone "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Lea\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"183"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kenya\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"182"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nina\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"172"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"Henkilo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Auli\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"186"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npoistettu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" huone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"poista_lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Otettiin huoneesta "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"poistettu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nhuone"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tiedot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Otettiin huoneesta Nina"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huoneessa 3 henkilöä, yhteispituus 551 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje"}]},{"type":"text","value":": "},{"type":"element","tagName":"a","properties":{"href":"/osa-4/3-listat#alkioiden-lisaaminen-ja-poistaminen"},"children":[{"type":"text","value":"osassa 4"}]},{"type":"text","value":" kerrottiin, miten alkion poistaminen listalta onnistuu."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Vihje2"}]},{"type":"text","value":": muista, että metodissa on mahdollista kutsua saman olion toista metodia. Eli seuraava koodi toimii:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Huone"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lyhin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# koodi"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"poista_lyhin"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n lyhin_henkilo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lyhin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# ..."}]}]}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Osaat tallentaa olioita toisten olioiden sisään
    • \n
    • Tiedät, mitä tarkoittaa None
    • \n

    Aikaisemmin nähtiin esimerkkejä luokista, joissa attribuutteina oli käytetty esimerkiksi listoja. Samalla tavalla myös omista luokista luotuja olioita voi käyttää toisten olioiden attribuutteina. Seuraavissa esimerkeissä on määritelty luokat Kurssi, Opiskelija ja Opintosuoritus. Opintosuorituksessa hyödynnetään kahta ensimmäistä luokkaa. Luokkien sisäinen toteutus on lyhyt, jotta esimerkki toisi esille oleellisen.

    Esimerkissä jokainen luokka on kirjoitettu omaan tiedostoonsa.

    Esitellään aluksi luokka Kurssi, joka on määritelty tiedostossa kurssi.py:

    class Kurssi:\n    def __init__(self, nimi: str, koodi: str, opintopisteet: int):\n        self.nimi = nimi\n        self.koodi = koodi\n        self.opintopisteet = opintopisteet

    Luokka Opiskelija mallintaa yhtä opiskelijaa. Luokka on määritelty tiedostossa opiskelija.py:

    class Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str, opintopisteet: int):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n        self.opintopisteet = opintopisteet

    Luokka Opintosuoritus hyödyntää luokkia Kurssi ja Opiskelija suorituksen tallentamiseen. Huomaa, että luokat tuodaan mukaan import-lauseella:

    from kurssi import Kurssi\nfrom opiskelija import Opiskelija\n\nclass Opintosuoritus:\n    def __init__(self, opiskelija: Opiskelija, kurssi: Kurssi, arvosana: int):\n        self.opiskelija = opiskelija\n        self.kurssi = kurssi\n        self.arvosana = arvosana

    Esimerkki opintosuoritusten lisäämisestä listaan:

    from opintosuoritus import Opintosuoritus\nfrom kurssi import Kurssi\nfrom opiskelija import Opiskelija\n\n# Luodaan lista opiskelijoista\nopiskelijat = []\nopiskelijat.append(Opiskelija(\"Olli\", \"1234\", 10))\nopiskelijat.append(Opiskelija(\"Pekka\", \"3210\", 23))\nopiskelijat.append(Opiskelija(\"Leena\", \"9999\", 43))\nopiskelijat.append(Opiskelija(\"Tiina\", \"3333\", 8))\n\n# Kurssi Ohjelmoinnin perusteet\nohpe = Kurssi(\"Ohjelmoinnin perusteet\", \"ohpe1\", 5)\n\n# Annetaan suoritukset kaikille opiskelijoille, kaikille arvosanaksi 3\nsuoritukset = []\nfor opiskelija in opiskelijat:\n    suoritukset.append(Opintosuoritus(opiskelija, ohpe, 3))\n\n# Tulostetaan kaikista suorituksista opiskelijan nimi\nfor suoritus in suoritukset:\n    print(suoritus.opiskelija.nimi)

    Olli\nPekka\nLeena\nTiina

    Tarkastellaan lähemmin riviä print(suoritus.opiskelija.nimi):

      \n
    • suoritus on luokan Opintosuoritus mukainen olio
    • \n
    • Niinpä muuttuja opiskelija viittaa suoritukseen tallennettuun Opiskelija-olioon
    • \n
    • Opiskelija-luokan muuttuja nimi sisältää opiskelijan nimen
    • \n

    Milloin import tarvitaan?

    Edellisessä esimerkissä käytetään muutamassa kohdassa import:ia:

    from opintosuoritus import Opintosuoritus\nfrom kurssi import Kurssi\nfrom opiskelija import Opiskelija\n\n# koodi

    Importia tarvitaan vain jos tiedostossa käytetään jossain muualla määriteltyä koodia. Näin on esimerkiksi kun käytetään jotain Pythonin valmista kalustoa, esim. matemaattisia operaatiota tarjoavaa moduulia math:

    import math\n\nx = 10\nprint(f\"luvun {x} {neliöjuuri math.sqrt(x)}\")

    Edellisessä tehtävässä oletettiin, että luokat on määritelty omissa tiedostoissaan. Esimerkki toteaa mm.\nEsitellään aluksi luokka Kurssi, joka on määritelty tiedostossa kurssi.py\nja importin tarve siis johtuu tästä.

    Jos kaikki koodi sijoitetaan samaan tiedostoon, kuten kaikissa kurssin ohjelmointitehtävissä ohjeistetaan, et tarvitse import:ia luomiesi luokkien käytöön.

    Jos siis päädyt kirjottamaan kurssilla seuraavanlaista koodia

    from henkilo import Henkilo\n\n# koodi

    ratkaisusi on todennäköisesti väärä! Lisää importin käytöstä osan 7 materiaalissa.

    Tehtäväpohjassa tulee kaksi luokkaa, Henkilo ja Lemmikki. Jokaisella henkilöllä on yksi lemmikki. Täydennä luokan Henkilo metodia __str__ siten, että metodi palauttaa merkkijonon, joka kertoo henkilön nimen lisäksi lemmikin nimen ja rodun alta löytyvät esimerkkitulosteen mukaisesti.

    Huomaa, että metodin palauttaman merkkijonon pitää olla täsmälleen samanlainen kuin esimerkkitulosteessa esitetty!

    hulda = Lemmikki(\"Hulda\", \"sekarotuinen koira\")\nleevi = Henkilo(\"Leevi\", hulda)\n\nprint(leevi)

    Leevi, kaverina Hulda, joka on sekarotuinen koira

    Huom: koska kaikki koodi tulee samaan tiedostoon, et tarvitse tehtävässä import:ia ollenkaan!

    Olion attribuuttina lista olioita

    Äskeisissä esimerkeissä oliolla oli attribuuttina yksittäinen toisen luokan olio, esim. henkilöllä attribuuttina lemmikki ja opintosuorituksella attribuuttina kurssi.

    Olio-ohjelmoinnissa törmätään kutenkin usein tilanteeseen, jossa oliolla on attribuuttina joukko toisen luokan olioita. Eräs tälläinen tilanne kuvaa joukkueen ja sen pelaajien välistä yhteyttä:

    class Pelaaja:\n    def __init__(self, nimi: str, maalit: int):\n        self.nimi = nimi\n        self.maalit = maalit\n\n    def __str__(self):\n        return f\"{self.nimi} (maaleja {self.maalit})\"\n\nclass Joukkue:\n    def __init__(self, nimi: str):\n        self.nimi = nimi\n        self.pelaajat = []\n\n    def lisaa_pelaaja(self, pelaaja: Pelaaja):\n        self.pelaajat.append(pelaaja)\n\n    def yhteenveto(self):\n        maalit = []\n        for pelaaja in self.pelaajat:\n            maalit.append(pelaaja.maalit)\n        print(\"Joukkue\", self.nimi)\n        print(\"Pelaajia\", len(self.pelaajat))\n        print(\"Pelaajien maalimäärät\", maalit)

    Käyttöesimerkki:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\nkupa.lisaa_pelaaja(Pelaaja(\"Emilia\", 22))\nkupa.lisaa_pelaaja(Pelaaja(\"Antti\", 1))\nkupa.yhteenveto()

    Joukkue Kumpulan pallo\nPelaajia 3\nPelaajien maalimäärät [10, 22, 1]

    Tässä tehtävässä harjoitellaan lahjojen pakkaamista. Tehdään luokat Lahja ja Pakkaus. Lahjalla on nimi ja paino, ja pakkaus sisältää lahjoja.

    Lahja-luokka

    Tee luokka Lahja, josta muodostetut oliot kuvaavat erilaisia lahjoja. Tallennettavat tiedot ovat tavaran nimi ja paino (kg). Luokan olioiden tulee toimia seuraavasti:

    kirja = Lahja(\"Aapiskukko\", 2)\n\nprint(\"Lahjan nimi:\", kirja.nimi)\nprint(\"Lahjan paino:\" ,kirja.paino)\nprint(\"Lahja:\", kirja)

    Ohjelman tulostuksen tulisi olla seuraava:

    Lahjan nimi: Aapiskukko\nLahjan paino: 2\nLahja: Aapiskukko (2 kg)

    Pakkaus-luokka

    Tee luokka Pakkaus, johon voi lisätä lahjoja ja joka pitää kirjaa pakkauksessa olevien lahjojen yhteispainosta. Luokassa tulee olla seuraavat metodit

      \n
    • lisaa_lahja(self, lahja: Lahja), joka lisää parametrina annettavan lahjan pakkaukseen. Metodi ei palauta mitään arvoa.
    • \n
    • yhteispaino(self), joka palauttaa pakkauksessa olevien lahjojen yhteispainon.
    • \n

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Lahja(\"Aapiskukko\", 2)\n\npakkaus = Pakkaus()\npakkaus.lisaa_lahja(kirja)\nprint(pakkaus.yhteispaino())\n\ncd_levy = Lahja(\"Pink Floyd: Dark side of the moon\", 1)\npakkaus.lisaa_lahja(cd_levy)\nprint(pakkaus.yhteispaino())

    2\n3

    None eli viite ei mihinkään

    Pythonissa muuttujat viittaavat aina johonkin olioon. On kuitenkin tilanteita, joissa haluaisimme määrittää arvon, joka ei viittaa mihinkään. Arvoa None käytetään esittämään tyhjää viittausta.

    Jos esimerkiksi luokkaan joukkue lisättäisiin metodi, joka etsii joukkueen pelaajan, saattaisi olla luontevaa esittää paluuarvolla None tilanne, jossa pelaajaa ei löydy:

    class Pelaaja:\n    def __init__(self, nimi: str, maalit: int):\n        self.nimi = nimi\n        self.maalit = maalit\n\n    def __str__(self):\n        return f\"{self.nimi} (maaleja {self.maalit})\"\n\nclass Joukkue:\n    def __init__(self, nimi: str):\n        self.nimi = nimi\n        self.pelaajat = []\n\n    def lisaa_pelaaja(self, pelaaja: Pelaaja):\n        self.pelaajat.append(pelaaja)\n\n    def etsi(self, nimi: str):\n        for pelaaja in self.pelaajat:\n            if pelaaja.nimi == nimi:\n                return pelaaja\n        return None

    Käyttöesimerkki:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\nkupa.lisaa_pelaaja(Pelaaja(\"Emilia\", 22))\nkupa.lisaa_pelaaja(Pelaaja(\"Antti\", 1))\n\npelaaja1 = kupa.etsi(\"Antti\")\nprint(pelaaja1)\npelaaja2 = kupa.etsi(\"Jukkis\")\nprint(pelaaja2)

    Antti (maaleja 1)\nNone

    None-arvojen kanssa pitää olla tarkkana. On hyvin tyypillistä, että ohjelmassa kutsutaan jotain metodia oliolle (tai pyydetään attribuutin arvoa oliolta), joka onkin None:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\n\npelaaja = kupa.etsi(\"Jukkis\")\nprint(f\"Jukkiksen maalimäärä {pelaaja.maalit}\")

    Jos näin tehdään, ohjelma päättyy virheeseen:

    Traceback (most recent call last):\nFile \"\", line 1, in \nAttributeError: 'NoneType' object has no attribute 'maalit'

    None-arvojen varalta onkin syytä tehdä tarkistus, ennen kuin riskialtista koodia kutsutaan:

    kupa = Joukkue(\"Kumpulan pallo\")\nkupa.lisaa_pelaaja(Pelaaja(\"Erkki\", 10))\n\npelaaja = kupa.etsi(\"Jukkis\")\nif pelaaja is not None:\n    print(f\"Jukkiksen maalimäärä {p.maalit}\")\nelse:\n    print(f\"Jukkis ei pelaa Kumpulan pallossa :(\")

    Jukkis ei pelaa Kumpulan pallossa :(

    Tehtäväpohjassa on valmiina luokka Henkilo. Henkilöllä on nimi ja pituus. Toteutetaan tässä tehtävässä luokka Huone, jonne voi lisätä henkilöitä ja josta voi hakea ja poistaa lyhimmän henkilön.

    Huone

    Luo luokka Huone, jonka sisällä on lista henkilöitä ja jolla on seuraavat metodit:

      \n
    • lisaa(henkilo: Henkilo) lisää huoneeseen parametrina annetun henkilön.
    • \n
    • on_tyhja() - palauttaa arvon True tai False, joka kertoo, onko huone tyhjä.
    • \n
    • tulosta_tiedot() tulostaa huoneessa olevat henkilöt
    • \n

    Seuraavassa käyttöesimerkki:

    huone = Huone()\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nhuone.lisaa(Henkilo(\"Lea\", 183))\nhuone.lisaa(Henkilo(\"Kenya\", 182))\nhuone.lisaa(Henkilo(\"Auli\", 186))\nhuone.lisaa(Henkilo(\"Nina\", 172))\nhuone.lisaa(Henkilo(\"Terhi\", 185))\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nhuone.tulosta_tiedot()

    Huone tyhjä? True\nHuone tyhjä? False\nHuoneessa 5 henkilöä, yhteispituus 908 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)\nNina (172 cm)\nTerhi (185 cm)

    Lyhin henkilö

    Lisää luokalle Huone metodi lyhin(), joka palauttaa huoneeseen lisätyistä henkilöistä lyhimmän. Mikäli huone on tyhjä, metodi palauttaa None-viitteen. Metodin ei tule poistaa henkilöä huoneesta.

    huone = Huone()\n\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nprint(\"Lyhin:\", huone.lyhin())\n\nhuone.lisaa(Henkilo(\"Lea\", 183))\nhuone.lisaa(Henkilo(\"Kenya\", 182))\nhuone.lisaa(Henkilo(\"Nina\", 172))\nhuone.lisaa(Henkilo(\"Auli\", 186))\n\nprint()\n\nprint(\"Huone tyhjä?\", huone.on_tyhja())\nprint(\"Lyhin:\", huone.lyhin())\n\nprint()\n\nhuone.tulosta_tiedot()

    Huone tyhjä? True\nLyhin: None

    Huone tyhjä? False\nLyhin: Nina

    Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)

    Huoneesta ottaminen

    Lisää luokalle Huone metodi poista_lyhin(), joka poistaa ja palauttaa huoneesta lyhimmän henkilön. Mikäli huone on tyhjä, metodi palauttaa None-viitteen.

    huone = Huone()\n\nhuone.lisaa(Henkilo(\"Lea\", 183))\nhuone.lisaa(Henkilo(\"Kenya\", 182))\nhuone.lisaa(Henkilo(\"Nina\", 172))\nhuone.lisaa(Henkilo(\"Auli\", 186))\nhuone.tulosta_tiedot()\n\nprint()\n\npoistettu = huone.poista_lyhin()\nprint(f\"Otettiin huoneesta {poistettu.nimi}\")\n\nprint()\n\nhuone.tulosta_tiedot()

    Huoneessa 4 henkilöä, yhteispituus 723 cm\nLea (183 cm)\nKenya (182 cm)\nNina (172 cm)\nAuli (186 cm)

    Otettiin huoneesta Nina

    Huoneessa 3 henkilöä, yhteispituus 551 cm\nLea (183 cm)\nKenya (182 cm)\nAuli (186 cm)

    Vihje: osassa 4 kerrottiin, miten alkion poistaminen listalta onnistuu.

    Vihje2: muista, että metodissa on mahdollista kutsua saman olion toista metodia. Eli seuraava koodi toimii:

    class Huone:\n    # ...\n    def lyhin(self):\n        # koodi\n\n    def poista_lyhin(self):\n        lyhin_henkilo = self.lyhin()\n        # ...
    ","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/2-oliot-attribuuttina.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/3-kapselointi/page-data.json b/page-data/osa-9/3-kapselointi/page-data.json index 4b26811db..aa4cbe457 100644 --- a/page-data/osa-9/3-kapselointi/page-data.json +++ b/page-data/osa-9/3-kapselointi/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-9/3-kapselointi", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan kapseloinnilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa piilotetun attribuutin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa attribuutille asetus- ja havainnointimetodit"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnissa asiakkaalla tarkoitetaan luokkaa tai siitä muodostettuja olioita käyttävää ohjelmaa. Luokka tarjoaa asiakkaalle "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palveluja"}]},{"type":"text","value":", joiden avulla asiakas voi käyttää olioita. Päämääränä on, että"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"asiakkaan kannalta luokan ja olioiden käyttö on mahdollisimman yksinkertaista ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"olion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sisäinen eheys"}]},{"type":"text","value":" säilyy joka tilanteessa."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäisellä eheydellä tarkoitetaan, että olion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tila"}]},{"type":"text","value":" (eli käytännössä olion attribuuttien arvot) pysyy koko ajan hyväksyttävänä. Virheellinen tila olisi esimerkiksi sellainen, jossa päivämäärää esittävälle oliolle kuukauden numero on 13 tai opiskelijaa esittävällä oliolla opintopistemäärä on negatiivinen luku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä luokkaa Opiskelija:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" opintopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-olio tarjoaa asiakkaalle metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"text","value":", jolla opintopisteitä voidaan lisätä. Metodi varmistaa, että lisättävä opintopisteiden määrä on positiivinen. Esimerkiksi seuraava koodi lisää kolme suoritusta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oskari "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Oskari Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteet:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opintopisteet: 20"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asiakas pystyy kuitenkin muuttamaan opintopistemäärää myös suoraan viittaamalla attribuuttiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opintopisteet"}]},{"type":"text","value":". Näin olio voi päätyä virheelliseen tilaan, jossa se ei ole enää sisäisesti eheä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oskari "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Oskari Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteet:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opintopisteet: -100"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kapselointi","style":"position:relative;"},"children":[{"type":"text","value":"Kapselointi"},{"type":"element","tagName":"a","properties":{"href":"#kapselointi","ariaLabel":"kapselointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka voi piilottaa attribuutit asiakkailta. Pythonissa tämä tapahtuu lisäämällä attribuuttimuuttujan nimen alkuun kaksi alaviivaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkikortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutti numero on piilotettu, nimi on näkyvissä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Piilotettu attribuutti ei näy asiakkaalle, vaan siihen viittaaminen aiheutta virheilmoituksen. Niinpä nimen voi tulostaa ja sitä voi muuttaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkikortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rutiköyhä\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reijo Rahakas\nReijo Rutiköyhä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mutta jos kortin numeroa yritetään tulostaa, seuraa virheilmoitus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkikortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AttributeError: 'Pankkikortti' object has no attribute '__numero'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietojen piilottamista asiakkaalta kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kapseloinniksi"}]},{"type":"text","value":". Nimensä mukaisesti attribuutti siis \"suljetaan kapseliin\" ja asiakkaalle tarjotaan sopiva rajapinta, jonka kautta tietoa voi käsitellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan pankkikorttiesimerkkiä niin, että kortilla on piilotettu attribuutti saldo ja tämän käsittelyyn tarkoitetut julkiset metodit, joiden avulla asiakas voi hallita saldoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkikortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" maara\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kayta_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" maara\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkikortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kayta_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä ei onnistu, koska saldo ei riitä"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kayta_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5000\n5100\n4600\n4600"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saldoa ei voi suoraan muuttaa, koska attribuutti on piilotettu, mutta sitä voi muuttaa metodeilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kayta_rahaa"}]},{"type":"text","value":" ja sen voi hakea metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"text","value":". Metodeihin voidaan sijoittaa sopivia tarkastuksia, joilla varmistetaan, että olion sisäinen eheys säilyy: esimerkiksi rahaa ei voi käyttää enempää kuin kortilla on saldoa jäljellä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Auto","tmcname":"osa09-09_auto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":", jossa on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kapseloituina attribuutteina"}]},{"type":"text","value":" tieto bensatankin sisällöstä (0-60 litraa) sekä ajetuista kilometreista. Auto kuluttaa litran bensaa kilometrillä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokalla on seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tankkaa()"}]},{"type":"text","value":", joka täyttää bensatankin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aja(km:int)"}]},{"type":"text","value":", joka ajaa parametrina olevan kilometrimäärän tai niin pitkälle kuin bensaa riittää"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka näyttää esimerkin mukaisen kuvauksen autosta"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"auto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tankkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tankkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tankkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Auto: ajettu 0 km, bensaa 0 litraa\nAuto: ajettu 0 km, bensaa 60 litraa\nAuto: ajettu 20 km, bensaa 40 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 60 litraa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":", että bensan ja ajettujen kilometrien määrä on kapseloitava, niihin ei tule pystyä vaikuttamaan muuten kuin auton metodeja kutsumalla."}]}]},{"type":"element","tagName":"h2","properties":{"id":"asetus--ja-havainnointimetodit","style":"position:relative;"},"children":[{"type":"text","value":"Asetus- ja havainnointimetodit"},{"type":"element","tagName":"a","properties":{"href":"#asetus--ja-havainnointimetodit","ariaLabel":"asetus ja havainnointimetodit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tarjoaa myös suoraviivaisemman syntaksin attribuuttien havainnoimiselle ja asettamiselle. Tarkastellaan ensin esimerkkinä yksinkertaista luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"text","value":", jossa ainoa attribuutti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"text","value":" on suojattu asiakkailta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaan voidaan lisätä havainnointi- ja asetusmetodit, joilla asiakas voi hallita rahamäärää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Havainnointimetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Asetusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rahaa"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokalle siis määritellään ensin havainnointimetodi, joka palauttaa rahamäärän, ja sitten asetusmetodi, joka asettaa rahamäärän ja varmistaa, että uusi rahamäärä ei ole negatiivinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsuminen tapahtuu esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lompsa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lompakko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n50\n50"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asiakkaan kannalta metodien kutsuminen muistuttaa attribuuttien kutsumista, koska kutsussa ei käytetä sulkuja vaan voi kirjoittaa esimerkiksi"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lompsa.rahaa = 50"}]},{"type":"text","value":". Tarkoituksena onkin piilottaa (eli kapseloida) sisäinen toteutus ja tarjota asiakkaalle vaivaton tapa muokata olion tietoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä esimerkissä on kuitenkin yksi pieni vika: asiakas ei saa mitään viestiä siitä, että negatiivisen rahasumman asettaminen ei toimi. Kun arvo on selvästi virheellinen, hyvä tapa viestiä tästä on heittää poikkeus. Tässä tapauksessa oikea poikkeus voisi olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":", joka kertoo että arvo on väärä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjattu versio luokasta ja testikoodi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Havainnointimetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Asetusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rahaa\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahasumma ei saa olla negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ValueError: Rahasumma ei saa olla negatiivinen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että havainnointimetodi eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"-dekoraattori pitää esitellä luokassa ennen asetusmetodia, muuten seuraa virhe. Tämä johtuu siitä, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"-dekoraattori määrittelee käytettävän \"asetusattribuutin\" nimen (edellisessä esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"text","value":"), ja asetusmetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":".setter"}]},{"type":"text","value":" liittää siihen uuden toiminnallisuuden."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Äänite","tmcname":"osa09-10_aanite"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Aanite"}]},{"type":"text","value":", joka mallintaa yksittäistä äänitettä. Luokalla on yksi piilotettu attribuutti, kokonaislukutyyppinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__pituus"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokalle"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, joka saa parametrikseen pituuden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"havainnointimetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":", joka palauttaa pituuden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"asetusmetodi, joka asettaa pituuden arvon"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa siis käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"the_wall "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Aanite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"43"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"the_wall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nthe_wall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"the_wall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"43\n44"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos pituudeksi yritetään asettaa nollaa pienempää arvoa joko konstruktorissa tai asetusmetodissa, tulee tuottaa virhe "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et muista miten poikkeus tuotetaan, kertaa\n"},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"osan 6"}]},{"type":"text","value":" materiaalista."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan vielä esimerkki luokasta, jolla on kaksi suojattua attribuuttia ja molemmille havainnointi- ja asetusmetodit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelinumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi ei voi olla tyhjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pelinumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelinumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pelinumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelinumero\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelinumeron täytyy olla positiviinen kokonaisluku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Palloilija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paula Palloilija\""}]},{"type":"text","value":"\npelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Palloilija\n10\nPaula Palloilija\n11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmantena esimerkkinä tarkastellaan luokkaa, joka mallintaa päiväkirjaa. Huomaa, että omistajalla on asetus- ja havainnointimetodit, mutta merkintöjen lisäys on toteutettu \"perinteisillä\" metodeilla. Tämä siksi, että asiakkaalle ei ole haluttu tarjota suoraan pääsyä tietorakenteeseen, johon merkinnät tallennetaan. Kapseloinnista on tässä sekin hyöty, että sisäistä toteutusta voidaan myöhemmin muuttaa (esim. vaihtamalla lista vaikka sanakirjaksi) ilman, että asiakkaan täytyy muuttaa omaa koodiaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Paivakirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"omistaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"omistaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omistaja ei voi olla tyhjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_merkinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yhteensä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkintää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paivakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänään söin puuroa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänään opettelin olio-ohjelmointia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänään menin ajoissa nukkumaan\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhteensä 3 merkintää"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tänään söin puuroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tänään opettelin olio-ohjelmointia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tänään menin ajoissa nukkumaan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Säähavaintoasema","tmcname":"osa09-11_havaintoasema"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Havaintoasema"}]},{"type":"text","value":", johon voidaan tallentaa säähavaintoja. Luokalla on seuraavat julkiset piirteet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, joka saa parametriksen aseman nimen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_havainto(havainto: str)"}]},{"type":"text","value":", joka lisää havainnon listan peräään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viimeisin_havainto()"}]},{"type":"text","value":", joka palauttaa viimeksi lisätyn havainnon. Jos havaintoja ei ole tehty, metodi palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tyhjän merkkijonon"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"havaintojen_maara()"}]},{"type":"text","value":", joka palauttaa havaintojen yhteismäärän"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa aseman nimen ja havaintojen yhteismäärän alla olevan esimerkin mukaisessa muodossa."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan kaikkien attribuuttien pitää olla asiakkaalta piilossa. Saat itse päättää luokan sisäisen toteutuksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asema "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Havaintoasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpula\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sadetta 10mm\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aurinkoista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viimeisin_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ukkosta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viimeisin_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"havaintojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aurinkoista\nUkkosta\n3\nKumpula, 3 havaintoa"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan kapseloinnilla
    • \n
    • Osaat muodostaa piilotetun attribuutin
    • \n
    • Osaat kirjoittaa attribuutille asetus- ja havainnointimetodit
    • \n

    Olio-ohjelmoinnissa asiakkaalla tarkoitetaan luokkaa tai siitä muodostettuja olioita käyttävää ohjelmaa. Luokka tarjoaa asiakkaalle palveluja, joiden avulla asiakas voi käyttää olioita. Päämääränä on, että

      \n
    1. asiakkaan kannalta luokan ja olioiden käyttö on mahdollisimman yksinkertaista ja
    2. \n
    3. olion sisäinen eheys säilyy joka tilanteessa.
    4. \n

    Sisäisellä eheydellä tarkoitetaan, että olion tila (eli käytännössä olion attribuuttien arvot) pysyy koko ajan hyväksyttävänä. Virheellinen tila olisi esimerkiksi sellainen, jossa päivämäärää esittävälle oliolle kuukauden numero on 13 tai opiskelijaa esittävällä oliolla opintopistemäärä on negatiivinen luku.

    Tarkastellaan esimerkkinä luokkaa Opiskelija:

    class Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n        self.opintopisteet = 0\n\n    def lisaa_suoritus(self, opintopisteet):\n        if opintopisteet > 0:\n            self.opintopisteet += opintopisteet

    Opiskelija-olio tarjoaa asiakkaalle metodin lisaa_suoritus, jolla opintopisteitä voidaan lisätä. Metodi varmistaa, että lisättävä opintopisteiden määrä on positiivinen. Esimerkiksi seuraava koodi lisää kolme suoritusta:

    oskari = Opiskelija(\"Oskari Opiskelija\", \"12345\")\noskari.lisaa_suoritus(5)\noskari.lisaa_suoritus(5)\noskari.lisaa_suoritus(10)\nprint(\"Opintopisteet:\", oskari.opintopisteet)

    Opintopisteet: 20

    Asiakas pystyy kuitenkin muuttamaan opintopistemäärää myös suoraan viittaamalla attribuuttiin opintopisteet. Näin olio voi päätyä virheelliseen tilaan, jossa se ei ole enää sisäisesti eheä:

    oskari = Opiskelija(\"Oskari Opiskelija\", \"12345\")\noskari.opintopisteet = -100\nprint(\"Opintopisteet:\", oskari.opintopisteet)

    Opintopisteet: -100

    Kapselointi

    Luokka voi piilottaa attribuutit asiakkailta. Pythonissa tämä tapahtuu lisäämällä attribuuttimuuttujan nimen alkuun kaksi alaviivaa __:

    class Pankkikortti:\n    # Attribuutti numero on piilotettu, nimi on näkyvissä\n    def __init__(self, numero: str, nimi: str):\n        self.__numero = numero\n        self.nimi = nimi

    Piilotettu attribuutti ei näy asiakkaalle, vaan siihen viittaaminen aiheutta virheilmoituksen. Niinpä nimen voi tulostaa ja sitä voi muuttaa:

    kortti = Pankkikortti(\"123456\",\"Reijo Rahakas\")\nprint(kortti.nimi)\nkortti.nimi = \"Reijo Rutiköyhä\"\nprint(kortti.nimi)

    Reijo Rahakas\nReijo Rutiköyhä

    Mutta jos kortin numeroa yritetään tulostaa, seuraa virheilmoitus:

    kortti = Pankkikortti(\"123456\",\"Reijo Rahakas\")\nprint(kortti.__numero)

    AttributeError: 'Pankkikortti' object has no attribute '__numero'

    Tietojen piilottamista asiakkaalta kutsutaan kapseloinniksi. Nimensä mukaisesti attribuutti siis \"suljetaan kapseliin\" ja asiakkaalle tarjotaan sopiva rajapinta, jonka kautta tietoa voi käsitellä.

    Laajennetaan pankkikorttiesimerkkiä niin, että kortilla on piilotettu attribuutti saldo ja tämän käsittelyyn tarkoitetut julkiset metodit, joiden avulla asiakas voi hallita saldoa:

    class Pankkikortti:\n    def __init__(self, numero: str, nimi: str, saldo: float):\n        self.__numero = numero\n        self.nimi = nimi\n        self.__saldo = saldo\n\n    def lisaa_rahaa(self, maara: float):\n        if maara > 0:\n            self.__saldo += maara\n\n    def kayta_rahaa(self, maara: float):\n        if maara > 0 and maara <= self.__saldo:\n            self.__saldo -= maara\n\n    def hae_saldo(self):\n        return self.__saldo
    kortti = Pankkikortti(\"123456\", \"Reijo Rahakas\", 5000)\nprint(kortti.hae_saldo())\nkortti.lisaa_rahaa(100)\nprint(kortti.hae_saldo())\nkortti.kayta_rahaa(500)\nprint(kortti.hae_saldo())\n# Tämä ei onnistu, koska saldo ei riitä\nkortti.kayta_rahaa(10000)\nprint(kortti.hae_saldo())

    5000\n5100\n4600\n4600

    Saldoa ei voi suoraan muuttaa, koska attribuutti on piilotettu, mutta sitä voi muuttaa metodeilla lisaa_rahaa ja kayta_rahaa ja sen voi hakea metodilla hae_saldo. Metodeihin voidaan sijoittaa sopivia tarkastuksia, joilla varmistetaan, että olion sisäinen eheys säilyy: esimerkiksi rahaa ei voi käyttää enempää kuin kortilla on saldoa jäljellä.

    Toteuta luokka Auto, jossa on kapseloituina attribuutteina tieto bensatankin sisällöstä (0-60 litraa) sekä ajetuista kilometreista. Auto kuluttaa litran bensaa kilometrillä.

    Luokalla on seuraavat metodit:

      \n
    • tankkaa(), joka täyttää bensatankin
    • \n
    • aja(km:int), joka ajaa parametrina olevan kilometrimäärän tai niin pitkälle kuin bensaa riittää
    • \n
    • __str__, joka näyttää esimerkin mukaisen kuvauksen autosta
    • \n

    Esimerkki luokan käyttämisestä:

    auto = Auto()\nprint(auto)\nauto.tankkaa()\nprint(auto)\nauto.aja(20)\nprint(auto)\nauto.aja(50)\nprint(auto)\nauto.aja(10)\nprint(auto)\nauto.tankkaa()\nauto.tankkaa()\nprint(auto)

    Auto: ajettu 0 km, bensaa 0 litraa\nAuto: ajettu 0 km, bensaa 60 litraa\nAuto: ajettu 20 km, bensaa 40 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 60 litraa

    Huomaa, että bensan ja ajettujen kilometrien määrä on kapseloitava, niihin ei tule pystyä vaikuttamaan muuten kuin auton metodeja kutsumalla.

    Asetus- ja havainnointimetodit

    Python tarjoaa myös suoraviivaisemman syntaksin attribuuttien havainnoimiselle ja asettamiselle. Tarkastellaan ensin esimerkkinä yksinkertaista luokkaa Lompakko, jossa ainoa attribuutti rahaa on suojattu asiakkailta:

    class Lompakko:\n    def __init__(self):\n        self.__rahaa = 0

    Luokkaan voidaan lisätä havainnointi- ja asetusmetodit, joilla asiakas voi hallita rahamäärää:

    class Lompakko:\n    def __init__(self):\n        self.__rahaa = 0\n\n    # Havainnointimetodi\n    @property\n    def rahaa(self):\n        return self.__rahaa\n\n    # Asetusmetodi\n    @rahaa.setter\n    def rahaa(self, rahaa):\n        if rahaa >= 0:\n            self.__rahaa = rahaa

    Luokalle siis määritellään ensin havainnointimetodi, joka palauttaa rahamäärän, ja sitten asetusmetodi, joka asettaa rahamäärän ja varmistaa, että uusi rahamäärä ei ole negatiivinen.

    Kutsuminen tapahtuu esimerkiksi näin:

    lompsa = Lompakko()\nprint(lompsa.rahaa)\n\nlompsa.rahaa = 50\nprint(lompsa.rahaa)\n\nlompsa.rahaa = -30\nprint(lompsa.rahaa)

    0\n50\n50

    Asiakkaan kannalta metodien kutsuminen muistuttaa attribuuttien kutsumista, koska kutsussa ei käytetä sulkuja vaan voi kirjoittaa esimerkiksilompsa.rahaa = 50. Tarkoituksena onkin piilottaa (eli kapseloida) sisäinen toteutus ja tarjota asiakkaalle vaivaton tapa muokata olion tietoja.

    Edellisessä esimerkissä on kuitenkin yksi pieni vika: asiakas ei saa mitään viestiä siitä, että negatiivisen rahasumman asettaminen ei toimi. Kun arvo on selvästi virheellinen, hyvä tapa viestiä tästä on heittää poikkeus. Tässä tapauksessa oikea poikkeus voisi olla ValueError, joka kertoo että arvo on väärä.

    Korjattu versio luokasta ja testikoodi:

    class Lompakko:\n    def __init__(self):\n        self.__rahaa = 0\n\n    # Havainnointimetodi\n    @property\n    def rahaa(self):\n        return self.__rahaa\n\n    # Asetusmetodi\n    @rahaa.setter\n    def rahaa(self, rahaa):\n        if rahaa >= 0:\n            self.__rahaa = rahaa\n        else:\n            raise ValueError(\"Rahasumma ei saa olla negatiivinen\")
    lompsa.rahaa = -30\nprint(lompsa.rahaa)

    ValueError: Rahasumma ei saa olla negatiivinen

    Huomaa, että havainnointimetodi eli @property-dekoraattori pitää esitellä luokassa ennen asetusmetodia, muuten seuraa virhe. Tämä johtuu siitä, että @property-dekoraattori määrittelee käytettävän \"asetusattribuutin\" nimen (edellisessä esimerkiksi rahaa), ja asetusmetodi .setter liittää siihen uuden toiminnallisuuden.

    Kirjoita luokka Aanite, joka mallintaa yksittäistä äänitettä. Luokalla on yksi piilotettu attribuutti, kokonaislukutyyppinen __pituus.

    Kirjoita luokalle

      \n
    • konstruktori, joka saa parametrikseen pituuden
    • \n
    • havainnointimetodi pituus, joka palauttaa pituuden
    • \n
    • asetusmetodi, joka asettaa pituuden arvon
    • \n

    Luokkaa siis käytetään seuraavasti:

    the_wall = Aanite(43)\nprint(the_wall.pituus)\nthe_wall.pituus = 44\nprint(the_wall.pituus)

    43\n44

    Jos pituudeksi yritetään asettaa nollaa pienempää arvoa joko konstruktorissa tai asetusmetodissa, tulee tuottaa virhe ValueError.

    Jos et muista miten poikkeus tuotetaan, kertaa\nosan 6 materiaalista.

    Katsotaan vielä esimerkki luokasta, jolla on kaksi suojattua attribuuttia ja molemmille havainnointi- ja asetusmetodit:

    class Pelaaja:\n    def __init__(self, nimi: str, pelinumero: int):\n        self.__nimi = nimi\n        self.__pelinumero = pelinumero\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    @nimi.setter\n    def nimi(self, nimi: str):\n        if nimi != \"\":\n            self.__nimi = nimi\n        else:\n            raise ValueError(\"Nimi ei voi olla tyhjä\")\n\n    @property\n    def pelinumero(self):\n        return self.__pelinumero\n\n    @pelinumero.setter\n    def pelinumero(self, pelinumero: int):\n        if pelinumero > 0:\n            self.__pelinumero = pelinumero\n        else:\n            raise ValueError(\"Pelinumeron täytyy olla positiviinen kokonaisluku\")
    pelaaja = Pelaaja(\"Pekka Palloilija\", 10)\nprint(pelaaja.nimi)\nprint(pelaaja.pelinumero)\n\npelaaja.nimi = \"Paula Palloilija\"\npelaaja.pelinumero = 11\nprint(pelaaja.nimi)\nprint(pelaaja.pelinumero)

    Pekka Palloilija\n10\nPaula Palloilija\n11

    Kolmantena esimerkkinä tarkastellaan luokkaa, joka mallintaa päiväkirjaa. Huomaa, että omistajalla on asetus- ja havainnointimetodit, mutta merkintöjen lisäys on toteutettu \"perinteisillä\" metodeilla. Tämä siksi, että asiakkaalle ei ole haluttu tarjota suoraan pääsyä tietorakenteeseen, johon merkinnät tallennetaan. Kapseloinnista on tässä sekin hyöty, että sisäistä toteutusta voidaan myöhemmin muuttaa (esim. vaihtamalla lista vaikka sanakirjaksi) ilman, että asiakkaan täytyy muuttaa omaa koodiaan.

    class Paivakirja:\n    def __init__(self, omistaja: str):\n        self.__omistaja = omistaja\n        self.__merkinnat = []\n\n    @property\n    def omistaja(self):\n        return self.__omistaja\n\n    @omistaja.setter\n    def omistaja(self, omistaja):\n        if omistaja != \"\":\n            self.__omistaja = omistaja\n        else:\n            raise ValueError(\"Omistaja ei voi olla tyhjä\")\n\n    def lisaa_merkinta(self, merkinta: str):\n        self.__merkinnat.append(merkinta)\n\n    def tulosta(self):\n        print(\"Yhteensä\", len(self.__merkinnat), \"merkintää\")\n        for merkinta in self.__merkinnat:\n            print(\"- \" + merkinta)
    paivakirja = Paivakirja(\"Pekka\")\npaivakirja.lisaa_merkinta(\"Tänään söin puuroa\")\npaivakirja.lisaa_merkinta(\"Tänään opettelin olio-ohjelmointia\")\npaivakirja.lisaa_merkinta(\"Tänään menin ajoissa nukkumaan\")\npaivakirja.tulosta()

    Yhteensä 3 merkintää

      \n
    • Tänään söin puuroa
    • \n
    • Tänään opettelin olio-ohjelmointia
    • \n
    • Tänään menin ajoissa nukkumaan
    • \n

    Kirjoita luokka Havaintoasema, johon voidaan tallentaa säähavaintoja. Luokalla on seuraavat julkiset piirteet:

      \n
    • konstruktori, joka saa parametriksen aseman nimen
    • \n
    • metodi lisaa_havainto(havainto: str), joka lisää havainnon listan peräään
    • \n
    • metodi viimeisin_havainto(), joka palauttaa viimeksi lisätyn havainnon. Jos havaintoja ei ole tehty, metodi palauttaa tyhjän merkkijonon.
    • \n
    • metodi havaintojen_maara(), joka palauttaa havaintojen yhteismäärän
    • \n
    • metodi __str__, joka palauttaa aseman nimen ja havaintojen yhteismäärän alla olevan esimerkin mukaisessa muodossa.
    • \n

    Luokan kaikkien attribuuttien pitää olla asiakkaalta piilossa. Saat itse päättää luokan sisäisen toteutuksen.

    Esimerkki luokan käytöstä:

    asema = Havaintoasema(\"Kumpula\")\nasema.lisaa_havainto(\"Sadetta 10mm\")\nasema.lisaa_havainto(\"Aurinkoista\")\nprint(asema.viimeisin_havainto())\n\nasema.lisaa_havainto(\"Ukkosta\")\nprint(asema.viimeisin_havainto())\n\nprint(asema.havaintojen_maara())\nprint(asema)

    Aurinkoista\nUkkosta\n3\nKumpula, 3 havaintoa

    ","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/3-kapselointi.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, mitä tarkoitetaan kapseloinnilla"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat muodostaa piilotetun attribuutin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa attribuutille asetus- ja havainnointimetodit"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnissa asiakkaalla tarkoitetaan luokkaa tai siitä muodostettuja olioita käyttävää ohjelmaa. Luokka tarjoaa asiakkaalle "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"palveluja"}]},{"type":"text","value":", joiden avulla asiakas voi käyttää olioita. Päämääränä on, että"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"asiakkaan kannalta luokan ja olioiden käyttö on mahdollisimman yksinkertaista ja"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"olion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"sisäinen eheys"}]},{"type":"text","value":" säilyy joka tilanteessa."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sisäisellä eheydellä tarkoitetaan, että olion "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tila"}]},{"type":"text","value":" (eli käytännössä olion attribuuttien arvot) pysyy koko ajan hyväksyttävänä. Virheellinen tila olisi esimerkiksi sellainen, jossa päivämäärää esittävälle oliolle kuukauden numero on 13 tai opiskelijaa esittävällä oliolla opintopistemäärä on negatiivinen luku."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä luokkaa Opiskelija:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" opintopisteet"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":"-olio tarjoaa asiakkaalle metodin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"text","value":", jolla opintopisteitä voidaan lisätä. Metodi varmistaa, että lisättävä opintopisteiden määrä on positiivinen. Esimerkiksi seuraava koodi lisää kolme suoritusta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oskari "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Oskari Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteet:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opintopisteet: 20"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asiakas pystyy kuitenkin muuttamaan opintopistemäärää myös suoraan viittaamalla attribuuttiin "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"opintopisteet"}]},{"type":"text","value":". Näin olio voi päätyä virheelliseen tilaan, jossa se ei ole enää sisäisesti eheä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"oskari "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Oskari Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\noskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteet:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" oskari"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opintopisteet: -100"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kapselointi","style":"position:relative;"},"children":[{"type":"text","value":"Kapselointi"},{"type":"element","tagName":"a","properties":{"href":"#kapselointi","ariaLabel":"kapselointi permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokka voi piilottaa attribuutit asiakkailta. Pythonissa tämä tapahtuu lisäämällä attribuuttimuuttujan nimen alkuun kaksi alaviivaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__"}]},{"type":"text","value":":"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkikortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutti numero on piilotettu, nimi on näkyvissä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Piilotettu attribuutti ei näy asiakkaalle, vaan siihen viittaaminen aiheutta virheilmoituksen. Niinpä nimen voi tulostaa ja sitä voi muuttaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkikortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rutiköyhä\""}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reijo Rahakas\nReijo Rutiköyhä"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Mutta jos kortin numeroa yritetään tulostaa, seuraa virheilmoitus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkikortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AttributeError: 'Pankkikortti' object has no attribute '__numero'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tietojen piilottamista asiakkaalta kutsutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kapseloinniksi"}]},{"type":"text","value":". Nimensä mukaisesti attribuutti siis \"suljetaan kapseliin\" ja asiakkaalle tarjotaan sopiva rajapinta, jonka kautta tietoa voi käsitellä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Laajennetaan pankkikorttiesimerkkiä niin, että kortilla on piilotettu attribuutti saldo ja tämän käsittelyyn tarkoitetut julkiset metodit, joiden avulla asiakas voi hallita saldoa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pankkikortti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__numero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" maara\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kayta_rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" maara "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-="}]},{"type":"text","value":" maara\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kortti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkikortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"123456\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Reijo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kayta_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"500"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä ei onnistu, koska saldo ei riitä"}]},{"type":"text","value":"\nkortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kayta_rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kortti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"hae_saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5000\n5100\n4600\n4600"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Saldoa ei voi suoraan muuttaa, koska attribuutti on piilotettu, mutta sitä voi muuttaa metodeilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_rahaa"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"kayta_rahaa"}]},{"type":"text","value":" ja sen voi hakea metodilla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"hae_saldo"}]},{"type":"text","value":". Metodeihin voidaan sijoittaa sopivia tarkastuksia, joilla varmistetaan, että olion sisäinen eheys säilyy: esimerkiksi rahaa ei voi käyttää enempää kuin kortilla on saldoa jäljellä."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Auto","tmcname":"osa09-09_auto"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Toteuta luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Auto"}]},{"type":"text","value":", jossa on "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"kapseloituina attribuutteina"}]},{"type":"text","value":" tieto bensatankin sisällöstä (0-60 litraa) sekä ajetuista kilometreista. Auto kuluttaa litran bensaa kilometrillä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokalla on seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tankkaa()"}]},{"type":"text","value":", joka täyttää bensatankin"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"aja(km:int)"}]},{"type":"text","value":", joka ajaa parametrina olevan kilometrimäärän tai niin pitkälle kuin bensaa riittää"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka näyttää esimerkin mukaisen kuvauksen autosta"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käyttämisestä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"auto "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tankkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"20"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"aja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tankkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nauto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tankkaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"auto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Auto: ajettu 0 km, bensaa 0 litraa\nAuto: ajettu 0 km, bensaa 60 litraa\nAuto: ajettu 20 km, bensaa 40 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 60 litraa"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Huomaa"}]},{"type":"text","value":", että bensan ja ajettujen kilometrien määrä on kapseloitava, niihin ei tule pystyä vaikuttamaan muuten kuin auton metodeja kutsumalla."}]}]},{"type":"element","tagName":"h2","properties":{"id":"asetus--ja-havainnointimetodit","style":"position:relative;"},"children":[{"type":"text","value":"Asetus- ja havainnointimetodit"},{"type":"element","tagName":"a","properties":{"href":"#asetus--ja-havainnointimetodit","ariaLabel":"asetus ja havainnointimetodit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Python tarjoaa myös suoraviivaisemman syntaksin attribuuttien havainnoimiselle ja asettamiselle. Tarkastellaan ensin esimerkkinä yksinkertaista luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"text","value":", jossa ainoa attribuutti "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"text","value":" on suojattu asiakkailta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaan voidaan lisätä havainnointi- ja asetusmetodit, joilla asiakas voi hallita rahamäärää:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Havainnointimetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Asetusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rahaa"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokalle siis määritellään ensin havainnointimetodi, joka palauttaa rahamäärän, ja sitten asetusmetodi, joka asettaa rahamäärän ja varmistaa, että uusi rahamäärä ei ole negatiivinen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kutsuminen tapahtuu esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lompsa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lompakko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"50"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0\n50\n50"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Asiakkaan kannalta metodien kutsuminen muistuttaa attribuuttien kutsumista, koska kutsussa ei käytetä sulkuja vaan voi kirjoittaa esimerkiksi"},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lompsa.rahaa = 50"}]},{"type":"text","value":". Tarkoituksena onkin piilottaa (eli kapseloida) sisäinen toteutus ja tarjota asiakkaalle vaivaton tapa muokata olion tietoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Edellisessä esimerkissä on kuitenkin yksi pieni vika: asiakas ei saa mitään viestiä siitä, että negatiivisen rahasumman asettaminen ei toimi. Kun arvo on selvästi virheellinen, hyvä tapa viestiä tästä on heittää poikkeus. Tässä tapauksessa oikea poikkeus voisi olla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":", joka kertoo että arvo on väärä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Korjattu versio luokasta ja testikoodi:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Lompakko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Havainnointimetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Asetusmetodi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rahaa\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rahasumma ei saa olla negatiivinen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"30"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lompsa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rahaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"ValueError: Rahasumma ei saa olla negatiivinen"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että havainnointimetodi eli "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"-dekoraattori pitää esitellä luokassa ennen asetusmetodia, muuten seuraa virhe. Tämä johtuu siitä, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"-dekoraattori määrittelee käytettävän \"asetusattribuutin\" nimen (edellisessä esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"rahaa"}]},{"type":"text","value":"), ja asetusmetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":".setter"}]},{"type":"text","value":" liittää siihen uuden toiminnallisuuden."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Äänite","tmcname":"osa09-10_aanite"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Aanite"}]},{"type":"text","value":", joka mallintaa yksittäistä äänitettä. Luokalla on yksi piilotettu attribuutti, kokonaislukutyyppinen "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__pituus"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokalle"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, joka saa parametrikseen pituuden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"havainnointimetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"pituus"}]},{"type":"text","value":", joka palauttaa pituuden"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"asetusmetodi, joka asettaa pituuden arvon"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkaa siis käytetään seuraavasti:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"the_wall "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Aanite"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"43"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"the_wall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nthe_wall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"44"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"the_wall"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"43\n44"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos pituudeksi yritetään asettaa nollaa pienempää arvoa joko konstruktorissa tai asetusmetodissa, tulee tuottaa virhe "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ValueError"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos et muista miten poikkeus tuotetaan, kertaa\n"},{"type":"element","tagName":"a","properties":{"href":"/osa-6/3-virheet#poikkeusten-tuottaminen"},"children":[{"type":"text","value":"osan 6"}]},{"type":"text","value":" materiaalista."}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Katsotaan vielä esimerkki luokasta, jolla on kaksi suojattua attribuuttia ja molemmille havainnointi- ja asetusmetodit:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Pelaaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelinumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi ei voi olla tyhjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pelinumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelinumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pelinumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" pelinumero\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pelinumeron täytyy olla positiviinen kokonaisluku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pelaaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka Palloilija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paula Palloilija\""}]},{"type":"text","value":"\npelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"11"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pelaaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pelinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pekka Palloilija\n10\nPaula Palloilija\n11"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kolmantena esimerkkinä tarkastellaan luokkaa, joka mallintaa päiväkirjaa. Huomaa, että omistajalla on asetus- ja havainnointimetodit, mutta merkintöjen lisäys on toteutettu \"perinteisillä\" metodeilla. Tämä siksi, että asiakkaalle ei ole haluttu tarjota suoraan pääsyä tietorakenteeseen, johon merkinnät tallennetaan. Kapseloinnista on tässä sekin hyöty, että sisäistä toteutusta voidaan myöhemmin muuttaa (esim. vaihtamalla lista vaikka sanakirjaksi) ilman, että asiakkaan täytyy muuttaa omaa koodiaan."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Paivakirja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"omistaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"omistaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Omistaja ei voi olla tyhjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_merkinta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"tulosta"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yhteensä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"merkintää\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkinta "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkinnat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"- \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paivakirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Paivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pekka\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänään söin puuroa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänään opettelin olio-ohjelmointia\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_merkinta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tänään menin ajoissa nukkumaan\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaivakirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yhteensä 3 merkintää"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tänään söin puuroa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tänään opettelin olio-ohjelmointia"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tänään menin ajoissa nukkumaan"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Säähavaintoasema","tmcname":"osa09-11_havaintoasema"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Havaintoasema"}]},{"type":"text","value":", johon voidaan tallentaa säähavaintoja. Luokalla on seuraavat julkiset piirteet:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, joka saa parametriksen aseman nimen"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_havainto(havainto: str)"}]},{"type":"text","value":", joka lisää havainnon listan peräään"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"viimeisin_havainto()"}]},{"type":"text","value":", joka palauttaa viimeksi lisätyn havainnon. Jos havaintoja ei ole tehty, metodi palauttaa "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"tyhjän merkkijonon"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"havaintojen_maara()"}]},{"type":"text","value":", joka palauttaa havaintojen yhteismäärän"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa aseman nimen ja havaintojen yhteismäärän alla olevan esimerkin mukaisessa muodossa."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan kaikkien attribuuttien pitää olla asiakkaalta piilossa. Saat itse päättää luokan sisäisen toteutuksen."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"asema "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Havaintoasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kumpula\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sadetta 10mm\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aurinkoista\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viimeisin_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nasema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ukkosta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"viimeisin_havainto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"havaintojen_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"asema"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Aurinkoista\nUkkosta\n3\nKumpula, 3 havaintoa"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, mitä tarkoitetaan kapseloinnilla
    • \n
    • Osaat muodostaa piilotetun attribuutin
    • \n
    • Osaat kirjoittaa attribuutille asetus- ja havainnointimetodit
    • \n

    Olio-ohjelmoinnissa asiakkaalla tarkoitetaan luokkaa tai siitä muodostettuja olioita käyttävää ohjelmaa. Luokka tarjoaa asiakkaalle palveluja, joiden avulla asiakas voi käyttää olioita. Päämääränä on, että

      \n
    1. asiakkaan kannalta luokan ja olioiden käyttö on mahdollisimman yksinkertaista ja
    2. \n
    3. olion sisäinen eheys säilyy joka tilanteessa.
    4. \n

    Sisäisellä eheydellä tarkoitetaan, että olion tila (eli käytännössä olion attribuuttien arvot) pysyy koko ajan hyväksyttävänä. Virheellinen tila olisi esimerkiksi sellainen, jossa päivämäärää esittävälle oliolle kuukauden numero on 13 tai opiskelijaa esittävällä oliolla opintopistemäärä on negatiivinen luku.

    Tarkastellaan esimerkkinä luokkaa Opiskelija:

    class Opiskelija:\n    def __init__(self, nimi: str, opiskelijanumero: str):\n        self.nimi = nimi\n        self.opiskelijanumero = opiskelijanumero\n        self.opintopisteet = 0\n\n    def lisaa_suoritus(self, opintopisteet):\n        if opintopisteet > 0:\n            self.opintopisteet += opintopisteet

    Opiskelija-olio tarjoaa asiakkaalle metodin lisaa_suoritus, jolla opintopisteitä voidaan lisätä. Metodi varmistaa, että lisättävä opintopisteiden määrä on positiivinen. Esimerkiksi seuraava koodi lisää kolme suoritusta:

    oskari = Opiskelija(\"Oskari Opiskelija\", \"12345\")\noskari.lisaa_suoritus(5)\noskari.lisaa_suoritus(5)\noskari.lisaa_suoritus(10)\nprint(\"Opintopisteet:\", oskari.opintopisteet)

    Opintopisteet: 20

    Asiakas pystyy kuitenkin muuttamaan opintopistemäärää myös suoraan viittaamalla attribuuttiin opintopisteet. Näin olio voi päätyä virheelliseen tilaan, jossa se ei ole enää sisäisesti eheä:

    oskari = Opiskelija(\"Oskari Opiskelija\", \"12345\")\noskari.opintopisteet = -100\nprint(\"Opintopisteet:\", oskari.opintopisteet)

    Opintopisteet: -100

    Kapselointi

    Luokka voi piilottaa attribuutit asiakkailta. Pythonissa tämä tapahtuu lisäämällä attribuuttimuuttujan nimen alkuun kaksi alaviivaa __:

    class Pankkikortti:\n    # Attribuutti numero on piilotettu, nimi on näkyvissä\n    def __init__(self, numero: str, nimi: str):\n        self.__numero = numero\n        self.nimi = nimi

    Piilotettu attribuutti ei näy asiakkaalle, vaan siihen viittaaminen aiheutta virheilmoituksen. Niinpä nimen voi tulostaa ja sitä voi muuttaa:

    kortti = Pankkikortti(\"123456\",\"Reijo Rahakas\")\nprint(kortti.nimi)\nkortti.nimi = \"Reijo Rutiköyhä\"\nprint(kortti.nimi)

    Reijo Rahakas\nReijo Rutiköyhä

    Mutta jos kortin numeroa yritetään tulostaa, seuraa virheilmoitus:

    kortti = Pankkikortti(\"123456\",\"Reijo Rahakas\")\nprint(kortti.__numero)

    AttributeError: 'Pankkikortti' object has no attribute '__numero'

    Tietojen piilottamista asiakkaalta kutsutaan kapseloinniksi. Nimensä mukaisesti attribuutti siis \"suljetaan kapseliin\" ja asiakkaalle tarjotaan sopiva rajapinta, jonka kautta tietoa voi käsitellä.

    Laajennetaan pankkikorttiesimerkkiä niin, että kortilla on piilotettu attribuutti saldo ja tämän käsittelyyn tarkoitetut julkiset metodit, joiden avulla asiakas voi hallita saldoa:

    class Pankkikortti:\n    def __init__(self, numero: str, nimi: str, saldo: float):\n        self.__numero = numero\n        self.nimi = nimi\n        self.__saldo = saldo\n\n    def lisaa_rahaa(self, maara: float):\n        if maara > 0:\n            self.__saldo += maara\n\n    def kayta_rahaa(self, maara: float):\n        if maara > 0 and maara <= self.__saldo:\n            self.__saldo -= maara\n\n    def hae_saldo(self):\n        return self.__saldo
    kortti = Pankkikortti(\"123456\", \"Reijo Rahakas\", 5000)\nprint(kortti.hae_saldo())\nkortti.lisaa_rahaa(100)\nprint(kortti.hae_saldo())\nkortti.kayta_rahaa(500)\nprint(kortti.hae_saldo())\n# Tämä ei onnistu, koska saldo ei riitä\nkortti.kayta_rahaa(10000)\nprint(kortti.hae_saldo())

    5000\n5100\n4600\n4600

    Saldoa ei voi suoraan muuttaa, koska attribuutti on piilotettu, mutta sitä voi muuttaa metodeilla lisaa_rahaa ja kayta_rahaa ja sen voi hakea metodilla hae_saldo. Metodeihin voidaan sijoittaa sopivia tarkastuksia, joilla varmistetaan, että olion sisäinen eheys säilyy: esimerkiksi rahaa ei voi käyttää enempää kuin kortilla on saldoa jäljellä.

    Toteuta luokka Auto, jossa on kapseloituina attribuutteina tieto bensatankin sisällöstä (0-60 litraa) sekä ajetuista kilometreista. Auto kuluttaa litran bensaa kilometrillä.

    Luokalla on seuraavat metodit:

      \n
    • tankkaa(), joka täyttää bensatankin
    • \n
    • aja(km:int), joka ajaa parametrina olevan kilometrimäärän tai niin pitkälle kuin bensaa riittää
    • \n
    • __str__, joka näyttää esimerkin mukaisen kuvauksen autosta
    • \n

    Esimerkki luokan käyttämisestä:

    auto = Auto()\nprint(auto)\nauto.tankkaa()\nprint(auto)\nauto.aja(20)\nprint(auto)\nauto.aja(50)\nprint(auto)\nauto.aja(10)\nprint(auto)\nauto.tankkaa()\nauto.tankkaa()\nprint(auto)

    Auto: ajettu 0 km, bensaa 0 litraa\nAuto: ajettu 0 km, bensaa 60 litraa\nAuto: ajettu 20 km, bensaa 40 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 0 litraa\nAuto: ajettu 60 km, bensaa 60 litraa

    Huomaa, että bensan ja ajettujen kilometrien määrä on kapseloitava, niihin ei tule pystyä vaikuttamaan muuten kuin auton metodeja kutsumalla.

    Asetus- ja havainnointimetodit

    Python tarjoaa myös suoraviivaisemman syntaksin attribuuttien havainnoimiselle ja asettamiselle. Tarkastellaan ensin esimerkkinä yksinkertaista luokkaa Lompakko, jossa ainoa attribuutti rahaa on suojattu asiakkailta:

    class Lompakko:\n    def __init__(self):\n        self.__rahaa = 0

    Luokkaan voidaan lisätä havainnointi- ja asetusmetodit, joilla asiakas voi hallita rahamäärää:

    class Lompakko:\n    def __init__(self):\n        self.__rahaa = 0\n\n    # Havainnointimetodi\n    @property\n    def rahaa(self):\n        return self.__rahaa\n\n    # Asetusmetodi\n    @rahaa.setter\n    def rahaa(self, rahaa):\n        if rahaa >= 0:\n            self.__rahaa = rahaa

    Luokalle siis määritellään ensin havainnointimetodi, joka palauttaa rahamäärän, ja sitten asetusmetodi, joka asettaa rahamäärän ja varmistaa, että uusi rahamäärä ei ole negatiivinen.

    Kutsuminen tapahtuu esimerkiksi näin:

    lompsa = Lompakko()\nprint(lompsa.rahaa)\n\nlompsa.rahaa = 50\nprint(lompsa.rahaa)\n\nlompsa.rahaa = -30\nprint(lompsa.rahaa)

    0\n50\n50

    Asiakkaan kannalta metodien kutsuminen muistuttaa attribuuttien kutsumista, koska kutsussa ei käytetä sulkuja vaan voi kirjoittaa esimerkiksilompsa.rahaa = 50. Tarkoituksena onkin piilottaa (eli kapseloida) sisäinen toteutus ja tarjota asiakkaalle vaivaton tapa muokata olion tietoja.

    Edellisessä esimerkissä on kuitenkin yksi pieni vika: asiakas ei saa mitään viestiä siitä, että negatiivisen rahasumman asettaminen ei toimi. Kun arvo on selvästi virheellinen, hyvä tapa viestiä tästä on heittää poikkeus. Tässä tapauksessa oikea poikkeus voisi olla ValueError, joka kertoo että arvo on väärä.

    Korjattu versio luokasta ja testikoodi:

    class Lompakko:\n    def __init__(self):\n        self.__rahaa = 0\n\n    # Havainnointimetodi\n    @property\n    def rahaa(self):\n        return self.__rahaa\n\n    # Asetusmetodi\n    @rahaa.setter\n    def rahaa(self, rahaa):\n        if rahaa >= 0:\n            self.__rahaa = rahaa\n        else:\n            raise ValueError(\"Rahasumma ei saa olla negatiivinen\")
    lompsa.rahaa = -30\nprint(lompsa.rahaa)

    ValueError: Rahasumma ei saa olla negatiivinen

    Huomaa, että havainnointimetodi eli @property-dekoraattori pitää esitellä luokassa ennen asetusmetodia, muuten seuraa virhe. Tämä johtuu siitä, että @property-dekoraattori määrittelee käytettävän \"asetusattribuutin\" nimen (edellisessä esimerkiksi rahaa), ja asetusmetodi .setter liittää siihen uuden toiminnallisuuden.

    Kirjoita luokka Aanite, joka mallintaa yksittäistä äänitettä. Luokalla on yksi piilotettu attribuutti, kokonaislukutyyppinen __pituus.

    Kirjoita luokalle

      \n
    • konstruktori, joka saa parametrikseen pituuden
    • \n
    • havainnointimetodi pituus, joka palauttaa pituuden
    • \n
    • asetusmetodi, joka asettaa pituuden arvon
    • \n

    Luokkaa siis käytetään seuraavasti:

    the_wall = Aanite(43)\nprint(the_wall.pituus)\nthe_wall.pituus = 44\nprint(the_wall.pituus)

    43\n44

    Jos pituudeksi yritetään asettaa nollaa pienempää arvoa joko konstruktorissa tai asetusmetodissa, tulee tuottaa virhe ValueError.

    Jos et muista miten poikkeus tuotetaan, kertaa\nosan 6 materiaalista.

    Katsotaan vielä esimerkki luokasta, jolla on kaksi suojattua attribuuttia ja molemmille havainnointi- ja asetusmetodit:

    class Pelaaja:\n    def __init__(self, nimi: str, pelinumero: int):\n        self.__nimi = nimi\n        self.__pelinumero = pelinumero\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    @nimi.setter\n    def nimi(self, nimi: str):\n        if nimi != \"\":\n            self.__nimi = nimi\n        else:\n            raise ValueError(\"Nimi ei voi olla tyhjä\")\n\n    @property\n    def pelinumero(self):\n        return self.__pelinumero\n\n    @pelinumero.setter\n    def pelinumero(self, pelinumero: int):\n        if pelinumero > 0:\n            self.__pelinumero = pelinumero\n        else:\n            raise ValueError(\"Pelinumeron täytyy olla positiviinen kokonaisluku\")
    pelaaja = Pelaaja(\"Pekka Palloilija\", 10)\nprint(pelaaja.nimi)\nprint(pelaaja.pelinumero)\n\npelaaja.nimi = \"Paula Palloilija\"\npelaaja.pelinumero = 11\nprint(pelaaja.nimi)\nprint(pelaaja.pelinumero)

    Pekka Palloilija\n10\nPaula Palloilija\n11

    Kolmantena esimerkkinä tarkastellaan luokkaa, joka mallintaa päiväkirjaa. Huomaa, että omistajalla on asetus- ja havainnointimetodit, mutta merkintöjen lisäys on toteutettu \"perinteisillä\" metodeilla. Tämä siksi, että asiakkaalle ei ole haluttu tarjota suoraan pääsyä tietorakenteeseen, johon merkinnät tallennetaan. Kapseloinnista on tässä sekin hyöty, että sisäistä toteutusta voidaan myöhemmin muuttaa (esim. vaihtamalla lista vaikka sanakirjaksi) ilman, että asiakkaan täytyy muuttaa omaa koodiaan.

    class Paivakirja:\n    def __init__(self, omistaja: str):\n        self.__omistaja = omistaja\n        self.__merkinnat = []\n\n    @property\n    def omistaja(self):\n        return self.__omistaja\n\n    @omistaja.setter\n    def omistaja(self, omistaja):\n        if omistaja != \"\":\n            self.__omistaja = omistaja\n        else:\n            raise ValueError(\"Omistaja ei voi olla tyhjä\")\n\n    def lisaa_merkinta(self, merkinta: str):\n        self.__merkinnat.append(merkinta)\n\n    def tulosta(self):\n        print(\"Yhteensä\", len(self.__merkinnat), \"merkintää\")\n        for merkinta in self.__merkinnat:\n            print(\"- \" + merkinta)
    paivakirja = Paivakirja(\"Pekka\")\npaivakirja.lisaa_merkinta(\"Tänään söin puuroa\")\npaivakirja.lisaa_merkinta(\"Tänään opettelin olio-ohjelmointia\")\npaivakirja.lisaa_merkinta(\"Tänään menin ajoissa nukkumaan\")\npaivakirja.tulosta()

    Yhteensä 3 merkintää

      \n
    • Tänään söin puuroa
    • \n
    • Tänään opettelin olio-ohjelmointia
    • \n
    • Tänään menin ajoissa nukkumaan
    • \n

    Kirjoita luokka Havaintoasema, johon voidaan tallentaa säähavaintoja. Luokalla on seuraavat julkiset piirteet:

      \n
    • konstruktori, joka saa parametriksen aseman nimen
    • \n
    • metodi lisaa_havainto(havainto: str), joka lisää havainnon listan peräään
    • \n
    • metodi viimeisin_havainto(), joka palauttaa viimeksi lisätyn havainnon. Jos havaintoja ei ole tehty, metodi palauttaa tyhjän merkkijonon.
    • \n
    • metodi havaintojen_maara(), joka palauttaa havaintojen yhteismäärän
    • \n
    • metodi __str__, joka palauttaa aseman nimen ja havaintojen yhteismäärän alla olevan esimerkin mukaisessa muodossa.
    • \n

    Luokan kaikkien attribuuttien pitää olla asiakkaalta piilossa. Saat itse päättää luokan sisäisen toteutuksen.

    Esimerkki luokan käytöstä:

    asema = Havaintoasema(\"Kumpula\")\nasema.lisaa_havainto(\"Sadetta 10mm\")\nasema.lisaa_havainto(\"Aurinkoista\")\nprint(asema.viimeisin_havainto())\n\nasema.lisaa_havainto(\"Ukkosta\")\nprint(asema.viimeisin_havainto())\n\nprint(asema.havaintojen_maara())\nprint(asema)

    Aurinkoista\nUkkosta\n3\nKumpula, 3 havaintoa

    ","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/3-kapselointi.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/4-metodien-nakyvyys/page-data.json b/page-data/osa-9/4-metodien-nakyvyys/page-data.json index c261134c4..a89391b70 100644 --- a/page-data/osa-9/4-metodien-nakyvyys/page-data.json +++ b/page-data/osa-9/4-metodien-nakyvyys/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-9/4-metodien-nakyvyys", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten metodin näkyvyys määritellään Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa piilotettuja metodeita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa olevien metodien näkyvyyteen voidaan vaikuttaa samalla tavalla kuin attribuuttien näkyvyyteen. Jos metodin nimi alkaa kahdella alaviivalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__"}]},{"type":"text","value":", metodi ei ole näkyvissä asiakkaille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytännössä mekanismia käytetään hiukan eri tavalla: piilotettujen attribuuttien käyttöä varten kirjoitetaan usein julkiset havainnointi- ja asetusmetodit. Piilotettu metodi on kuitenkin yleensä tarkoitettu vain luokan sisäiseen käyttöön, apumetodiksi asiakkaalta piilotettujen operaatioiden toteuttamiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Piilotettua metodia voidaan kutsua luokan sisällä normaalisti, mutta kutsuttaessa pitää muistaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-aluke. Tarkastellaan esimerkkinä sähköpostin vastaanottajaa mallintavaa luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Vastaanottaja"}]},{"type":"text","value":", jossa yksityistä apumetodia käytetään tarkistamaan sähköpostiosoitteen oikeellisuus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Vastaanottaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköposti ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__tarkasta_sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"@\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos asiakas yrittää kutsua metodia, seuraa virhe:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pertti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Vastaanottaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pertti Keinonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pertti@example.com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npertti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"jokumuu@example.com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AttributeError: 'Vastaanottaja' object has no attribute '__tarkasta_sposti'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samaa apumetodia kannattaa kutsua myös sähköpostia asettaessa - lisätään siis luokkaan esimerkin vuoksi havainnointi- ja asetusmetodit sähköpostille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Vastaanottaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköposti ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__tarkasta_sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"@\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköposti ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan sitten toista esimerkkiä. Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Korttipakka"}]},{"type":"text","value":" mallintaa nimensä mukaisesti 52 kortin korttipakkaa. Apumetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__alusta_pakka"}]},{"type":"text","value":" luo uuden sekoitetun pakan oliota luotaessa. Vastaava alustus voitaisiin toki tehdä myös metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":", mutta erillisen apumetodin käyttö tekee koodista siistimpää ja mahdollistaa alustusmetodin kutsumisen myös muualta luokasta tarvittaessa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" shuffle\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Korttipakka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__alusta_pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__alusta_pakka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Laitetaan kaikki kortit pakkaan"}]},{"type":"text","value":"\n maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pata\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hertta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"risti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ruutu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" maat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Sekoitetaan pakka"}]},{"type":"text","value":"\n shuffle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"jaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" korttien_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kasi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Siirretään pakasta ylimmät kortit käteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"korttien_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kasi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kasi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi testaa luokkaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"korttipakka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korttipakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkasi1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korttipakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"jaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kasi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkasi2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korttipakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"jaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kasi2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[('pata', 7), ('pata', 11), ('hertta', 7), ('ruutu', 3), ('pata', 4)]\n[('risti', 8), ('pata', 12), ('ruutu', 13), ('risti', 11), ('pata', 10)]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Piilotettuja metodeja tarvitaan yleensä harvemmin kuin piilotettuja attribuutteja. Metodi kannattaa piilottaa, jos asiakas ei tarvitse siihen suoraa pääsyä, ja varsinkin silloin, jos on todennäköistä, että asiakas voisi sotkea olion sisäisen eheyden metodia kutsumalla."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Palvelumaksu","tmcname":"osa09-12_palvelumaksu"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":", joka mallintaa pankkitiliä. Luokalla tulee olla"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, joka saa parametrikseen tilinomistajan (str), tilinumeron (str) ja saldon (float)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"talleta(summa: float)"}]},{"type":"text","value":", jolla tilille voidaan tallettaa rahaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nosta(summa: float)"}]},{"type":"text","value":", joka nostaa tililtä rahasumman"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"havainnointimetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":", joka palauttaa tilin saldon"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokalla on yksityinen metodi"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__palvelumaksu()"}]},{"type":"text","value":", joka vähentää tililtä yhden prosentin rahaa. Luokassa kutsutaan tätä metodia aina, kun asiakas kutsuu jompaa kumpaa metodeista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"talleta"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nosta"}]},{"type":"text","value":". Prosentti vähennetään aina varsinaisen operaation jälkeen (eli. esimerkiksi vasta sitten, kun rahat on talletettu)."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikki luokan attribuutit ovat yksityisiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Raimo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-6789\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"talleta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"891.0\n981.09"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten metodin näkyvyys määritellään Pythonissa
    • \n
    • Osaat kirjoittaa piilotettuja metodeita
    • \n

    Luokassa olevien metodien näkyvyyteen voidaan vaikuttaa samalla tavalla kuin attribuuttien näkyvyyteen. Jos metodin nimi alkaa kahdella alaviivalla __, metodi ei ole näkyvissä asiakkaille.

    Käytännössä mekanismia käytetään hiukan eri tavalla: piilotettujen attribuuttien käyttöä varten kirjoitetaan usein julkiset havainnointi- ja asetusmetodit. Piilotettu metodi on kuitenkin yleensä tarkoitettu vain luokan sisäiseen käyttöön, apumetodiksi asiakkaalta piilotettujen operaatioiden toteuttamiseksi.

    Piilotettua metodia voidaan kutsua luokan sisällä normaalisti, mutta kutsuttaessa pitää muistaa self-aluke. Tarkastellaan esimerkkinä sähköpostin vastaanottajaa mallintavaa luokkaa Vastaanottaja, jossa yksityistä apumetodia käytetään tarkistamaan sähköpostiosoitteen oikeellisuus:

    class Vastaanottaja:\n    def __init__(self, nimi: str, sposti: str):\n        self.__nimi = nimi\n        if self.__tarkasta_sposti(sposti):\n            self.__sposti = sposti\n        else:\n            raise ValueError(\"Sähköposti ei kelpaa\")\n\n    def __tarkasta_sposti(self, sposti: str):\n        # Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki\n        return len(sposti) > 5 and \".\" in sposti and \"@\" in sposti

    Jos asiakas yrittää kutsua metodia, seuraa virhe:

    pertti = Vastaanottaja(\"Pertti Keinonen\", \"pertti@example.com\")\npertti.__tarkasta_sposti(\"jokumuu@example.com\")

    AttributeError: 'Vastaanottaja' object has no attribute '__tarkasta_sposti'

    Samaa apumetodia kannattaa kutsua myös sähköpostia asettaessa - lisätään siis luokkaan esimerkin vuoksi havainnointi- ja asetusmetodit sähköpostille:

    class Vastaanottaja:\n    def __init__(self, nimi: str, sposti: str):\n        self.__nimi = nimi\n        if self.__tarkasta_sposti(sposti):\n            self.__sposti = sposti\n        else:\n            raise ValueError(\"Sähköposti ei kelpaa\")\n\n    def __tarkasta_sposti(self, sposti: str):\n        # Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki\n        return len(sposti) > 5 and \".\" in sposti and \"@\" in sposti\n\n    @property\n    def sposti(self):\n        return self.__sposti\n\n    @sposti.setter\n    def sposti(self, sposti: str):\n        if self.__tarkasta_sposti(sposti):\n            self.__sposti = sposti\n        else:\n            raise ValueError(\"Sähköposti ei kelpaa\")

    Tarkastellaan sitten toista esimerkkiä. Luokka Korttipakka mallintaa nimensä mukaisesti 52 kortin korttipakkaa. Apumetodi __alusta_pakka luo uuden sekoitetun pakan oliota luotaessa. Vastaava alustus voitaisiin toki tehdä myös metodissa __init__, mutta erillisen apumetodin käyttö tekee koodista siistimpää ja mahdollistaa alustusmetodin kutsumisen myös muualta luokasta tarvittaessa.

    from random import shuffle\n\nclass Korttipakka:\n    def __init__(self):\n        self.__alusta_pakka()\n\n    def __alusta_pakka(self):\n        self.__pakka = []\n        # Laitetaan kaikki kortit pakkaan\n        maat = [\"pata\", \"hertta\", \"risti\", \"ruutu\"]\n        for maa in maat:\n            for numero in range(1, 14):\n                self.__pakka.append((maa, numero))\n        # Sekoitetaan pakka\n        shuffle(self.__pakka)\n\n    def jaa(self, korttien_maara: int):\n        kasi = []\n        # Siirretään pakasta ylimmät kortit käteen\n        for i in range(korttien_maara):\n            kasi.append(self.__pakka.pop())\n        return kasi

    Seuraava koodi testaa luokkaa:

    korttipakka = Korttipakka()\nkasi1 = korttipakka.jaa(5)\nprint(kasi1)\nkasi2 = korttipakka.jaa(5)\nprint(kasi2)

    Ohjelma tulostaa esimerkiksi

    [('pata', 7), ('pata', 11), ('hertta', 7), ('ruutu', 3), ('pata', 4)]\n[('risti', 8), ('pata', 12), ('ruutu', 13), ('risti', 11), ('pata', 10)]

    Piilotettuja metodeja tarvitaan yleensä harvemmin kuin piilotettuja attribuutteja. Metodi kannattaa piilottaa, jos asiakas ei tarvitse siihen suoraa pääsyä, ja varsinkin silloin, jos on todennäköistä, että asiakas voisi sotkea olion sisäisen eheyden metodia kutsumalla.

    Kirjoita luokka Pankkitili, joka mallintaa pankkitiliä. Luokalla tulee olla

      \n
    • konstruktori, joka saa parametrikseen tilinomistajan (str), tilinumeron (str) ja saldon (float)
    • \n
    • metodi talleta(summa: float), jolla tilille voidaan tallettaa rahaa
    • \n
    • metodi nosta(summa: float), joka nostaa tililtä rahasumman
    • \n
    • havainnointimetodi saldo, joka palauttaa tilin saldon
    • \n

    Lisäksi luokalla on yksityinen metodi

      \n
    • __palvelumaksu(), joka vähentää tililtä yhden prosentin rahaa. Luokassa kutsutaan tätä metodia aina, kun asiakas kutsuu jompaa kumpaa metodeista talleta tai nosta. Prosentti vähennetään aina varsinaisen operaation jälkeen (eli. esimerkiksi vasta sitten, kun rahat on talletettu).
    • \n

    Kaikki luokan attribuutit ovat yksityisiä.

    Esimerkki luokan käytöstä:

    tili = Pankkitili(\"Raimo Rahakas\", \"12345-6789\", 1000)\ntili.nosta(100)\nprint(tili.saldo)\ntili.talleta(100)\nprint(tili.saldo)\n

    891.0\n981.09

    ","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/4-metodien-nakyvyys.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät, miten metodin näkyvyys määritellään Pythonissa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat kirjoittaa piilotettuja metodeita"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokassa olevien metodien näkyvyyteen voidaan vaikuttaa samalla tavalla kuin attribuuttien näkyvyyteen. Jos metodin nimi alkaa kahdella alaviivalla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__"}]},{"type":"text","value":", metodi ei ole näkyvissä asiakkaille."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Käytännössä mekanismia käytetään hiukan eri tavalla: piilotettujen attribuuttien käyttöä varten kirjoitetaan usein julkiset havainnointi- ja asetusmetodit. Piilotettu metodi on kuitenkin yleensä tarkoitettu vain luokan sisäiseen käyttöön, apumetodiksi asiakkaalta piilotettujen operaatioiden toteuttamiseksi."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Piilotettua metodia voidaan kutsua luokan sisällä normaalisti, mutta kutsuttaessa pitää muistaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-aluke. Tarkastellaan esimerkkinä sähköpostin vastaanottajaa mallintavaa luokkaa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Vastaanottaja"}]},{"type":"text","value":", jossa yksityistä apumetodia käytetään tarkistamaan sähköpostiosoitteen oikeellisuus:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Vastaanottaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköposti ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__tarkasta_sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"@\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos asiakas yrittää kutsua metodia, seuraa virhe:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"pertti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Vastaanottaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pertti Keinonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pertti@example.com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npertti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"jokumuu@example.com\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AttributeError: 'Vastaanottaja' object has no attribute '__tarkasta_sposti'"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Samaa apumetodia kannattaa kutsua myös sähköpostia asettaessa - lisätään siis luokkaan esimerkin vuoksi havainnointi- ja asetusmetodit sähköpostille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Vastaanottaja"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköposti ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__tarkasta_sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\".\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"and"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"@\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" sposti\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"sposti"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tarkasta_sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"sposti"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__sposti "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" sposti\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Sähköposti ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan sitten toista esimerkkiä. Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Korttipakka"}]},{"type":"text","value":" mallintaa nimensä mukaisesti 52 kortin korttipakkaa. Apumetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__alusta_pakka"}]},{"type":"text","value":" luo uuden sekoitetun pakan oliota luotaessa. Vastaava alustus voitaisiin toki tehdä myös metodissa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__init__"}]},{"type":"text","value":", mutta erillisen apumetodin käyttö tekee koodista siistimpää ja mahdollistaa alustusmetodin kutsumisen myös muualta luokasta tarvittaessa."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"from"}]},{"type":"text","value":" random "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" shuffle\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Korttipakka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__alusta_pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__alusta_pakka"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Laitetaan kaikki kortit pakkaan"}]},{"type":"text","value":"\n maat "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"pata\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"hertta\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"risti\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"ruutu\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" maat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" numero "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"14"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Sekoitetaan pakka"}]},{"type":"text","value":"\n shuffle"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"jaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" korttien_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kasi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Siirretään pakasta ylimmät kortit käteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" i "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"range"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"korttien_maara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n kasi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__pakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pop"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" kasi"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraava koodi testaa luokkaa:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"korttipakka "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korttipakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkasi1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korttipakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"jaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kasi1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkasi2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korttipakka"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"jaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kasi2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelma tulostaa esimerkiksi"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"[('pata', 7), ('pata', 11), ('hertta', 7), ('ruutu', 3), ('pata', 4)]\n[('risti', 8), ('pata', 12), ('ruutu', 13), ('risti', 11), ('pata', 10)]"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Piilotettuja metodeja tarvitaan yleensä harvemmin kuin piilotettuja attribuutteja. Metodi kannattaa piilottaa, jos asiakas ei tarvitse siihen suoraa pääsyä, ja varsinkin silloin, jos on todennäköistä, että asiakas voisi sotkea olion sisäisen eheyden metodia kutsumalla."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Palvelumaksu","tmcname":"osa09-12_palvelumaksu"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Pankkitili"}]},{"type":"text","value":", joka mallintaa pankkitiliä. Luokalla tulee olla"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, joka saa parametrikseen tilinomistajan (str), tilinumeron (str) ja saldon (float)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"talleta(summa: float)"}]},{"type":"text","value":", jolla tilille voidaan tallettaa rahaa"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nosta(summa: float)"}]},{"type":"text","value":", joka nostaa tililtä rahasumman"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"havainnointimetodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"saldo"}]},{"type":"text","value":", joka palauttaa tilin saldon"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisäksi luokalla on yksityinen metodi"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__palvelumaksu()"}]},{"type":"text","value":", joka vähentää tililtä yhden prosentin rahaa. Luokassa kutsutaan tätä metodia aina, kun asiakas kutsuu jompaa kumpaa metodeista "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"talleta"}]},{"type":"text","value":" tai "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nosta"}]},{"type":"text","value":". Prosentti vähennetään aina varsinaisen operaation jälkeen (eli. esimerkiksi vasta sitten, kun rahat on talletettu)."}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kaikki luokan attribuutit ovat yksityisiä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Pankkitili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Raimo Rahakas\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345-6789\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nosta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"talleta"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"891.0\n981.09"}]}]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tiedät, miten metodin näkyvyys määritellään Pythonissa
    • \n
    • Osaat kirjoittaa piilotettuja metodeita
    • \n

    Luokassa olevien metodien näkyvyyteen voidaan vaikuttaa samalla tavalla kuin attribuuttien näkyvyyteen. Jos metodin nimi alkaa kahdella alaviivalla __, metodi ei ole näkyvissä asiakkaille.

    Käytännössä mekanismia käytetään hiukan eri tavalla: piilotettujen attribuuttien käyttöä varten kirjoitetaan usein julkiset havainnointi- ja asetusmetodit. Piilotettu metodi on kuitenkin yleensä tarkoitettu vain luokan sisäiseen käyttöön, apumetodiksi asiakkaalta piilotettujen operaatioiden toteuttamiseksi.

    Piilotettua metodia voidaan kutsua luokan sisällä normaalisti, mutta kutsuttaessa pitää muistaa self-aluke. Tarkastellaan esimerkkinä sähköpostin vastaanottajaa mallintavaa luokkaa Vastaanottaja, jossa yksityistä apumetodia käytetään tarkistamaan sähköpostiosoitteen oikeellisuus:

    class Vastaanottaja:\n    def __init__(self, nimi: str, sposti: str):\n        self.__nimi = nimi\n        if self.__tarkasta_sposti(sposti):\n            self.__sposti = sposti\n        else:\n            raise ValueError(\"Sähköposti ei kelpaa\")\n\n    def __tarkasta_sposti(self, sposti: str):\n        # Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki\n        return len(sposti) > 5 and \".\" in sposti and \"@\" in sposti

    Jos asiakas yrittää kutsua metodia, seuraa virhe:

    pertti = Vastaanottaja(\"Pertti Keinonen\", \"pertti@example.com\")\npertti.__tarkasta_sposti(\"jokumuu@example.com\")

    AttributeError: 'Vastaanottaja' object has no attribute '__tarkasta_sposti'

    Samaa apumetodia kannattaa kutsua myös sähköpostia asettaessa - lisätään siis luokkaan esimerkin vuoksi havainnointi- ja asetusmetodit sähköpostille:

    class Vastaanottaja:\n    def __init__(self, nimi: str, sposti: str):\n        self.__nimi = nimi\n        if self.__tarkasta_sposti(sposti):\n            self.__sposti = sposti\n        else:\n            raise ValueError(\"Sähköposti ei kelpaa\")\n\n    def __tarkasta_sposti(self, sposti: str):\n        # Yksinkertainen tarkastus: osoitteessa on yli 5 merkkiä ja piste ja @-merkki\n        return len(sposti) > 5 and \".\" in sposti and \"@\" in sposti\n\n    @property\n    def sposti(self):\n        return self.__sposti\n\n    @sposti.setter\n    def sposti(self, sposti: str):\n        if self.__tarkasta_sposti(sposti):\n            self.__sposti = sposti\n        else:\n            raise ValueError(\"Sähköposti ei kelpaa\")

    Tarkastellaan sitten toista esimerkkiä. Luokka Korttipakka mallintaa nimensä mukaisesti 52 kortin korttipakkaa. Apumetodi __alusta_pakka luo uuden sekoitetun pakan oliota luotaessa. Vastaava alustus voitaisiin toki tehdä myös metodissa __init__, mutta erillisen apumetodin käyttö tekee koodista siistimpää ja mahdollistaa alustusmetodin kutsumisen myös muualta luokasta tarvittaessa.

    from random import shuffle\n\nclass Korttipakka:\n    def __init__(self):\n        self.__alusta_pakka()\n\n    def __alusta_pakka(self):\n        self.__pakka = []\n        # Laitetaan kaikki kortit pakkaan\n        maat = [\"pata\", \"hertta\", \"risti\", \"ruutu\"]\n        for maa in maat:\n            for numero in range(1, 14):\n                self.__pakka.append((maa, numero))\n        # Sekoitetaan pakka\n        shuffle(self.__pakka)\n\n    def jaa(self, korttien_maara: int):\n        kasi = []\n        # Siirretään pakasta ylimmät kortit käteen\n        for i in range(korttien_maara):\n            kasi.append(self.__pakka.pop())\n        return kasi

    Seuraava koodi testaa luokkaa:

    korttipakka = Korttipakka()\nkasi1 = korttipakka.jaa(5)\nprint(kasi1)\nkasi2 = korttipakka.jaa(5)\nprint(kasi2)

    Ohjelma tulostaa esimerkiksi

    [('pata', 7), ('pata', 11), ('hertta', 7), ('ruutu', 3), ('pata', 4)]\n[('risti', 8), ('pata', 12), ('ruutu', 13), ('risti', 11), ('pata', 10)]

    Piilotettuja metodeja tarvitaan yleensä harvemmin kuin piilotettuja attribuutteja. Metodi kannattaa piilottaa, jos asiakas ei tarvitse siihen suoraa pääsyä, ja varsinkin silloin, jos on todennäköistä, että asiakas voisi sotkea olion sisäisen eheyden metodia kutsumalla.

    Kirjoita luokka Pankkitili, joka mallintaa pankkitiliä. Luokalla tulee olla

      \n
    • konstruktori, joka saa parametrikseen tilinomistajan (str), tilinumeron (str) ja saldon (float)
    • \n
    • metodi talleta(summa: float), jolla tilille voidaan tallettaa rahaa
    • \n
    • metodi nosta(summa: float), joka nostaa tililtä rahasumman
    • \n
    • havainnointimetodi saldo, joka palauttaa tilin saldon
    • \n

    Lisäksi luokalla on yksityinen metodi

      \n
    • __palvelumaksu(), joka vähentää tililtä yhden prosentin rahaa. Luokassa kutsutaan tätä metodia aina, kun asiakas kutsuu jompaa kumpaa metodeista talleta tai nosta. Prosentti vähennetään aina varsinaisen operaation jälkeen (eli. esimerkiksi vasta sitten, kun rahat on talletettu).
    • \n

    Kaikki luokan attribuutit ovat yksityisiä.

    Esimerkki luokan käytöstä:

    tili = Pankkitili(\"Raimo Rahakas\", \"12345-6789\", 1000)\ntili.nosta(100)\nprint(tili.saldo)\ntili.talleta(100)\nprint(tili.saldo)\n

    891.0\n981.09

    ","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/4-metodien-nakyvyys.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/5-staattiset-piirteet/page-data.json b/page-data/osa-9/5-staattiset-piirteet/page-data.json index a1212f0a7..75797ded8 100644 --- a/page-data/osa-9/5-staattiset-piirteet/page-data.json +++ b/page-data/osa-9/5-staattiset-piirteet/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-9/5-staattiset-piirteet", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät käsitteet luokkamuuttuja ja luokkametodi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät miten staattiset piirteet eroavat olioiden piirteistä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat lisätä staattisia piirteitä omiin luokkiin"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnissa puhutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"piirteistä"}]},{"type":"text","value":". Näillä tarkoitetaan olion ominaisuuksia: luokan sisälle kirjoitettuja metodeja ja luokassa määriteltyjä muuttujia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän mennessä olemme käsitelleen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioiden piirteitä"}]},{"type":"text","value":" eli oliometodeita ja attribuutteja. Olio-ohjelmointiin kuuluvat kuitenkin myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokan piirteet"}]},{"type":"text","value":", joita kutsutaan usein myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"staattisiksi piirteiksi"}]},{"type":"text","value":". Myös käsitettä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokkamuuttuja"}]},{"type":"text","value":" käytetään."}]},{"type":"element","tagName":"h2","properties":{"id":"luokkamuuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Luokkamuuttujat"},{"type":"element","tagName":"a","properties":{"href":"#luokkamuuttujat","ariaLabel":"luokkamuuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten on aiemmin opittu, jokaisella oliolla on omat itsenäiset arvonsa attribuuteille. Attribuuttien lisäksi luokassa voidaan määritellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokkamuuttujia"}]},{"type":"text","value":" eli staattisia muuttujia. Luokkamuuttujalla tarkoitetaan muuttujaa, jota käytetään luokan kautta eikä luokasta muodostettujen olioiden kautta. Luokkamuuttujalla on yksi yhteinen arvo riippumatta siitä, montako oliota luokasta muodostetaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujan määrittely eroaa attribuutista siinä, että se määritellään ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-aluketta. Jos luokkamuuttujaa halutaan käyttää koko luokassa ja mahdollisesti luokan ulkopuoleltakin, se tulee määritellä metodien ulkopuolella."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Korkotili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.03"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korko on yleiskorko + tilin korko"}]},{"type":"text","value":"\n korko_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" korko_yhteensa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska yleiskorko on määritelty luokassa eikä metodin sisällä eikä sen alustuksessa ole käytetty "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-aluketta, se on luokkamuuttuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujaan viitataan luokan nimen avulla, esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yleiskorko on olioista riippumaton"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yleiskorko on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.05"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään kokonaiskorko saldoon"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleiskorko on 0.03\n1080.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujiin viitataan siis luokan nimen avulla, esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Korkotili.yleiskorko"}]},{"type":"text","value":", ja oliomuuttujiin eli attribuutteihin olion nimen avulla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tili.saldo"}]},{"type":"text","value":". Oliomuuttujiin voi luonnollisesti viitata vasta, kun luokasta on muodostettu olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujaa on kätevä käyttää, kun halutaan tallentaa arvoja, jotka on jaettu kaikkien olioiden kesken. Edellisessä esimerkissä oletetaan, että kaikilla pankkitileillä on sama yleiskorkoprosentti, jonka lisäksi tilille voidaan erikseen määrittää oma korkoprosenttinsa. Yleiskorkokin voi muuttua, mutta muutos vaikuttaa kaikkiin luokasta muodostettuihin olioihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Korkotili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.03"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korko on yleiskorko + tilin korko"}]},{"type":"text","value":"\n korko_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" korko_yhteensa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kokonaiskorko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tili1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.03"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"54321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.06"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yleiskorko:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nostetaan yleiskorko 10 prosenttiin"}]},{"type":"text","value":"\nKorkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.10"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yleiskorko:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleiskorko: 0.03\n0.06\n0.09\nYleiskorko: 0.1\n0.13\n0.16"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun yleiskorko nousee, kaikkien luokasta määriteltyjen tilien kokonaiskorko nousee. Huomaa, että kokonaiskorko on määritelty havainnointimetodiksi, vaikkei vastaavaa attribuuttia olekaan suoraan määritelty. Metodi palauttaa tilin koron ja yleiskoron summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä. Luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinnumero"}]},{"type":"text","value":" on maatunnukset tallennettuna sanakirjaan. Lista maatunnuksista on yhteinen kaikille luokasta luoduille puhelinnumero-olioille, koska maatunnus saman maan puhelinnumeroille on aina sama."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maatunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+358\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+46\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yhdysvallat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" puhelinnumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maatunnukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paulan_nro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paula Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"050 1234 567\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paulan_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"+358 50 1234 567"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun puhelinnumero-olio luodaan, tallennetaan nimen ja numeron lisäksi maa. Kun numero haetaan havainnointimetodilla, haetaan numeron eteen maatunnus luokkamuuttujasta olion attribuuttiin tallennetun maatiedon avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkiluokka on toiminnallisuudeltaan melko vajavainen. Katsotaan vielä, miltä näyttäisi parempi toteutus, jossa on havainnointi- ja asetusmetodit eri attribuuteille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maatunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+358\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+46\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yhdysvallat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä kutsuu metodia puhelinnumero.setter"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" puhelinnumero\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä kutsuu metodia maa.setter"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Havainnointimetodissa yhdistetään maatunnus ja puhelinnumero"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maatunnukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Varmistetaan, että puhelinnumerossa on vain numeroita ja välilyöntejä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234567890 \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Puhelinnumero saa sisältää vain lukuja ja välilyöntejä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Pelkkä puhelinnumero ilman maatunnusta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"paikallinen_numero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Varmistetaan, että maa on maatunnusten listalla"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maatunnukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Annettua maata ei löydy listalta.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pnro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pertti Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"040 111 1111\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paikallinen_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"+46 40 111 1111 (Pertti Python)\n+46 40 111 1111\n040 111 1111"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Postinumerot","tmcname":"osa09-13_postinumerot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kaupunki"}]},{"type":"text","value":", joka mallintaa yksittäistä kaupunkia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan luokkamuuttuja postinumerot, joka viittaa sanakirjaan. Sanakirjassa jokainen avain on kaupungin nimi ja arvo postinumero. Molemmat ovat merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjasta tulee löytyä seuraavat postinumerot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Helsinki 00100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Turku 20100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tampere 33100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jyväskylä 40100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Oulu 90100"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta toiminnallisuutta ei tarvitse toteuttaa."}]}]},{"type":"element","tagName":"h2","properties":{"id":"luokkametodit","style":"position:relative;"},"children":[{"type":"text","value":"Luokkametodit"},{"type":"element","tagName":"a","properties":{"href":"#luokkametodit","ariaLabel":"luokkametodit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkametodi eli staattinen metodi on luokassa oleva metodi, jota ei ole sidottu mihinkään luokasta muodostettuun olioon. Niinpä luokkametodia voi kutsua ilman, että luokasta muodostetaan oliota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkametodit ovat yleensä työkalumetodeja, jotka liittyvät jotenkin luokkaan mutta joita on tarkoituksenmukaista kutsua ilman olion muodostamista. Luokkametodit ovat yleensä julkisia, jolloin niitä voidaan kutsua sekä luokan ulkopuolelta että luokan ja siitä muodostettujen olioiden sisältä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkametodi merkitään annotaatiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":" ja sen ensimmäinen parametri on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cls"}]},{"type":"text","value":". Tunnistetta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cls"}]},{"type":"text","value":" käytetään samaan tapaan kuin tunnistetta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":", mutta erotuksena on, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cls"}]},{"type":"text","value":" viittaa luokkaan ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" viittaa olioon. Kummallekaan parametrille ei anneta kutsuessa arvoa, vaan Python tekee sen automaattisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Rekisteriote"}]},{"type":"text","value":" voisi olla staattinen metodi, jolla voidaan tarkistaa, onko annettu rekisteritunnus oikeamuotoinen. Metodi on staattinen, jotta tunnuksen voi tarkastaa myös ilman, että luodaan uutta oliota luokasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Rekisteriote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rekisteritunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkki\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__vuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan metodia rekisteritunnus.setter"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rekisteritunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rekisteritunnus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rekisteritunnus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rekisteritunnus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@rekisteritunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rekisteritunnus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" Rekisteriote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rekisteritunnus_kelpaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rekisteritunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tunnus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rekisteritunnus ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokkametodi tunnuksen validoimiseksi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rekisteritunnus_kelpaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cls"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tarkastellaan alku- ja loppuosaa erikseen"}]},{"type":"text","value":"\n alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" loppu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Alkuosassa saa olla vain kirjaimia"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lower"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcdefghijklmnopqrstuvwxyzåäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Loppuosassa saa olla vain numeroita"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234567890\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Rekisteriote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto Autoilija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Volvo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1992\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abc-123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" Rekisteriote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rekisteritunnus_kelpaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"xyz-789\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on validi tunnus!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on validi tunnus!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekisteriotteen oikeellisuuden voi tarkistaa kutsumalla metodia (esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Rekisteriote.rekisteritunnus_kelpaa(\"xyz-789\"))"}]},{"type":"text","value":") ilman, että muodostaa luokasta oliota. Samaa metodia kutsutaan myös uutta oliota muodostaessa luokan konstruktorista. Huomaa kuitenkin, että myös tässä kutsussa viitataan metodiin luokan nimen avulla eikä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-tunnisteella!"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lista-apuri","tmcname":"osa09-14_lista_apuri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ListaApuri"}]},{"type":"text","value":", jossa on seuraavat kaksi luokkametodia:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin_frekvenssi(lista: list)"}]},{"type":"text","value":" palauttaa alkion, jota esiintyy annetussa listassa eniten"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuplia(lista: list)"}]},{"type":"text","value":" palauttaa sellaisten alkioden lukumäärän, jotka esiintyvät listassa vähintään kahdesti"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodeja tulee voida käyttää ilman, että luokasta luodaan oliota. Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ListaApuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suurin_frekvenssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ListaApuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuplia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3"}]}]}]}]},"html":"

    Tämän osion jälkeen:

      \n
    • Ymmärrät käsitteet luokkamuuttuja ja luokkametodi
    • \n
    • Tiedät miten staattiset piirteet eroavat olioiden piirteistä
    • \n
    • Osaat lisätä staattisia piirteitä omiin luokkiin
    • \n

    Olio-ohjelmoinnissa puhutaan piirteistä. Näillä tarkoitetaan olion ominaisuuksia: luokan sisälle kirjoitettuja metodeja ja luokassa määriteltyjä muuttujia.

    Tähän mennessä olemme käsitelleen olioiden piirteitä eli oliometodeita ja attribuutteja. Olio-ohjelmointiin kuuluvat kuitenkin myös luokan piirteet, joita kutsutaan usein myös staattisiksi piirteiksi. Myös käsitettä luokkamuuttuja käytetään.

    Luokkamuuttujat

    Kuten on aiemmin opittu, jokaisella oliolla on omat itsenäiset arvonsa attribuuteille. Attribuuttien lisäksi luokassa voidaan määritellä luokkamuuttujia eli staattisia muuttujia. Luokkamuuttujalla tarkoitetaan muuttujaa, jota käytetään luokan kautta eikä luokasta muodostettujen olioiden kautta. Luokkamuuttujalla on yksi yhteinen arvo riippumatta siitä, montako oliota luokasta muodostetaan.

    Luokkamuuttujan määrittely eroaa attribuutista siinä, että se määritellään ilman self-aluketta. Jos luokkamuuttujaa halutaan käyttää koko luokassa ja mahdollisesti luokan ulkopuoleltakin, se tulee määritellä metodien ulkopuolella.

    class Korkotili:\n    yleiskorko = 0.03\n\n    def __init__(self, tilinumero: str, saldo: float, korko: float):\n        self.__tilinumero = tilinumero\n        self.__saldo = saldo\n        self.__korko = korko\n\n    def lisaa_korko(self):\n        # Korko on yleiskorko + tilin korko\n        korko_yhteensa = Korkotili.yleiskorko + self.__korko\n        self.__saldo += self.__saldo * korko_yhteensa\n\n    @property\n    def saldo(self):\n        return self.__saldo

    Koska yleiskorko on määritelty luokassa eikä metodin sisällä eikä sen alustuksessa ole käytetty self-aluketta, se on luokkamuuttuja.

    Luokkamuuttujaan viitataan luokan nimen avulla, esimerkiksi näin:

    # Yleiskorko on olioista riippumaton\nprint(\"Yleiskorko on\", Korkotili.yleiskorko)\n\ntili = Korkotili(\"12345\", 1000, 0.05)\n# Lisätään kokonaiskorko saldoon\ntili.lisaa_korko()\nprint(tili.saldo)

    Yleiskorko on 0.03\n1080.0

    Luokkamuuttujiin viitataan siis luokan nimen avulla, esimerkiksi Korkotili.yleiskorko, ja oliomuuttujiin eli attribuutteihin olion nimen avulla tili.saldo. Oliomuuttujiin voi luonnollisesti viitata vasta, kun luokasta on muodostettu olio.

    Luokkamuuttujaa on kätevä käyttää, kun halutaan tallentaa arvoja, jotka on jaettu kaikkien olioiden kesken. Edellisessä esimerkissä oletetaan, että kaikilla pankkitileillä on sama yleiskorkoprosentti, jonka lisäksi tilille voidaan erikseen määrittää oma korkoprosenttinsa. Yleiskorkokin voi muuttua, mutta muutos vaikuttaa kaikkiin luokasta muodostettuihin olioihin:

    class Korkotili:\n    yleiskorko = 0.03\n\n    def __init__(self, tilinumero: str, saldo: float, korko: float):\n        self.__tilinumero = tilinumero\n        self.__saldo = saldo\n        self.__korko = korko\n\n    def lisaa_korko(self):\n        # Korko on yleiskorko + tilin korko\n        korko_yhteensa = Korkotili.yleiskorko + self.__korko\n        self.__saldo += self.__saldo * korko_yhteensa\n\n    @property\n    def saldo(self):\n        return self.__saldo\n\n    @property\n    def kokonaiskorko(self):\n        return self.__korko + Korkotili.yleiskorko
    tili1 = Korkotili(\"12345\", 100, 0.03)\ntili2 = Korkotili(\"54321\", 200, 0.06)\n\nprint(\"Yleiskorko:\", Korkotili.yleiskorko)\nprint(tili1.kokonaiskorko)\nprint(tili2.kokonaiskorko)\n\n# Nostetaan yleiskorko 10 prosenttiin\nKorkotili.yleiskorko = 0.10\n\nprint(\"Yleiskorko:\", Korkotili.yleiskorko)\nprint(tili1.kokonaiskorko)\nprint(tili2.kokonaiskorko)

    Yleiskorko: 0.03\n0.06\n0.09\nYleiskorko: 0.1\n0.13\n0.16

    Kun yleiskorko nousee, kaikkien luokasta määriteltyjen tilien kokonaiskorko nousee. Huomaa, että kokonaiskorko on määritelty havainnointimetodiksi, vaikkei vastaavaa attribuuttia olekaan suoraan määritelty. Metodi palauttaa tilin koron ja yleiskoron summan.

    Tarkastellaan vielä toista esimerkkiä. Luokassa Puhelinnumero on maatunnukset tallennettuna sanakirjaan. Lista maatunnuksista on yhteinen kaikille luokasta luoduille puhelinnumero-olioille, koska maatunnus saman maan puhelinnumeroille on aina sama.

    class Puhelinnumero:\n    maatunnukset = {\"Suomi\": \"+358\", \"Ruotsi\": \"+46\", \"Yhdysvallat\": \"+1\"}\n\n    def __init__(self, nimi: str, puhelinnumero: str, maa: str):\n        self.__nimi = nimi\n        self.__puhelinnumero = puhelinnumero\n        self.__maa = maa\n\n    @property\n    def puhelinnumero(self):\n        # Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun\n        return Puhelinnumero.maatunnukset[self.__maa] + \" \" + self.__puhelinnumero[1:]
    paulan_nro = Puhelinnumero(\"Paula Pythonen\", \"050 1234 567\", \"Suomi\")\nprint(paulan_nro.puhelinnumero)

    +358 50 1234 567

    Kun puhelinnumero-olio luodaan, tallennetaan nimen ja numeron lisäksi maa. Kun numero haetaan havainnointimetodilla, haetaan numeron eteen maatunnus luokkamuuttujasta olion attribuuttiin tallennetun maatiedon avulla.

    Esimerkkiluokka on toiminnallisuudeltaan melko vajavainen. Katsotaan vielä, miltä näyttäisi parempi toteutus, jossa on havainnointi- ja asetusmetodit eri attribuuteille:

    class Puhelinnumero:\n    maatunnukset = {\"Suomi\": \"+358\", \"Ruotsi\": \"+46\", \"Yhdysvallat\": \"+1\"}\n\n    def __init__(self, nimi: str, puhelinnumero: str, maa: str):\n        self.__nimi = nimi\n        # Tämä kutsuu metodia puhelinnumero.setter\n        self.puhelinnumero = puhelinnumero\n        # Tämä kutsuu metodia maa.setter\n        self.maa = maa\n\n    # Havainnointimetodissa yhdistetään maatunnus ja puhelinnumero\n    @property\n    def puhelinnumero(self):\n        # Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun\n        return Puhelinnumero.maatunnukset[self.__maa] + \" \" + self.__puhelinnumero[1:]\n\n    @puhelinnumero.setter\n    def puhelinnumero(self, numero):\n        # Varmistetaan, että puhelinnumerossa on vain numeroita ja välilyöntejä\n        for merkki in numero:\n            if merkki not in \"1234567890 \":\n                raise ValueError(\"Puhelinnumero saa sisältää vain lukuja ja välilyöntejä\")\n        self.__puhelinnumero = numero\n\n    # Pelkkä puhelinnumero ilman maatunnusta\n    @property\n    def paikallinen_numero(self):\n        return self.__puhelinnumero\n\n    @property\n    def maa(self):\n        return self.__maa\n\n    @maa.setter\n    def maa(self, maa):\n        # Varmistetaan, että maa on maatunnusten listalla\n        if maa not in Puhelinnumero.maatunnukset:\n            raise ValueError(\"Annettua maata ei löydy listalta.\")\n        self.__maa = maa\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    @nimi.setter\n    def nimi(self, nimi):\n        self.__nimi = nimi\n\n    def __str__(self):\n        return f\"{self.puhelinnumero} ({self.__nimi})\"
    if __name__ == \"__main__\":\n    pnro = Puhelinnumero(\"Pertti Python\", \"040 111 1111\", \"Ruotsi\")\n    print(pnro)\n    print(pnro.puhelinnumero)\n    print(pnro.paikallinen_numero)

    +46 40 111 1111 (Pertti Python)\n+46 40 111 1111\n040 111 1111

    Tehtäväpohjassa on määritelty luokka Kaupunki, joka mallintaa yksittäistä kaupunkia.

    Lisää luokkaan luokkamuuttuja postinumerot, joka viittaa sanakirjaan. Sanakirjassa jokainen avain on kaupungin nimi ja arvo postinumero. Molemmat ovat merkkijonoja.

    Sanakirjasta tulee löytyä seuraavat postinumerot:

      \n
    • Helsinki 00100
    • \n
    • Turku 20100
    • \n
    • Tampere 33100
    • \n
    • Jyväskylä 40100
    • \n
    • Oulu 90100
    • \n

    Muuta toiminnallisuutta ei tarvitse toteuttaa.

    Luokkametodit

    Luokkametodi eli staattinen metodi on luokassa oleva metodi, jota ei ole sidottu mihinkään luokasta muodostettuun olioon. Niinpä luokkametodia voi kutsua ilman, että luokasta muodostetaan oliota.

    Luokkametodit ovat yleensä työkalumetodeja, jotka liittyvät jotenkin luokkaan mutta joita on tarkoituksenmukaista kutsua ilman olion muodostamista. Luokkametodit ovat yleensä julkisia, jolloin niitä voidaan kutsua sekä luokan ulkopuolelta että luokan ja siitä muodostettujen olioiden sisältä.

    Luokkametodi merkitään annotaatiolla @classmethod ja sen ensimmäinen parametri on aina cls. Tunnistetta cls käytetään samaan tapaan kuin tunnistetta self, mutta erotuksena on, että cls viittaa luokkaan ja self viittaa olioon. Kummallekaan parametrille ei anneta kutsuessa arvoa, vaan Python tekee sen automaattisesti.

    Esimerkiksi luokassa Rekisteriote voisi olla staattinen metodi, jolla voidaan tarkistaa, onko annettu rekisteritunnus oikeamuotoinen. Metodi on staattinen, jotta tunnuksen voi tarkastaa myös ilman, että luodaan uutta oliota luokasta:

    class Rekisteriote:\n    def __init__(self, omistaja: str, merkki: str, vuosi: int, rekisteritunnus: str):\n        self.__omistaja = omistaja\n        self.__merkki = merkki\n        self.__vuosi = vuosi\n\n        # Kutsutaan metodia rekisteritunnus.setter\n        self.rekisteritunnus = rekisteritunnus\n\n    @property\n    def rekisteritunnus(self):\n        return self.__rekisteritunnus\n\n    @rekisteritunnus.setter\n    def rekisteritunnus(self, tunnus):\n        if Rekisteriote.rekisteritunnus_kelpaa(tunnus):\n            self.__rekisteritunnus = tunnus\n        else:\n            raise ValueError(\"Rekisteritunnus ei kelpaa\")\n\n    # Luokkametodi tunnuksen validoimiseksi\n    @classmethod\n    def rekisteritunnus_kelpaa(cls, tunnus: str):\n        if len(tunnus) < 3 or \"-\" not in tunnus:\n            return False\n\n        # Tarkastellaan alku- ja loppuosaa erikseen\n        alku, loppu = tunnus.split(\"-\")\n\n        # Alkuosassa saa olla vain kirjaimia\n        for merkki in alku:\n            if merkki.lower() not in \"abcdefghijklmnopqrstuvwxyzåäö\":\n                return False\n\n        # Loppuosassa saa olla vain numeroita\n        for merkki in loppu:\n            if merkki not in \"1234567890\":\n                return False\n\n        return True
    ote = Rekisteriote(\"Arto Autoilija\", \"Volvo\", \"1992\", \"abc-123\")\n\nif Rekisteriote.rekisteritunnus_kelpaa(\"xyz-789\"):\n    print(\"Tämä on validi tunnus!\")

    Tämä on validi tunnus!

    Rekisteriotteen oikeellisuuden voi tarkistaa kutsumalla metodia (esimerkiksi Rekisteriote.rekisteritunnus_kelpaa(\"xyz-789\"))) ilman, että muodostaa luokasta oliota. Samaa metodia kutsutaan myös uutta oliota muodostaessa luokan konstruktorista. Huomaa kuitenkin, että myös tässä kutsussa viitataan metodiin luokan nimen avulla eikä self-tunnisteella!

    Kirjoita luokka ListaApuri, jossa on seuraavat kaksi luokkametodia:

      \n
    • Metodi suurin_frekvenssi(lista: list) palauttaa alkion, jota esiintyy annetussa listassa eniten
    • \n
    • Metodi tuplia(lista: list) palauttaa sellaisten alkioden lukumäärän, jotka esiintyvät listassa vähintään kahdesti
    • \n

    Metodeja tulee voida käyttää ilman, että luokasta luodaan oliota. Esimerkki luokan käytöstä:

    luvut = [1, 1, 2, 1, 3, 3, 4, 5, 5, 5, 6, 5, 5, 5]\nprint(ListaApuri.suurin_frekvenssi(luvut))\nprint(ListaApuri.tuplia(luvut))

    5\n3

    ","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/5-staattiset-piirteet.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Ymmärrät käsitteet luokkamuuttuja ja luokkametodi"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tiedät miten staattiset piirteet eroavat olioiden piirteistä"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat lisätä staattisia piirteitä omiin luokkiin"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Olio-ohjelmoinnissa puhutaan "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"piirteistä"}]},{"type":"text","value":". Näillä tarkoitetaan olion ominaisuuksia: luokan sisälle kirjoitettuja metodeja ja luokassa määriteltyjä muuttujia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tähän mennessä olemme käsitelleen "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"olioiden piirteitä"}]},{"type":"text","value":" eli oliometodeita ja attribuutteja. Olio-ohjelmointiin kuuluvat kuitenkin myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokan piirteet"}]},{"type":"text","value":", joita kutsutaan usein myös "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"staattisiksi piirteiksi"}]},{"type":"text","value":". Myös käsitettä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokkamuuttuja"}]},{"type":"text","value":" käytetään."}]},{"type":"element","tagName":"h2","properties":{"id":"luokkamuuttujat","style":"position:relative;"},"children":[{"type":"text","value":"Luokkamuuttujat"},{"type":"element","tagName":"a","properties":{"href":"#luokkamuuttujat","ariaLabel":"luokkamuuttujat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kuten on aiemmin opittu, jokaisella oliolla on omat itsenäiset arvonsa attribuuteille. Attribuuttien lisäksi luokassa voidaan määritellä "},{"type":"element","tagName":"em","properties":{},"children":[{"type":"text","value":"luokkamuuttujia"}]},{"type":"text","value":" eli staattisia muuttujia. Luokkamuuttujalla tarkoitetaan muuttujaa, jota käytetään luokan kautta eikä luokasta muodostettujen olioiden kautta. Luokkamuuttujalla on yksi yhteinen arvo riippumatta siitä, montako oliota luokasta muodostetaan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujan määrittely eroaa attribuutista siinä, että se määritellään ilman "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-aluketta. Jos luokkamuuttujaa halutaan käyttää koko luokassa ja mahdollisesti luokan ulkopuoleltakin, se tulee määritellä metodien ulkopuolella."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Korkotili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.03"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korko on yleiskorko + tilin korko"}]},{"type":"text","value":"\n korko_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" korko_yhteensa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Koska yleiskorko on määritelty luokassa eikä metodin sisällä eikä sen alustuksessa ole käytetty "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-aluketta, se on luokkamuuttuja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujaan viitataan luokan nimen avulla, esimerkiksi näin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Yleiskorko on olioista riippumaton"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yleiskorko on\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\ntili "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.05"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Lisätään kokonaiskorko saldoon"}]},{"type":"text","value":"\ntili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleiskorko on 0.03\n1080.0"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujiin viitataan siis luokan nimen avulla, esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Korkotili.yleiskorko"}]},{"type":"text","value":", ja oliomuuttujiin eli attribuutteihin olion nimen avulla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tili.saldo"}]},{"type":"text","value":". Oliomuuttujiin voi luonnollisesti viitata vasta, kun luokasta on muodostettu olio."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkamuuttujaa on kätevä käyttää, kun halutaan tallentaa arvoja, jotka on jaettu kaikkien olioiden kesken. Edellisessä esimerkissä oletetaan, että kaikilla pankkitileillä on sama yleiskorkoprosentti, jonka lisäksi tilille voidaan erikseen määrittää oma korkoprosenttinsa. Yleiskorkokin voi muuttua, mutta muutos vaikuttaa kaikkiin luokasta muodostettuihin olioihin:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Korkotili"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.03"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tilinumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" saldo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" korko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__tilinumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tilinumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" saldo\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" korko\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_korko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Korko on yleiskorko + tilin korko"}]},{"type":"text","value":"\n korko_yhteensa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+="}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"*"}]},{"type":"text","value":" korko_yhteensa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"saldo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__saldo\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"kokonaiskorko"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__korko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"tili1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"100"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.03"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntili2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"54321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"200"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.06"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yleiskorko:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Nostetaan yleiskorko 10 prosenttiin"}]},{"type":"text","value":"\nKorkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0.10"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yleiskorko:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" Korkotili"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yleiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tili2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"kokonaiskorko"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Yleiskorko: 0.03\n0.06\n0.09\nYleiskorko: 0.1\n0.13\n0.16"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun yleiskorko nousee, kaikkien luokasta määriteltyjen tilien kokonaiskorko nousee. Huomaa, että kokonaiskorko on määritelty havainnointimetodiksi, vaikkei vastaavaa attribuuttia olekaan suoraan määritelty. Metodi palauttaa tilin koron ja yleiskoron summan."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan vielä toista esimerkkiä. Luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Puhelinnumero"}]},{"type":"text","value":" on maatunnukset tallennettuna sanakirjaan. Lista maatunnuksista on yhteinen kaikille luokasta luoduille puhelinnumero-olioille, koska maatunnus saman maan puhelinnumeroille on aina sama."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maatunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+358\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+46\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yhdysvallat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" puhelinnumero\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maatunnukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"paulan_nro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Paula Pythonen\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"050 1234 567\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"paulan_nro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"+358 50 1234 567"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kun puhelinnumero-olio luodaan, tallennetaan nimen ja numeron lisäksi maa. Kun numero haetaan havainnointimetodilla, haetaan numeron eteen maatunnus luokkamuuttujasta olion attribuuttiin tallennetun maatiedon avulla."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkkiluokka on toiminnallisuudeltaan melko vajavainen. Katsotaan vielä, miltä näyttäisi parempi toteutus, jossa on havainnointi- ja asetusmetodit eri attribuuteille:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n maatunnukset "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Suomi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+358\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+46\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Yhdysvallat\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"+1\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä kutsuu metodia puhelinnumero.setter"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" puhelinnumero\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tämä kutsuu metodia maa.setter"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Havainnointimetodissa yhdistetään maatunnus ja puhelinnumero"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maatunnukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\" \""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"puhelinnumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Varmistetaan, että puhelinnumerossa on vain numeroita ja välilyöntejä"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234567890 \""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Puhelinnumero saa sisältää vain lukuja ja välilyöntejä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" numero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Pelkkä puhelinnumero ilman maatunnusta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"paikallinen_numero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__puhelinnumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"maa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" maa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Varmistetaan, että maa on maatunnusten listalla"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" maa "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"maatunnukset"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Annettua maata ei löydy listalta.\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__maa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" maa\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" __name__ "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"=="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"__main__\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n pnro "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Pertti Python\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"040 111 1111\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruotsi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"puhelinnumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pnro"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paikallinen_numero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"+46 40 111 1111 (Pertti Python)\n+46 40 111 1111\n040 111 1111"}]}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Postinumerot","tmcname":"osa09-13_postinumerot"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tehtäväpohjassa on määritelty luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Kaupunki"}]},{"type":"text","value":", joka mallintaa yksittäistä kaupunkia."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan luokkamuuttuja postinumerot, joka viittaa sanakirjaan. Sanakirjassa jokainen avain on kaupungin nimi ja arvo postinumero. Molemmat ovat merkkijonoja."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Sanakirjasta tulee löytyä seuraavat postinumerot:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Helsinki 00100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Turku 20100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tampere 33100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Jyväskylä 40100"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Oulu 90100"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muuta toiminnallisuutta ei tarvitse toteuttaa."}]}]},{"type":"element","tagName":"h2","properties":{"id":"luokkametodit","style":"position:relative;"},"children":[{"type":"text","value":"Luokkametodit"},{"type":"element","tagName":"a","properties":{"href":"#luokkametodit","ariaLabel":"luokkametodit permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkametodi eli staattinen metodi on luokassa oleva metodi, jota ei ole sidottu mihinkään luokasta muodostettuun olioon. Niinpä luokkametodia voi kutsua ilman, että luokasta muodostetaan oliota."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkametodit ovat yleensä työkalumetodeja, jotka liittyvät jotenkin luokkaan mutta joita on tarkoituksenmukaista kutsua ilman olion muodostamista. Luokkametodit ovat yleensä julkisia, jolloin niitä voidaan kutsua sekä luokan ulkopuolelta että luokan ja siitä muodostettujen olioiden sisältä."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokkametodi merkitään annotaatiolla "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":" ja sen ensimmäinen parametri on aina "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cls"}]},{"type":"text","value":". Tunnistetta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cls"}]},{"type":"text","value":" käytetään samaan tapaan kuin tunnistetta "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":", mutta erotuksena on, että "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"cls"}]},{"type":"text","value":" viittaa luokkaan ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":" viittaa olioon. Kummallekaan parametrille ei anneta kutsuessa arvoa, vaan Python tekee sen automaattisesti."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Esimerkiksi luokassa "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Rekisteriote"}]},{"type":"text","value":" voisi olla staattinen metodi, jolla voidaan tarkistaa, onko annettu rekisteritunnus oikeamuotoinen. Metodi on staattinen, jotta tunnuksen voi tarkastaa myös ilman, että luodaan uutta oliota luokasta:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Rekisteriote"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" omistaja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" vuosi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" rekisteritunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__omistaja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" omistaja\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__merkki "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" merkki\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__vuosi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" vuosi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsutaan metodia rekisteritunnus.setter"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rekisteritunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" rekisteritunnus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rekisteritunnus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rekisteritunnus\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@rekisteritunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rekisteritunnus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" Rekisteriote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rekisteritunnus_kelpaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__rekisteritunnus "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tunnus\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Rekisteritunnus ei kelpaa\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokkametodi tunnuksen validoimiseksi"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"rekisteritunnus_kelpaa"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cls"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"or"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Tarkastellaan alku- ja loppuosaa erikseen"}]},{"type":"text","value":"\n alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" loppu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tunnus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"split"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"-\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Alkuosassa saa olla vain kirjaimia"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lower"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abcdefghijklmnopqrstuvwxyzåäö\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Loppuosassa saa olla vain numeroita"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"for"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" merkki "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"in"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1234567890\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"False"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"ote "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Rekisteriote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Arto Autoilija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Volvo\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"1992\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"abc-123\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" Rekisteriote"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"rekisteritunnus_kelpaa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"xyz-789\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tämä on validi tunnus!\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämä on validi tunnus!"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Rekisteriotteen oikeellisuuden voi tarkistaa kutsumalla metodia (esimerkiksi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Rekisteriote.rekisteritunnus_kelpaa(\"xyz-789\"))"}]},{"type":"text","value":") ilman, että muodostaa luokasta oliota. Samaa metodia kutsutaan myös uutta oliota muodostaessa luokan konstruktorista. Huomaa kuitenkin, että myös tässä kutsussa viitataan metodiin luokan nimen avulla eikä "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"self"}]},{"type":"text","value":"-tunnisteella!"}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Lista-apuri","tmcname":"osa09-14_lista_apuri"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjoita luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"ListaApuri"}]},{"type":"text","value":", jossa on seuraavat kaksi luokkametodia:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"suurin_frekvenssi(lista: list)"}]},{"type":"text","value":" palauttaa alkion, jota esiintyy annetussa listassa eniten"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tuplia(lista: list)"}]},{"type":"text","value":" palauttaa sellaisten alkioden lukumäärän, jotka esiintyvät listassa vähintään kahdesti"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Metodeja tulee voida käyttää ilman, että luokasta luodaan oliota. Esimerkki luokan käytöstä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"luvut "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"6"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ListaApuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"suurin_frekvenssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"ListaApuri"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tuplia"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"luvut"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"5\n3"}]}]}]}]},"html":"

    Tämän osion jälkeen:

      \n
    • Ymmärrät käsitteet luokkamuuttuja ja luokkametodi
    • \n
    • Tiedät miten staattiset piirteet eroavat olioiden piirteistä
    • \n
    • Osaat lisätä staattisia piirteitä omiin luokkiin
    • \n

    Olio-ohjelmoinnissa puhutaan piirteistä. Näillä tarkoitetaan olion ominaisuuksia: luokan sisälle kirjoitettuja metodeja ja luokassa määriteltyjä muuttujia.

    Tähän mennessä olemme käsitelleen olioiden piirteitä eli oliometodeita ja attribuutteja. Olio-ohjelmointiin kuuluvat kuitenkin myös luokan piirteet, joita kutsutaan usein myös staattisiksi piirteiksi. Myös käsitettä luokkamuuttuja käytetään.

    Luokkamuuttujat

    Kuten on aiemmin opittu, jokaisella oliolla on omat itsenäiset arvonsa attribuuteille. Attribuuttien lisäksi luokassa voidaan määritellä luokkamuuttujia eli staattisia muuttujia. Luokkamuuttujalla tarkoitetaan muuttujaa, jota käytetään luokan kautta eikä luokasta muodostettujen olioiden kautta. Luokkamuuttujalla on yksi yhteinen arvo riippumatta siitä, montako oliota luokasta muodostetaan.

    Luokkamuuttujan määrittely eroaa attribuutista siinä, että se määritellään ilman self-aluketta. Jos luokkamuuttujaa halutaan käyttää koko luokassa ja mahdollisesti luokan ulkopuoleltakin, se tulee määritellä metodien ulkopuolella.

    class Korkotili:\n    yleiskorko = 0.03\n\n    def __init__(self, tilinumero: str, saldo: float, korko: float):\n        self.__tilinumero = tilinumero\n        self.__saldo = saldo\n        self.__korko = korko\n\n    def lisaa_korko(self):\n        # Korko on yleiskorko + tilin korko\n        korko_yhteensa = Korkotili.yleiskorko + self.__korko\n        self.__saldo += self.__saldo * korko_yhteensa\n\n    @property\n    def saldo(self):\n        return self.__saldo

    Koska yleiskorko on määritelty luokassa eikä metodin sisällä eikä sen alustuksessa ole käytetty self-aluketta, se on luokkamuuttuja.

    Luokkamuuttujaan viitataan luokan nimen avulla, esimerkiksi näin:

    # Yleiskorko on olioista riippumaton\nprint(\"Yleiskorko on\", Korkotili.yleiskorko)\n\ntili = Korkotili(\"12345\", 1000, 0.05)\n# Lisätään kokonaiskorko saldoon\ntili.lisaa_korko()\nprint(tili.saldo)

    Yleiskorko on 0.03\n1080.0

    Luokkamuuttujiin viitataan siis luokan nimen avulla, esimerkiksi Korkotili.yleiskorko, ja oliomuuttujiin eli attribuutteihin olion nimen avulla tili.saldo. Oliomuuttujiin voi luonnollisesti viitata vasta, kun luokasta on muodostettu olio.

    Luokkamuuttujaa on kätevä käyttää, kun halutaan tallentaa arvoja, jotka on jaettu kaikkien olioiden kesken. Edellisessä esimerkissä oletetaan, että kaikilla pankkitileillä on sama yleiskorkoprosentti, jonka lisäksi tilille voidaan erikseen määrittää oma korkoprosenttinsa. Yleiskorkokin voi muuttua, mutta muutos vaikuttaa kaikkiin luokasta muodostettuihin olioihin:

    class Korkotili:\n    yleiskorko = 0.03\n\n    def __init__(self, tilinumero: str, saldo: float, korko: float):\n        self.__tilinumero = tilinumero\n        self.__saldo = saldo\n        self.__korko = korko\n\n    def lisaa_korko(self):\n        # Korko on yleiskorko + tilin korko\n        korko_yhteensa = Korkotili.yleiskorko + self.__korko\n        self.__saldo += self.__saldo * korko_yhteensa\n\n    @property\n    def saldo(self):\n        return self.__saldo\n\n    @property\n    def kokonaiskorko(self):\n        return self.__korko + Korkotili.yleiskorko
    tili1 = Korkotili(\"12345\", 100, 0.03)\ntili2 = Korkotili(\"54321\", 200, 0.06)\n\nprint(\"Yleiskorko:\", Korkotili.yleiskorko)\nprint(tili1.kokonaiskorko)\nprint(tili2.kokonaiskorko)\n\n# Nostetaan yleiskorko 10 prosenttiin\nKorkotili.yleiskorko = 0.10\n\nprint(\"Yleiskorko:\", Korkotili.yleiskorko)\nprint(tili1.kokonaiskorko)\nprint(tili2.kokonaiskorko)

    Yleiskorko: 0.03\n0.06\n0.09\nYleiskorko: 0.1\n0.13\n0.16

    Kun yleiskorko nousee, kaikkien luokasta määriteltyjen tilien kokonaiskorko nousee. Huomaa, että kokonaiskorko on määritelty havainnointimetodiksi, vaikkei vastaavaa attribuuttia olekaan suoraan määritelty. Metodi palauttaa tilin koron ja yleiskoron summan.

    Tarkastellaan vielä toista esimerkkiä. Luokassa Puhelinnumero on maatunnukset tallennettuna sanakirjaan. Lista maatunnuksista on yhteinen kaikille luokasta luoduille puhelinnumero-olioille, koska maatunnus saman maan puhelinnumeroille on aina sama.

    class Puhelinnumero:\n    maatunnukset = {\"Suomi\": \"+358\", \"Ruotsi\": \"+46\", \"Yhdysvallat\": \"+1\"}\n\n    def __init__(self, nimi: str, puhelinnumero: str, maa: str):\n        self.__nimi = nimi\n        self.__puhelinnumero = puhelinnumero\n        self.__maa = maa\n\n    @property\n    def puhelinnumero(self):\n        # Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun\n        return Puhelinnumero.maatunnukset[self.__maa] + \" \" + self.__puhelinnumero[1:]
    paulan_nro = Puhelinnumero(\"Paula Pythonen\", \"050 1234 567\", \"Suomi\")\nprint(paulan_nro.puhelinnumero)

    +358 50 1234 567

    Kun puhelinnumero-olio luodaan, tallennetaan nimen ja numeron lisäksi maa. Kun numero haetaan havainnointimetodilla, haetaan numeron eteen maatunnus luokkamuuttujasta olion attribuuttiin tallennetun maatiedon avulla.

    Esimerkkiluokka on toiminnallisuudeltaan melko vajavainen. Katsotaan vielä, miltä näyttäisi parempi toteutus, jossa on havainnointi- ja asetusmetodit eri attribuuteille:

    class Puhelinnumero:\n    maatunnukset = {\"Suomi\": \"+358\", \"Ruotsi\": \"+46\", \"Yhdysvallat\": \"+1\"}\n\n    def __init__(self, nimi: str, puhelinnumero: str, maa: str):\n        self.__nimi = nimi\n        # Tämä kutsuu metodia puhelinnumero.setter\n        self.puhelinnumero = puhelinnumero\n        # Tämä kutsuu metodia maa.setter\n        self.maa = maa\n\n    # Havainnointimetodissa yhdistetään maatunnus ja puhelinnumero\n    @property\n    def puhelinnumero(self):\n        # Puhelinnumerosta jää etunolla pois, kun maatunnus lisätään alkuun\n        return Puhelinnumero.maatunnukset[self.__maa] + \" \" + self.__puhelinnumero[1:]\n\n    @puhelinnumero.setter\n    def puhelinnumero(self, numero):\n        # Varmistetaan, että puhelinnumerossa on vain numeroita ja välilyöntejä\n        for merkki in numero:\n            if merkki not in \"1234567890 \":\n                raise ValueError(\"Puhelinnumero saa sisältää vain lukuja ja välilyöntejä\")\n        self.__puhelinnumero = numero\n\n    # Pelkkä puhelinnumero ilman maatunnusta\n    @property\n    def paikallinen_numero(self):\n        return self.__puhelinnumero\n\n    @property\n    def maa(self):\n        return self.__maa\n\n    @maa.setter\n    def maa(self, maa):\n        # Varmistetaan, että maa on maatunnusten listalla\n        if maa not in Puhelinnumero.maatunnukset:\n            raise ValueError(\"Annettua maata ei löydy listalta.\")\n        self.__maa = maa\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    @nimi.setter\n    def nimi(self, nimi):\n        self.__nimi = nimi\n\n    def __str__(self):\n        return f\"{self.puhelinnumero} ({self.__nimi})\"
    if __name__ == \"__main__\":\n    pnro = Puhelinnumero(\"Pertti Python\", \"040 111 1111\", \"Ruotsi\")\n    print(pnro)\n    print(pnro.puhelinnumero)\n    print(pnro.paikallinen_numero)

    +46 40 111 1111 (Pertti Python)\n+46 40 111 1111\n040 111 1111

    Tehtäväpohjassa on määritelty luokka Kaupunki, joka mallintaa yksittäistä kaupunkia.

    Lisää luokkaan luokkamuuttuja postinumerot, joka viittaa sanakirjaan. Sanakirjassa jokainen avain on kaupungin nimi ja arvo postinumero. Molemmat ovat merkkijonoja.

    Sanakirjasta tulee löytyä seuraavat postinumerot:

      \n
    • Helsinki 00100
    • \n
    • Turku 20100
    • \n
    • Tampere 33100
    • \n
    • Jyväskylä 40100
    • \n
    • Oulu 90100
    • \n

    Muuta toiminnallisuutta ei tarvitse toteuttaa.

    Luokkametodit

    Luokkametodi eli staattinen metodi on luokassa oleva metodi, jota ei ole sidottu mihinkään luokasta muodostettuun olioon. Niinpä luokkametodia voi kutsua ilman, että luokasta muodostetaan oliota.

    Luokkametodit ovat yleensä työkalumetodeja, jotka liittyvät jotenkin luokkaan mutta joita on tarkoituksenmukaista kutsua ilman olion muodostamista. Luokkametodit ovat yleensä julkisia, jolloin niitä voidaan kutsua sekä luokan ulkopuolelta että luokan ja siitä muodostettujen olioiden sisältä.

    Luokkametodi merkitään annotaatiolla @classmethod ja sen ensimmäinen parametri on aina cls. Tunnistetta cls käytetään samaan tapaan kuin tunnistetta self, mutta erotuksena on, että cls viittaa luokkaan ja self viittaa olioon. Kummallekaan parametrille ei anneta kutsuessa arvoa, vaan Python tekee sen automaattisesti.

    Esimerkiksi luokassa Rekisteriote voisi olla staattinen metodi, jolla voidaan tarkistaa, onko annettu rekisteritunnus oikeamuotoinen. Metodi on staattinen, jotta tunnuksen voi tarkastaa myös ilman, että luodaan uutta oliota luokasta:

    class Rekisteriote:\n    def __init__(self, omistaja: str, merkki: str, vuosi: int, rekisteritunnus: str):\n        self.__omistaja = omistaja\n        self.__merkki = merkki\n        self.__vuosi = vuosi\n\n        # Kutsutaan metodia rekisteritunnus.setter\n        self.rekisteritunnus = rekisteritunnus\n\n    @property\n    def rekisteritunnus(self):\n        return self.__rekisteritunnus\n\n    @rekisteritunnus.setter\n    def rekisteritunnus(self, tunnus):\n        if Rekisteriote.rekisteritunnus_kelpaa(tunnus):\n            self.__rekisteritunnus = tunnus\n        else:\n            raise ValueError(\"Rekisteritunnus ei kelpaa\")\n\n    # Luokkametodi tunnuksen validoimiseksi\n    @classmethod\n    def rekisteritunnus_kelpaa(cls, tunnus: str):\n        if len(tunnus) < 3 or \"-\" not in tunnus:\n            return False\n\n        # Tarkastellaan alku- ja loppuosaa erikseen\n        alku, loppu = tunnus.split(\"-\")\n\n        # Alkuosassa saa olla vain kirjaimia\n        for merkki in alku:\n            if merkki.lower() not in \"abcdefghijklmnopqrstuvwxyzåäö\":\n                return False\n\n        # Loppuosassa saa olla vain numeroita\n        for merkki in loppu:\n            if merkki not in \"1234567890\":\n                return False\n\n        return True
    ote = Rekisteriote(\"Arto Autoilija\", \"Volvo\", \"1992\", \"abc-123\")\n\nif Rekisteriote.rekisteritunnus_kelpaa(\"xyz-789\"):\n    print(\"Tämä on validi tunnus!\")

    Tämä on validi tunnus!

    Rekisteriotteen oikeellisuuden voi tarkistaa kutsumalla metodia (esimerkiksi Rekisteriote.rekisteritunnus_kelpaa(\"xyz-789\"))) ilman, että muodostaa luokasta oliota. Samaa metodia kutsutaan myös uutta oliota muodostaessa luokan konstruktorista. Huomaa kuitenkin, että myös tässä kutsussa viitataan metodiin luokan nimen avulla eikä self-tunnisteella!

    Kirjoita luokka ListaApuri, jossa on seuraavat kaksi luokkametodia:

      \n
    • Metodi suurin_frekvenssi(lista: list) palauttaa alkion, jota esiintyy annetussa listassa eniten
    • \n
    • Metodi tuplia(lista: list) palauttaa sellaisten alkioden lukumäärän, jotka esiintyvät listassa vähintään kahdesti
    • \n

    Metodeja tulee voida käyttää ilman, että luokasta luodaan oliota. Esimerkki luokan käytöstä:

    luvut = [1, 1, 2, 1, 3, 3, 4, 5, 5, 5, 6, 5, 5, 5]\nprint(ListaApuri.suurin_frekvenssi(luvut))\nprint(ListaApuri.tuplia(luvut))

    5\n3

    ","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/5-staattiset-piirteet.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/6-lisaa-esimerkkeja/page-data.json b/page-data/osa-9/6-lisaa-esimerkkeja/page-data.json index a3e81dc34..7265383ca 100644 --- a/page-data/osa-9/6-lisaa-esimerkkeja/page-data.json +++ b/page-data/osa-9/6-lisaa-esimerkkeja/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-content-template-js", "path": "/osa-9/6-lisaa-esimerkkeja", - "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet lisää esimerkkejä luokista ja olioista"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää parametrien oletusarvoja metodeissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaksi esimerkkiä, joka muodostuu kahdesta luokasta. Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Piste"}]},{"type":"text","value":" mallintaa yhtä pistettä kaksiulotteisessa koordinaatistossa ja luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Jana"}]},{"type":"text","value":" kahden pisteen välistä janaa. Luokkien toiminta on kommentoitu koodiin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Piste"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa pistettä kaksiulotteisessa koordinaatistossa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutit ovat julkisia, koska mitkä tahansa arvot käyvät x:n ja y:n arvoiksi"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" x\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" y\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokkametodi palauttaa uuden pisteen paikassa (0, 0)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Huomaa, että luokan sisältä voi palauttaa olion luokasta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"origo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cls"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokkametodi muodostaa uuden pisteen annetun pisteen perusteella"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Uusi piste on peilikuva annetusta pisteestä jommankumman tai molempien akselien suhteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkiksi pisteen (1, 3) peilikuva x-akselin suhteen on (1, -3)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"peilikuva"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cls"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" peilaa_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"bool"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" peilaa_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"bool"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" peilaa_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"y\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" peilaa_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Jana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa janaa kaksiulotteisessa koordinaatistossa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutit ovat julkisia, koska mitkä tahansa pisteet kelpaavat"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" loppu\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi laskee janan pituuden Pythagoraan lauseella"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pituus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa janan keskipisteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"keskipiste"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n keskix "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n keskiy "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"keskix"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keskiy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ... "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\norigo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"origo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"origo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npiste2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"peilikuva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\njana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"keskipiste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(1, 3)\n(0, 0)\n(-1, -3)\n6.324555320336759\n(0.0, 0.0)\n(1, 3) ... (-1, -3)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"parametrien-oletusarvot","style":"position:relative;"},"children":[{"type":"text","value":"Parametrien oletusarvot"},{"type":"element","tagName":"a","properties":{"href":"#parametrien-oletusarvot","ariaLabel":"parametrien oletusarvot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa mille tahansa parametrille voidaan asettaa oletusarvo. Oletusarvoja voidaan käyttää sekä funktioiden että metodien parametreissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos parametrille on annettu oletusarvo, sille ei ole pakko antaa arvoa kutsuttaessa. Jos arvo annetaan, se syrjäyttää oletusarvon, ja jos arvoa ei anneta, käytetään oletusarvoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvot ovat usein hyödyllisiä konstruktoreissa: jos on oletettavaa, ettei tiettyä tietoa ole aina olemassa oliota luodessa, on parempi antaa sille vakioarvo konstruktorissa kuin antaa tämä asiakkaan huoleksi. Tämä on asiakkaalle helpompaa ja myös ylläpitää olion sisäistä eheyttä, kun voidaan esimerkiksi olla varmoja, että \"tyhjä\" arvo on aina samanlainen (muuten se voisi olla esimerkiksi merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":", arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":" tai merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"ei asetettu\""}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä luokkaa, joka mallintaa opiskelijaa. Pakollisia kenttiä luodessa ovat opiskelijanumero ja nimi ja näistä opiskelijanumeroa ei pysty myöhemmin muuttamaan. Opintopisteet ja muistiinpanot voi halutessaan antaa oliota luodessa, mutta niille on myös asetettu oletusarvot. Luokan toiminta on kommentoitu suoraan ohjelmakoodin yhteyteen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Mallintaa yhtä opiskelijaa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kutsuu asetusmetodia"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opiskelijanumerossa tulee olla vähintään 5 merkkiä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsuu asetusmetodia"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" muistiinpanot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi ei voi olla tyhjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"opiskelijanumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"opintopisteet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opintopisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"opintopisteet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" op"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" op "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" op\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteet ei voi olla negatiivinen luku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" muistiinpanot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"yhteenveto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Opiskelija "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"):\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"- opintopisteitä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"- muistiinpanot: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan pelkkä nimi ja op.nro"}]},{"type":"text","value":"\nopiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan nimi, op.nro ja opintopisteet"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"54321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan kaikki tiedot"}]},{"type":"text","value":"\nopiskelija3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olavi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"99999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"140"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lisäaika tentissä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Ei anneta opintopisteitä, mutta annetaan muistiinpanot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Huomaa, että parametri pitää nyt nimetä, kun järjestys eroaa tavallisesta"}]},{"type":"text","value":"\nopiskelija4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onerva Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"98765\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"poissaoleva lukuvuonna 20-21\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Olli Opiskelija (12345):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot:"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Outi Opiskelija (54321):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot:"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Olavi Opiskelija (99999):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 140"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot: lisäaika tentissä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Onerva Opiskelija (98765):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot: poissaoleva lukuvuonna 20-21"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että attribuutille opiskelijanumero ei ole määritelty asetusmetodia, koska ideana on, että opiskelijanumero ei voi muuttua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametrien oletusarvojen käyttöön liittyy kuitenkin eräs huomattavan iso \"mutta\" joka ilmenee seuraavasti esimerkistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tehdyt_kurssit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Ohpe', 'Tira']\n['Ohpe', 'Tira']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomataan siis, että kurssisuorituksen lisääminen Ollille muuttaa myös Outin kurssisuorituksia. Ilmiö johtuu siitä, että Python uudelleenkäyttää oletusarvoa. Yllä oleva tapa luoda opiskelijat vastaa siis seuraavaa koodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nopiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tästä johtuen parametrin oletusarvona ei koskaan tulisi käyttää monimutkaisempia tietorakenteita kuten listoja. Korjattu versio luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" konstruktorista on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tehdyt_kurssit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Ohpe', 'Tira']\n[]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"loppuhuipennus","style":"position:relative;"},"children":[{"type":"text","value":"Loppuhuipennus"},{"type":"element","tagName":"a","properties":{"href":"#loppuhuipennus","ariaLabel":"loppuhuipennus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka seuraava tehtävä on tässä luvussa, et tarvitse tehtävän ratkaisemiseen mitään muuta kun luvussa "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/2-oliot-attribuuttina"},"children":[{"type":"text","value":"Oliot attribuuttina"}]},{"type":"text","value":" esiteltyjä tekniikoita. Tehtävä on käytännössä hyvin samanlainen kuin tuon luvun tehtävät "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/2-oliot-attribuuttina#programming-exercise-lahjapakkaus"},"children":[{"type":"text","value":"lahjapakkaus"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/2-oliot-attribuuttina#programming-exercise-huoneen-lyhin"},"children":[{"type":"text","value":"huoneen lyhin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tavara, Matkalaukku ja Lastiruuma","tmcname":"osa09-15_tavara_matkalaukku_lastiruuma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtäväsarjassa tehdään luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tavara"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Matkalaukku"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lastiruuma"}]},{"type":"text","value":", joiden avulla harjoitellaan lisää olioita, jotka sisältävät toisia olioita."}]},{"type":"element","tagName":"h2","properties":{"id":"tavara-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Tavara-luokka"},{"type":"element","tagName":"a","properties":{"href":"#tavara-luokka","ariaLabel":"tavara luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tavara"}]},{"type":"text","value":", josta muodostetut oliot vastaavat erilaisia tavaroita. Tallennettavat tiedot ovat tavaran nimi ja paino (kg)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee toimia seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirjan nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirjan paino:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirja:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Puhelin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjan nimi: Aapiskukko\nKirjan paino: 2\nKirja: Aapiskukko (2 kg)\nPuhelin: Nokia 3210 (1 kg)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tavaralla on siis metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paino"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" jotka palauttavat tavaran tiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee tallentaa tieto nimestä ja painosta kapseloituna, eli seuraava ei saa onnistua:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"matkalaukku-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Matkalaukku-luokka"},{"type":"element","tagName":"a","properties":{"href":"#matkalaukku-luokka","ariaLabel":"matkalaukku luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Matkalaukku"}]},{"type":"text","value":". Matkalaukkuun liittyy tavaroita ja maksimipaino, joka määrittelee tavaroiden suurimman mahdollisen yhteispainon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan seuraavat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, jolle annetaan maksimipaino"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_tavara"}]},{"type":"text","value":", joka lisää parametrina annettavan tavaran matkalaukkuun. Metodi ei palauta mitään arvoa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa merkkijonon muotoa \"x tavaraa (y kg)\""}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee valvoa, että sen sisältämien tavaroiden yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi lisättävän tavaran vuoksi, metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_tavara"}]},{"type":"text","value":" ei saa lisätä uutta tavaraa laukkuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0 tavaraa (0 kg)\n1 tavaraa (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kielenhuoltoa","style":"position:relative;"},"children":[{"type":"text","value":"Kielenhuoltoa"},{"type":"element","tagName":"a","properties":{"href":"#kielenhuoltoa","ariaLabel":"kielenhuoltoa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ilmoitus \"1 tavaraa\" ei ole kovin hyvää suomea, vaan olisi parempi sanoa \"1 tavara\". Tee tämä muutos luokassa sijaitsevaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":"-metodiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt edellisen ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0 tavaraa (0 kg)\n1 tavara (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kaikki-tavarat","style":"position:relative;"},"children":[{"type":"text","value":"Kaikki tavarat"},{"type":"element","tagName":"a","properties":{"href":"#kaikki-tavarat","ariaLabel":"kaikki tavarat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_tavarat"}]},{"type":"text","value":", joka tulostaa kaikki matkalaukussa olevat tavarat"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paino"}]},{"type":"text","value":", joka palauttaa matkalaukun yhteispainoa kuvaavan kokonaisluvun, joka on sen sisältävien tavaroiden painojen summa"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matkalaukussa on seuraavat tavarat:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tavarat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaino_yht "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Yhteispaino: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"paino_yht"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matkalaukussa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)\nYhteispaino: 7 kg"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muokkaa myös luokkaasi siten, että käytät vain kahta oliomuuttujaa. Toinen sisältää maksimipainon, toinen on lista laukussa olevista tavaroista."}]},{"type":"element","tagName":"h2","properties":{"id":"raskain-tavara","style":"position:relative;"},"children":[{"type":"text","value":"Raskain tavara"},{"type":"element","tagName":"a","properties":{"href":"#raskain-tavara","ariaLabel":"raskain tavara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää vielä luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"raskain_tavara"}]},{"type":"text","value":", joka palauttaa painoltaan suurimman tavaran. Jos yhtä raskaita tavaroita on useita, metodi voi palauttaa minkä tahansa niistä. Metodin tulee palauttaa olioviite. Jos laukku on tyhjä, palauta arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nraskain "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"raskain_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Raskain tavara: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"raskain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Raskain tavara: Tiiliskivi (4 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lastiruuma-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Lastiruuma-luokka"},{"type":"element","tagName":"a","properties":{"href":"#lastiruuma-luokka","ariaLabel":"lastiruuma luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lastiruuma"}]},{"type":"text","value":", johon liittyvät seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, jolle annetaan maksimipaino"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_matkalaukku"}]},{"type":"text","value":", joka lisää parametrina annetun matkalaukun lastiruumaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa merkkijonon muotoa \"x matkalaukkua, tilaa y kg\""}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee valvoa, että sen matkalaukkujen yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi uuden matkalaukun vuoksi, metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_matkalaukku"}]},{"type":"text","value":" ei saa lisätä uutta matkalaukkua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lastiruuma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nadan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npekan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"adan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0 matkalaukkua, tilaa 1000 kg\n1 matkalaukku, tilaa 997 kg\n2 matkalaukkua, tilaa 993 kg"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lastiruuman-sisalto","style":"position:relative;"},"children":[{"type":"text","value":"Lastiruuman sisältö"},{"type":"element","tagName":"a","properties":{"href":"#lastiruuman-sisalto","ariaLabel":"lastiruuman sisalto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_tavarat"}]},{"type":"text","value":", joka tulostaa kaikki lastiruuman matkalaukuissa olevat tavarat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nadan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npekan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlastiruuma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"adan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruuman matkalaukuissa on seuraavat tavarat:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tavarat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ruuman matkalaukuissa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet lisää esimerkkejä luokista ja olioista
    • \n
    • Osaat käyttää parametrien oletusarvoja metodeissa
    • \n

    Tarkastellaan seuraavaksi esimerkkiä, joka muodostuu kahdesta luokasta. Luokka Piste mallintaa yhtä pistettä kaksiulotteisessa koordinaatistossa ja luokka Jana kahden pisteen välistä janaa. Luokkien toiminta on kommentoitu koodiin.

    import math\n\nclass Piste:\n    \"\"\" Luokka mallintaa pistettä kaksiulotteisessa koordinaatistossa \"\"\"\n\n    def __init__(self, x: float, y: float):\n        # Attribuutit ovat julkisia, koska mitkä tahansa arvot käyvät x:n ja y:n arvoiksi\n        self.x = x\n        self.y = y\n\n    # Luokkametodi palauttaa uuden pisteen paikassa (0, 0)\n    # Huomaa, että luokan sisältä voi palauttaa olion luokasta\n    @classmethod\n    def origo(cls):\n        return Piste(0, 0)\n\n    # Luokkametodi muodostaa uuden pisteen annetun pisteen perusteella\n    # Uusi piste on peilikuva annetusta pisteestä jommankumman tai molempien akselien suhteen\n    # Esimerkiksi pisteen (1, 3) peilikuva x-akselin suhteen on (1, -3)\n    @classmethod\n    def peilikuva(cls, piste, peilaa_x: bool, peilaa_y: bool):\n        x = piste.x\n        y = piste.y\n        if peilaa_x:\n            y = -y\n        if peilaa_y:\n            x = -x\n\n        return Piste(x, y)\n\n    def __str__(self):\n        return f\"({self.x}, {self.y})\"\n\nclass Jana:\n    \"\"\" Luokka mallintaa janaa kaksiulotteisessa koordinaatistossa \"\"\"\n\n    def __init__(self, alku: Piste, loppu: Piste):\n        # Attribuutit ovat julkisia, koska mitkä tahansa pisteet kelpaavat\n        self.alku = alku\n        self.loppu = loppu\n\n    # Metodi laskee janan pituuden Pythagoraan lauseella\n    def pituus(self):\n        summa = (self.loppu.x - self.alku.x) ** 2 + (self.loppu.y - self.alku.y) ** 2\n        return math.sqrt(summa)\n\n    # Metodi palauttaa janan keskipisteen\n    def keskipiste(self):\n        keskix = (self.alku.x + self.loppu.x) / 2\n        keskiy = (self.alku.y + self.loppu.y) / 2\n        return Piste(keskix, keskiy)\n\n    def __str__(self):\n        return f\"{self.alku} ... {self.loppu}\"
    piste = Piste(1,3)\nprint(piste)\n\norigo = Piste.origo()\nprint(origo)\n\npiste2 = Piste.peilikuva(piste, True, True)\nprint(piste2)\n\njana = Jana(piste, piste2)\nprint(jana.pituus())\nprint(jana.keskipiste())\nprint(jana)

    (1, 3)\n(0, 0)\n(-1, -3)\n6.324555320336759\n(0.0, 0.0)\n(1, 3) ... (-1, -3)

    Parametrien oletusarvot

    Pythonissa mille tahansa parametrille voidaan asettaa oletusarvo. Oletusarvoja voidaan käyttää sekä funktioiden että metodien parametreissa.

    Jos parametrille on annettu oletusarvo, sille ei ole pakko antaa arvoa kutsuttaessa. Jos arvo annetaan, se syrjäyttää oletusarvon, ja jos arvoa ei anneta, käytetään oletusarvoa.

    Oletusarvot ovat usein hyödyllisiä konstruktoreissa: jos on oletettavaa, ettei tiettyä tietoa ole aina olemassa oliota luodessa, on parempi antaa sille vakioarvo konstruktorissa kuin antaa tämä asiakkaan huoleksi. Tämä on asiakkaalle helpompaa ja myös ylläpitää olion sisäistä eheyttä, kun voidaan esimerkiksi olla varmoja, että \"tyhjä\" arvo on aina samanlainen (muuten se voisi olla esimerkiksi merkkijono \"\", arvo None tai merkkijono \"ei asetettu\").

    Tarkastellaan esimerkkinä luokkaa, joka mallintaa opiskelijaa. Pakollisia kenttiä luodessa ovat opiskelijanumero ja nimi ja näistä opiskelijanumeroa ei pysty myöhemmin muuttamaan. Opintopisteet ja muistiinpanot voi halutessaan antaa oliota luodessa, mutta niille on myös asetettu oletusarvot. Luokan toiminta on kommentoitu suoraan ohjelmakoodin yhteyteen.

    class Opiskelija:\n    \"\"\" Mallintaa yhtä opiskelijaa \"\"\"\n\n    def __init__(self, nimi: str, opiskelijanumero: str, opintopisteet:int = 0, muistiinpanot:str = \"\"):\n        # kutsuu asetusmetodia\n        self.nimi = nimi\n\n        if len(opiskelijanumero) < 5:\n            raise ValueError(\"Opiskelijanumerossa tulee olla vähintään 5 merkkiä\")\n\n        self.__opiskelijanumero = opiskelijanumero\n\n        # Kutsuu asetusmetodia\n        self.opintopisteet = opintopisteet\n\n        self.__muistiinpanot = muistiinpanot\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    @nimi.setter\n    def nimi(self, nimi):\n        if nimi != \"\":\n            self.__nimi = nimi\n        else:\n            raise ValueError(\"Nimi ei voi olla tyhjä\")\n\n    @property\n    def opiskelijanumero(self):\n        return self.__opiskelijanumero\n\n    @property\n    def opintopisteet(self):\n        return self.__opintopisteet\n\n    @opintopisteet.setter\n    def opintopisteet(self, op):\n        if op >= 0:\n            self.__opintopisteet = op\n        else:\n            raise ValueError(\"Opintopisteet ei voi olla negatiivinen luku\")\n\n    @property\n    def muistiinpanot(self):\n        return self.__muistiinpanot\n\n    @muistiinpanot.setter\n    def muistiinpanot(self, muistiinpanot):\n        self.__muistiinpanot = muistiinpanot\n\n    def yhteenveto(self):\n        print(f\"Opiskelija {self.__nimi} ({self.opiskelijanumero}):\")\n        print(f\"- opintopisteitä {self.__opintopisteet}\")\n        print(f\"- muistiinpanot: {self.muistiinpanot}\")
    # Annetaan pelkkä nimi ja op.nro\nopiskelija1 = Opiskelija(\"Olli Opiskelija\", \"12345\")\nopiskelija1.yhteenveto()\n\n# Annetaan nimi, op.nro ja opintopisteet\nopiskelija2 = Opiskelija(\"Outi Opiskelija\", \"54321\", 25)\nopiskelija2.yhteenveto()\n\n# Annetaan kaikki tiedot\nopiskelija3 = Opiskelija(\"Olavi Opiskelija\", \"99999\", 140, \"lisäaika tentissä\")\nopiskelija3.yhteenveto()\n\n# Ei anneta opintopisteitä, mutta annetaan muistiinpanot\n# Huomaa, että parametri pitää nyt nimetä, kun järjestys eroaa tavallisesta\nopiskelija4 = Opiskelija(\"Onerva Opiskelija\", \"98765\", muistiinpanot=\"poissaoleva lukuvuonna 20-21\")\nopiskelija4.yhteenveto()

    Opiskelija Olli Opiskelija (12345):

      \n
    • opintopisteitä 0
    • \n
    • muistiinpanot:
    • \n

    Opiskelija Outi Opiskelija (54321):

      \n
    • opintopisteitä 25
    • \n
    • muistiinpanot:
    • \n

    Opiskelija Olavi Opiskelija (99999):

      \n
    • opintopisteitä 140
    • \n
    • muistiinpanot: lisäaika tentissä
    • \n

    Opiskelija Onerva Opiskelija (98765):

      \n
    • opintopisteitä 0
    • \n
    • muistiinpanot: poissaoleva lukuvuonna 20-21
    • \n

    Huomaa, että attribuutille opiskelijanumero ei ole määritelty asetusmetodia, koska ideana on, että opiskelijanumero ei voi muuttua.

    Parametrien oletusarvojen käyttöön liittyy kuitenkin eräs huomattavan iso \"mutta\" joka ilmenee seuraavasti esimerkistä:

    class Opiskelija:\n    def __init__(self, nimi, tehdyt_kurssit=[]):\n        self.nimi = nimi\n        self.tehdyt_kurssit = tehdyt_kurssit\n\n    def lisaa_suoritus(self, kurssi):\n        self.tehdyt_kurssit.append(kurssi)
    opiskelija1 = Opiskelija(\"Olli Opiskelija\")\nopiskelija2 = Opiskelija(\"Outi Opiskelija\")\n\nopiskelija1.lisaa_suoritus(\"Ohpe\")\nopiskelija1.lisaa_suoritus(\"Tira\")\n\nprint(opiskelija1.tehdyt_kurssit)\nprint(opiskelija2.tehdyt_kurssit)

    ['Ohpe', 'Tira']\n['Ohpe', 'Tira']

    Huomataan siis, että kurssisuorituksen lisääminen Ollille muuttaa myös Outin kurssisuorituksia. Ilmiö johtuu siitä, että Python uudelleenkäyttää oletusarvoa. Yllä oleva tapa luoda opiskelijat vastaa siis seuraavaa koodia:

    kurssit = []\nopiskelija1 = Opiskelija(\"Olli Opiskelija\", kurssit)\nopiskelija2 = Opiskelija(\"Outi Opiskelija\", kurssit)

    Tästä johtuen parametrin oletusarvona ei koskaan tulisi käyttää monimutkaisempia tietorakenteita kuten listoja. Korjattu versio luokan Opiskelija konstruktorista on seuraava:

    class Opiskelija:\n    def __init__(self, nimi, tehdyt_kurssit=None):\n        self.nimi = nimi\n        if tehdyt_kurssit is None:\n            self.tehdyt_kurssit = []\n        else:\n            self.tehdyt_kurssit = tehdyt_kurssit\n\n    def lisaa_suoritus(self, kurssi):\n        self.tehdyt_kurssit.append(kurssi)
    opiskelija1 = Opiskelija(\"Olli Opiskelija\")\nopiskelija2 = Opiskelija(\"Outi Opiskelija\")\n\nopiskelija1.lisaa_suoritus(\"Ohpe\")\nopiskelija1.lisaa_suoritus(\"Tira\")\n\nprint(opiskelija1.tehdyt_kurssit)\nprint(opiskelija2.tehdyt_kurssit)

    ['Ohpe', 'Tira']\n[]

    Loppuhuipennus

    Vaikka seuraava tehtävä on tässä luvussa, et tarvitse tehtävän ratkaisemiseen mitään muuta kun luvussa Oliot attribuuttina esiteltyjä tekniikoita. Tehtävä on käytännössä hyvin samanlainen kuin tuon luvun tehtävät lahjapakkaus ja huoneen lyhin.

    Tässä tehtäväsarjassa tehdään luokat Tavara, Matkalaukku ja Lastiruuma, joiden avulla harjoitellaan lisää olioita, jotka sisältävät toisia olioita.

    Tavara-luokka

    Tee luokka Tavara, josta muodostetut oliot vastaavat erilaisia tavaroita. Tallennettavat tiedot ovat tavaran nimi ja paino (kg).

    Luokan tulee toimia seuraavasti

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\n\nprint(\"Kirjan nimi:\", kirja.nimi())\nprint(\"Kirjan paino:\", kirja.paino())\n\nprint(\"Kirja:\", kirja)\nprint(\"Puhelin:\", puhelin)

    Ohjelman tulostuksen tulisi olla seuraava:

    Kirjan nimi: Aapiskukko\nKirjan paino: 2\nKirja: Aapiskukko (2 kg)\nPuhelin: Nokia 3210 (1 kg)

    Tavaralla on siis metodit paino ja nimi jotka palauttavat tavaran tiedot.

    Luokan tulee tallentaa tieto nimestä ja painosta kapseloituna, eli seuraava ei saa onnistua:

    kirja = Tavara(\"Aapiskukko\", 2)\nkirja.paino = 10

    Matkalaukku-luokka

    Tee luokka Matkalaukku. Matkalaukkuun liittyy tavaroita ja maksimipaino, joka määrittelee tavaroiden suurimman mahdollisen yhteispainon.

    Lisää luokkaan seuraavat:

      \n
    • konstruktori, jolle annetaan maksimipaino
    • \n
    • metodi lisaa_tavara, joka lisää parametrina annettavan tavaran matkalaukkuun. Metodi ei palauta mitään arvoa.
    • \n
    • metodi __str__, joka palauttaa merkkijonon muotoa \"x tavaraa (y kg)\"
    • \n

    Luokan tulee valvoa, että sen sisältämien tavaroiden yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi lisättävän tavaran vuoksi, metodi lisaa_tavara ei saa lisätä uutta tavaraa laukkuun.

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nmatkalaukku = Matkalaukku(5)\nprint(matkalaukku)\n\nmatkalaukku.lisaa_tavara(kirja)\nprint(matkalaukku)\n\nmatkalaukku.lisaa_tavara(puhelin)\nprint(matkalaukku)\n\nmatkalaukku.lisaa_tavara(tiiliskivi)\nprint(matkalaukku)

    Ohjelman tulostuksen tulisi olla seuraava:

    0 tavaraa (0 kg)\n1 tavaraa (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)

    Kielenhuoltoa

    Ilmoitus \"1 tavaraa\" ei ole kovin hyvää suomea, vaan olisi parempi sanoa \"1 tavara\". Tee tämä muutos luokassa sijaitsevaan __str__-metodiin.

    Nyt edellisen ohjelman tulostuksen tulisi olla seuraava:

    0 tavaraa (0 kg)\n1 tavara (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)

    Kaikki tavarat

    Lisää luokkaan seuraavat metodit:

      \n
    • tulosta_tavarat, joka tulostaa kaikki matkalaukussa olevat tavarat
    • \n
    • paino, joka palauttaa matkalaukun yhteispainoa kuvaavan kokonaisluvun, joka on sen sisältävien tavaroiden painojen summa
    • \n

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nmatkalaukku = Matkalaukku(10)\nmatkalaukku.lisaa_tavara(kirja)\nmatkalaukku.lisaa_tavara(puhelin)\nmatkalaukku.lisaa_tavara(tiiliskivi)\n\nprint(\"Matkalaukussa on seuraavat tavarat:\")\nmatkalaukku.tulosta_tavarat()\npaino_yht = matkalaukku.paino()\nprint(f\"Yhteispaino: {paino_yht} kg\")

    Ohjelman tulostuksen tulisi olla seuraava:

    Matkalaukussa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)\nYhteispaino: 7 kg

    Muokkaa myös luokkaasi siten, että käytät vain kahta oliomuuttujaa. Toinen sisältää maksimipainon, toinen on lista laukussa olevista tavaroista.

    Raskain tavara

    Lisää vielä luokkaan metodi raskain_tavara, joka palauttaa painoltaan suurimman tavaran. Jos yhtä raskaita tavaroita on useita, metodi voi palauttaa minkä tahansa niistä. Metodin tulee palauttaa olioviite. Jos laukku on tyhjä, palauta arvo None.

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nmatkalaukku = Matkalaukku(10)\nmatkalaukku.lisaa_tavara(kirja)\nmatkalaukku.lisaa_tavara(puhelin)\nmatkalaukku.lisaa_tavara(tiiliskivi)\n\nraskain = matkalaukku.raskain_tavara()\nprint(f\"Raskain tavara: {raskain}\")

    Ohjelman tulostuksen tulisi olla seuraava:

    Raskain tavara: Tiiliskivi (4 kg)

    Lastiruuma-luokka

    Tee luokka Lastiruuma, johon liittyvät seuraavat metodit:

      \n
    • konstruktori, jolle annetaan maksimipaino
    • \n
    • metodi lisaa_matkalaukku, joka lisää parametrina annetun matkalaukun lastiruumaan
    • \n
    • metodi __str__, joka palauttaa merkkijonon muotoa \"x matkalaukkua, tilaa y kg\"
    • \n

    Luokan tulee valvoa, että sen matkalaukkujen yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi uuden matkalaukun vuoksi, metodi lisaa_matkalaukku ei saa lisätä uutta matkalaukkua.

    Seuraavassa on luokan käyttöesimerkki:

    lastiruuma = Lastiruuma(1000)\nprint(lastiruuma)\n\nkirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nadan_laukku = Matkalaukku(10)\nadan_laukku.lisaa_tavara(kirja)\nadan_laukku.lisaa_tavara(puhelin)\n\npekan_laukku = Matkalaukku(10)\npekan_laukku.lisaa_tavara(tiiliskivi)\n\nlastiruuma.lisaa_matkalaukku(adan_laukku)\nprint(lastiruuma)\n\nlastiruuma.lisaa_matkalaukku(pekan_laukku)\nprint(lastiruuma)

    0 matkalaukkua, tilaa 1000 kg\n1 matkalaukku, tilaa 997 kg\n2 matkalaukkua, tilaa 993 kg

    Lastiruuman sisältö

    Lisää luokkaan metodi tulosta_tavarat, joka tulostaa kaikki lastiruuman matkalaukuissa olevat tavarat.

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nadan_laukku = Matkalaukku(10)\nadan_laukku.lisaa_tavara(kirja)\nadan_laukku.lisaa_tavara(puhelin)\n\npekan_laukku = Matkalaukku(10)\npekan_laukku.lisaa_tavara(tiiliskivi)\n\nlastiruuma = Lastiruuma(1000)\nlastiruuma.lisaa_matkalaukku(adan_laukku)\nlastiruuma.lisaa_matkalaukku(pekan_laukku)\n\nprint(\"Ruuman matkalaukuissa on seuraavat tavarat:\")\nlastiruuma.tulosta_tavarat()

    Ohjelman tulostuksen tulisi olla seuraava:

    Ruuman matkalaukuissa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/6-lisaa-esimerkkeja.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"text-box","properties":{"variant":"learningObjectives","name":"Oppimistavoitteet"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tämän osion jälkeen"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Tunnet lisää esimerkkejä luokista ja olioista"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Osaat käyttää parametrien oletusarvoja metodeissa"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan seuraavaksi esimerkkiä, joka muodostuu kahdesta luokasta. Luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Piste"}]},{"type":"text","value":" mallintaa yhtä pistettä kaksiulotteisessa koordinaatistossa ja luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Jana"}]},{"type":"text","value":" kahden pisteen välistä janaa. Luokkien toiminta on kommentoitu koodiin."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"import"}]},{"type":"text","value":" math\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Piste"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa pistettä kaksiulotteisessa koordinaatistossa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"float"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutit ovat julkisia, koska mitkä tahansa arvot käyvät x:n ja y:n arvoiksi"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" x\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" y\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokkametodi palauttaa uuden pisteen paikassa (0, 0)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Huomaa, että luokan sisältä voi palauttaa olion luokasta"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"origo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cls"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Luokkametodi muodostaa uuden pisteen annetun pisteen perusteella"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Uusi piste on peilikuva annetusta pisteestä jommankumman tai molempien akselien suhteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Esimerkiksi pisteen (1, 3) peilikuva x-akselin suhteen on (1, -3)"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@classmethod"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"peilikuva"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"cls"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" peilaa_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"bool"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" peilaa_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"bool"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" peilaa_x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"y\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" peilaa_y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":"x\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":", "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":")\""}]}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Jana"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Luokka mallintaa janaa kaksiulotteisessa koordinaatistossa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Attribuutit ovat julkisia, koska mitkä tahansa pisteet kelpaavat"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" alku\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" loppu\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi laskee janan pituuden Pythagoraan lauseella"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"pituus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n summa "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"-"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"**"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" math"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sqrt"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"summa"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Metodi palauttaa janan keskipisteen"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"keskipiste"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n keskix "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"x"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n keskiy "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"+"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"y"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"/"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"keskix"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" keskiy"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__str__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\""}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"alku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ... "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"loppu"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"piste "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"3"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\norigo "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"origo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"origo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npiste2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"peilikuva"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"True"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\njana "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"piste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" piste2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"pituus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"keskipiste"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"jana"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"(1, 3)\n(0, 0)\n(-1, -3)\n6.324555320336759\n(0.0, 0.0)\n(1, 3) ... (-1, -3)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"parametrien-oletusarvot","style":"position:relative;"},"children":[{"type":"text","value":"Parametrien oletusarvot"},{"type":"element","tagName":"a","properties":{"href":"#parametrien-oletusarvot","ariaLabel":"parametrien oletusarvot permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pythonissa mille tahansa parametrille voidaan asettaa oletusarvo. Oletusarvoja voidaan käyttää sekä funktioiden että metodien parametreissa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Jos parametrille on annettu oletusarvo, sille ei ole pakko antaa arvoa kutsuttaessa. Jos arvo annetaan, se syrjäyttää oletusarvon, ja jos arvoa ei anneta, käytetään oletusarvoa."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Oletusarvot ovat usein hyödyllisiä konstruktoreissa: jos on oletettavaa, ettei tiettyä tietoa ole aina olemassa oliota luodessa, on parempi antaa sille vakioarvo konstruktorissa kuin antaa tämä asiakkaan huoleksi. Tämä on asiakkaalle helpompaa ja myös ylläpitää olion sisäistä eheyttä, kun voidaan esimerkiksi olla varmoja, että \"tyhjä\" arvo on aina samanlainen (muuten se voisi olla esimerkiksi merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":", arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":" tai merkkijono "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"\"ei asetettu\""}]},{"type":"text","value":")."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tarkastellaan esimerkkinä luokkaa, joka mallintaa opiskelijaa. Pakollisia kenttiä luodessa ovat opiskelijanumero ja nimi ja näistä opiskelijanumeroa ei pysty myöhemmin muuttamaan. Opintopisteet ja muistiinpanot voi halutessaan antaa oliota luodessa, mutta niille on myös asetettu oletusarvot. Luokan toiminta on kommentoitu suoraan ohjelmakoodin yhteyteen."}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","triple-quoted-string","string"]},"children":[{"type":"text","value":"\"\"\" Mallintaa yhtä opiskelijaa \"\"\""}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"int"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"str"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# kutsuu asetusmetodia"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"len"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"<"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opiskelijanumerossa tulee olla vähintään 5 merkkiä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opiskelijanumero "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Kutsuu asetusmetodia"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" opintopisteet\n\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" muistiinpanot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"nimi"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"!="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nimi ei voi olla tyhjä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"opiskelijanumero"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opiskelijanumero\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"opintopisteet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opintopisteet\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"opintopisteet"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" op"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" op "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":">="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"0"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opintopisteet "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" op\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"raise"}]},{"type":"text","value":" ValueError"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Opintopisteet ei voi olla negatiivinen luku\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@property"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"return"}]},{"type":"text","value":" self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","decorator","annotation","punctuation"]},"children":[{"type":"text","value":"@muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"setter"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"muistiinpanot"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__muistiinpanot "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" muistiinpanot\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"yhteenveto"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Opiskelija "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" ("}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"opiskelijanumero"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"):\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"- opintopisteitä "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"__opintopisteet"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"- muistiinpanot: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan pelkkä nimi ja op.nro"}]},{"type":"text","value":"\nopiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"12345\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan nimi, op.nro ja opintopisteet"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"54321\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"25"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Annetaan kaikki tiedot"}]},{"type":"text","value":"\nopiskelija3 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olavi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"99999\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"140"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"lisäaika tentissä\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija3"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Ei anneta opintopisteitä, mutta annetaan muistiinpanot"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"# Huomaa, että parametri pitää nyt nimetä, kun järjestys eroaa tavallisesta"}]},{"type":"text","value":"\nopiskelija4 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Onerva Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"98765\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" muistiinpanot"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"poissaoleva lukuvuonna 20-21\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija4"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"yhteenveto"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Olli Opiskelija (12345):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot:"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Outi Opiskelija (54321):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 25"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot:"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Olavi Opiskelija (99999):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 140"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot: lisäaika tentissä"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Opiskelija Onerva Opiskelija (98765):"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"opintopisteitä 0"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"muistiinpanot: poissaoleva lukuvuonna 20-21"}]},{"type":"text","value":"\n"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomaa, että attribuutille opiskelijanumero ei ole määritelty asetusmetodia, koska ideana on, että opiskelijanumero ei voi muuttua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Parametrien oletusarvojen käyttöön liittyy kuitenkin eräs huomattavan iso \"mutta\" joka ilmenee seuraavasti esimerkistä:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tehdyt_kurssit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Ohpe', 'Tira']\n['Ohpe', 'Tira']"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Huomataan siis, että kurssisuorituksen lisääminen Ollille muuttaa myös Outin kurssisuorituksia. Ilmiö johtuu siitä, että Python uudelleenkäyttää oletusarvoa. Yllä oleva tapa luoda opiskelijat vastaa siis seuraavaa koodia:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\nopiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tästä johtuen parametrin oletusarvona ei koskaan tulisi käyttää monimutkaisempia tietorakenteita kuten listoja. Korjattu versio luokan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"text","value":" konstruktorista on seuraava:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"class"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","class-name"]},"children":[{"type":"text","value":"Opiskelija"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"__init__"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" nimi\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"if"}]},{"type":"text","value":" tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"is"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","boolean"]},"children":[{"type":"text","value":"None"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":"\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"else"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" tehdyt_kurssit\n\n "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"def"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"lisaa_suoritus"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":"\n self"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"append"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kurssi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"opiskelija1 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Olli Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija2 "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Opiskelija"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Outi Opiskelija\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ohpe\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nopiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_suoritus"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tira\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija1"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"opiskelija2"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tehdyt_kurssit"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"['Ohpe', 'Tira']\n[]"}]}]},{"type":"element","tagName":"h2","properties":{"id":"loppuhuipennus","style":"position:relative;"},"children":[{"type":"text","value":"Loppuhuipennus"},{"type":"element","tagName":"a","properties":{"href":"#loppuhuipennus","ariaLabel":"loppuhuipennus permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vaikka seuraava tehtävä on tässä luvussa, et tarvitse tehtävän ratkaisemiseen mitään muuta kun luvussa "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/2-oliot-attribuuttina"},"children":[{"type":"text","value":"Oliot attribuuttina"}]},{"type":"text","value":" esiteltyjä tekniikoita. Tehtävä on käytännössä hyvin samanlainen kuin tuon luvun tehtävät "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/2-oliot-attribuuttina#programming-exercise-lahjapakkaus"},"children":[{"type":"text","value":"lahjapakkaus"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"a","properties":{"href":"/osa-9/2-oliot-attribuuttina#programming-exercise-huoneen-lyhin"},"children":[{"type":"text","value":"huoneen lyhin"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"programming-exercise","properties":{"name":"Tavara, Matkalaukku ja Lastiruuma","tmcname":"osa09-15_tavara_matkalaukku_lastiruuma"},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tässä tehtäväsarjassa tehdään luokat "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tavara"}]},{"type":"text","value":", "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Matkalaukku"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lastiruuma"}]},{"type":"text","value":", joiden avulla harjoitellaan lisää olioita, jotka sisältävät toisia olioita."}]},{"type":"element","tagName":"h2","properties":{"id":"tavara-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Tavara-luokka"},{"type":"element","tagName":"a","properties":{"href":"#tavara-luokka","ariaLabel":"tavara luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Tavara"}]},{"type":"text","value":", josta muodostetut oliot vastaavat erilaisia tavaroita. Tallennettavat tiedot ovat tavaran nimi ja paino (kg)."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee toimia seuraavasti"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirjan nimi:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"nimi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirjan paino:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Kirja:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Puhelin:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Kirjan nimi: Aapiskukko\nKirjan paino: 2\nKirja: Aapiskukko (2 kg)\nPuhelin: Nokia 3210 (1 kg)"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tavaralla on siis metodit "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paino"}]},{"type":"text","value":" ja "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"nimi"}]},{"type":"text","value":" jotka palauttavat tavaran tiedot."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee tallentaa tieto nimestä ja painosta kapseloituna, eli seuraava ei saa onnistua:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nkirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]}]}]}]},{"type":"element","tagName":"h2","properties":{"id":"matkalaukku-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Matkalaukku-luokka"},{"type":"element","tagName":"a","properties":{"href":"#matkalaukku-luokka","ariaLabel":"matkalaukku luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Matkalaukku"}]},{"type":"text","value":". Matkalaukkuun liittyy tavaroita ja maksimipaino, joka määrittelee tavaroiden suurimman mahdollisen yhteispainon."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan seuraavat:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, jolle annetaan maksimipaino"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_tavara"}]},{"type":"text","value":", joka lisää parametrina annettavan tavaran matkalaukkuun. Metodi ei palauta mitään arvoa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa merkkijonon muotoa \"x tavaraa (y kg)\""}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee valvoa, että sen sisältämien tavaroiden yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi lisättävän tavaran vuoksi, metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_tavara"}]},{"type":"text","value":" ei saa lisätä uutta tavaraa laukkuun."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"5"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0 tavaraa (0 kg)\n1 tavaraa (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kielenhuoltoa","style":"position:relative;"},"children":[{"type":"text","value":"Kielenhuoltoa"},{"type":"element","tagName":"a","properties":{"href":"#kielenhuoltoa","ariaLabel":"kielenhuoltoa permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ilmoitus \"1 tavaraa\" ei ole kovin hyvää suomea, vaan olisi parempi sanoa \"1 tavara\". Tee tämä muutos luokassa sijaitsevaan "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":"-metodiin."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Nyt edellisen ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0 tavaraa (0 kg)\n1 tavara (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"kaikki-tavarat","style":"position:relative;"},"children":[{"type":"text","value":"Kaikki tavarat"},{"type":"element","tagName":"a","properties":{"href":"#kaikki-tavarat","ariaLabel":"kaikki tavarat permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_tavarat"}]},{"type":"text","value":", joka tulostaa kaikki matkalaukussa olevat tavarat"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"paino"}]},{"type":"text","value":", joka palauttaa matkalaukun yhteispainoa kuvaavan kokonaisluvun, joka on sen sisältävien tavaroiden painojen summa"}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Matkalaukussa on seuraavat tavarat:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tavarat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npaino_yht "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"paino"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Yhteispaino: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"paino_yht"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":" kg\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Matkalaukussa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)\nYhteispaino: 7 kg"}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Muokkaa myös luokkaasi siten, että käytät vain kahta oliomuuttujaa. Toinen sisältää maksimipainon, toinen on lista laukussa olevista tavaroista."}]},{"type":"element","tagName":"h2","properties":{"id":"raskain-tavara","style":"position:relative;"},"children":[{"type":"text","value":"Raskain tavara"},{"type":"element","tagName":"a","properties":{"href":"#raskain-tavara","ariaLabel":"raskain tavara permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää vielä luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"raskain_tavara"}]},{"type":"text","value":", joka palauttaa painoltaan suurimman tavaran. Jos yhtä raskaita tavaroita on useita, metodi voi palauttaa minkä tahansa niistä. Metodin tulee palauttaa olioviite. Jos laukku on tyhjä, palauta arvo "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"None"}]},{"type":"text","value":"."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nmatkalaukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nmatkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nraskain "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"raskain_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string-interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"f\"Raskain tavara: "}]},{"type":"element","tagName":"span","properties":{"className":["token","interpolation"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"raskain"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\""}]}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Raskain tavara: Tiiliskivi (4 kg)"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lastiruuma-luokka","style":"position:relative;"},"children":[{"type":"text","value":"Lastiruuma-luokka"},{"type":"element","tagName":"a","properties":{"href":"#lastiruuma-luokka","ariaLabel":"lastiruuma luokka permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tee luokka "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Lastiruuma"}]},{"type":"text","value":", johon liittyvät seuraavat metodit:"}]},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"konstruktori, jolle annetaan maksimipaino"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_matkalaukku"}]},{"type":"text","value":", joka lisää parametrina annetun matkalaukun lastiruumaan"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"__str__"}]},{"type":"text","value":", joka palauttaa merkkijonon muotoa \"x matkalaukkua, tilaa y kg\""}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Luokan tulee valvoa, että sen matkalaukkujen yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi uuden matkalaukun vuoksi, metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"lisaa_matkalaukku"}]},{"type":"text","value":" ei saa lisätä uutta matkalaukkua."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"lastiruuma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nkirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nadan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npekan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"adan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"0 matkalaukkua, tilaa 1000 kg\n1 matkalaukku, tilaa 997 kg\n2 matkalaukkua, tilaa 993 kg"}]}]},{"type":"element","tagName":"h2","properties":{"id":"lastiruuman-sisalto","style":"position:relative;"},"children":[{"type":"text","value":"Lastiruuman sisältö"},{"type":"element","tagName":"a","properties":{"href":"#lastiruuman-sisalto","ariaLabel":"lastiruuman sisalto permalink","className":["anchor","after"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Lisää luokkaan metodi "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"tulosta_tavarat"}]},{"type":"text","value":", joka tulostaa kaikki lastiruuman matkalaukuissa olevat tavarat."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seuraavassa on luokan käyttöesimerkki:"}]},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"python"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-python"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-python"]},"children":[{"type":"text","value":"kirja "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Aapiskukko\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"2"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npuhelin "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Nokia 3210\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\ntiiliskivi "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Tiiliskivi\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":","}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"4"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nadan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"kirja"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nadan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"puhelin"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\npekan_laukku "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"10"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\npekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_tavara"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"tiiliskivi"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\nlastiruuma "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" Lastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","number"]},"children":[{"type":"text","value":"1000"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"adan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"lisaa_matkalaukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"text","value":"pekan_laukku"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\n\n"},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"print"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"Ruuman matkalaukuissa on seuraavat tavarat:\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"\nlastiruuma"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"tulosta_tavarat"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ohjelman tulostuksen tulisi olla seuraava:"}]},{"type":"element","tagName":"sample-output","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ruuman matkalaukuissa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)"}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vastaa lopuksi osion loppukyselyyn:"}]},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"quiz","properties":{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11"},"children":[]}]}]},"html":"

    Tämän osion jälkeen

      \n
    • Tunnet lisää esimerkkejä luokista ja olioista
    • \n
    • Osaat käyttää parametrien oletusarvoja metodeissa
    • \n

    Tarkastellaan seuraavaksi esimerkkiä, joka muodostuu kahdesta luokasta. Luokka Piste mallintaa yhtä pistettä kaksiulotteisessa koordinaatistossa ja luokka Jana kahden pisteen välistä janaa. Luokkien toiminta on kommentoitu koodiin.

    import math\n\nclass Piste:\n    \"\"\" Luokka mallintaa pistettä kaksiulotteisessa koordinaatistossa \"\"\"\n\n    def __init__(self, x: float, y: float):\n        # Attribuutit ovat julkisia, koska mitkä tahansa arvot käyvät x:n ja y:n arvoiksi\n        self.x = x\n        self.y = y\n\n    # Luokkametodi palauttaa uuden pisteen paikassa (0, 0)\n    # Huomaa, että luokan sisältä voi palauttaa olion luokasta\n    @classmethod\n    def origo(cls):\n        return Piste(0, 0)\n\n    # Luokkametodi muodostaa uuden pisteen annetun pisteen perusteella\n    # Uusi piste on peilikuva annetusta pisteestä jommankumman tai molempien akselien suhteen\n    # Esimerkiksi pisteen (1, 3) peilikuva x-akselin suhteen on (1, -3)\n    @classmethod\n    def peilikuva(cls, piste, peilaa_x: bool, peilaa_y: bool):\n        x = piste.x\n        y = piste.y\n        if peilaa_x:\n            y = -y\n        if peilaa_y:\n            x = -x\n\n        return Piste(x, y)\n\n    def __str__(self):\n        return f\"({self.x}, {self.y})\"\n\nclass Jana:\n    \"\"\" Luokka mallintaa janaa kaksiulotteisessa koordinaatistossa \"\"\"\n\n    def __init__(self, alku: Piste, loppu: Piste):\n        # Attribuutit ovat julkisia, koska mitkä tahansa pisteet kelpaavat\n        self.alku = alku\n        self.loppu = loppu\n\n    # Metodi laskee janan pituuden Pythagoraan lauseella\n    def pituus(self):\n        summa = (self.loppu.x - self.alku.x) ** 2 + (self.loppu.y - self.alku.y) ** 2\n        return math.sqrt(summa)\n\n    # Metodi palauttaa janan keskipisteen\n    def keskipiste(self):\n        keskix = (self.alku.x + self.loppu.x) / 2\n        keskiy = (self.alku.y + self.loppu.y) / 2\n        return Piste(keskix, keskiy)\n\n    def __str__(self):\n        return f\"{self.alku} ... {self.loppu}\"
    piste = Piste(1,3)\nprint(piste)\n\norigo = Piste.origo()\nprint(origo)\n\npiste2 = Piste.peilikuva(piste, True, True)\nprint(piste2)\n\njana = Jana(piste, piste2)\nprint(jana.pituus())\nprint(jana.keskipiste())\nprint(jana)

    (1, 3)\n(0, 0)\n(-1, -3)\n6.324555320336759\n(0.0, 0.0)\n(1, 3) ... (-1, -3)

    Parametrien oletusarvot

    Pythonissa mille tahansa parametrille voidaan asettaa oletusarvo. Oletusarvoja voidaan käyttää sekä funktioiden että metodien parametreissa.

    Jos parametrille on annettu oletusarvo, sille ei ole pakko antaa arvoa kutsuttaessa. Jos arvo annetaan, se syrjäyttää oletusarvon, ja jos arvoa ei anneta, käytetään oletusarvoa.

    Oletusarvot ovat usein hyödyllisiä konstruktoreissa: jos on oletettavaa, ettei tiettyä tietoa ole aina olemassa oliota luodessa, on parempi antaa sille vakioarvo konstruktorissa kuin antaa tämä asiakkaan huoleksi. Tämä on asiakkaalle helpompaa ja myös ylläpitää olion sisäistä eheyttä, kun voidaan esimerkiksi olla varmoja, että \"tyhjä\" arvo on aina samanlainen (muuten se voisi olla esimerkiksi merkkijono \"\", arvo None tai merkkijono \"ei asetettu\").

    Tarkastellaan esimerkkinä luokkaa, joka mallintaa opiskelijaa. Pakollisia kenttiä luodessa ovat opiskelijanumero ja nimi ja näistä opiskelijanumeroa ei pysty myöhemmin muuttamaan. Opintopisteet ja muistiinpanot voi halutessaan antaa oliota luodessa, mutta niille on myös asetettu oletusarvot. Luokan toiminta on kommentoitu suoraan ohjelmakoodin yhteyteen.

    class Opiskelija:\n    \"\"\" Mallintaa yhtä opiskelijaa \"\"\"\n\n    def __init__(self, nimi: str, opiskelijanumero: str, opintopisteet:int = 0, muistiinpanot:str = \"\"):\n        # kutsuu asetusmetodia\n        self.nimi = nimi\n\n        if len(opiskelijanumero) < 5:\n            raise ValueError(\"Opiskelijanumerossa tulee olla vähintään 5 merkkiä\")\n\n        self.__opiskelijanumero = opiskelijanumero\n\n        # Kutsuu asetusmetodia\n        self.opintopisteet = opintopisteet\n\n        self.__muistiinpanot = muistiinpanot\n\n    @property\n    def nimi(self):\n        return self.__nimi\n\n    @nimi.setter\n    def nimi(self, nimi):\n        if nimi != \"\":\n            self.__nimi = nimi\n        else:\n            raise ValueError(\"Nimi ei voi olla tyhjä\")\n\n    @property\n    def opiskelijanumero(self):\n        return self.__opiskelijanumero\n\n    @property\n    def opintopisteet(self):\n        return self.__opintopisteet\n\n    @opintopisteet.setter\n    def opintopisteet(self, op):\n        if op >= 0:\n            self.__opintopisteet = op\n        else:\n            raise ValueError(\"Opintopisteet ei voi olla negatiivinen luku\")\n\n    @property\n    def muistiinpanot(self):\n        return self.__muistiinpanot\n\n    @muistiinpanot.setter\n    def muistiinpanot(self, muistiinpanot):\n        self.__muistiinpanot = muistiinpanot\n\n    def yhteenveto(self):\n        print(f\"Opiskelija {self.__nimi} ({self.opiskelijanumero}):\")\n        print(f\"- opintopisteitä {self.__opintopisteet}\")\n        print(f\"- muistiinpanot: {self.muistiinpanot}\")
    # Annetaan pelkkä nimi ja op.nro\nopiskelija1 = Opiskelija(\"Olli Opiskelija\", \"12345\")\nopiskelija1.yhteenveto()\n\n# Annetaan nimi, op.nro ja opintopisteet\nopiskelija2 = Opiskelija(\"Outi Opiskelija\", \"54321\", 25)\nopiskelija2.yhteenveto()\n\n# Annetaan kaikki tiedot\nopiskelija3 = Opiskelija(\"Olavi Opiskelija\", \"99999\", 140, \"lisäaika tentissä\")\nopiskelija3.yhteenveto()\n\n# Ei anneta opintopisteitä, mutta annetaan muistiinpanot\n# Huomaa, että parametri pitää nyt nimetä, kun järjestys eroaa tavallisesta\nopiskelija4 = Opiskelija(\"Onerva Opiskelija\", \"98765\", muistiinpanot=\"poissaoleva lukuvuonna 20-21\")\nopiskelija4.yhteenveto()

    Opiskelija Olli Opiskelija (12345):

      \n
    • opintopisteitä 0
    • \n
    • muistiinpanot:
    • \n

    Opiskelija Outi Opiskelija (54321):

      \n
    • opintopisteitä 25
    • \n
    • muistiinpanot:
    • \n

    Opiskelija Olavi Opiskelija (99999):

      \n
    • opintopisteitä 140
    • \n
    • muistiinpanot: lisäaika tentissä
    • \n

    Opiskelija Onerva Opiskelija (98765):

      \n
    • opintopisteitä 0
    • \n
    • muistiinpanot: poissaoleva lukuvuonna 20-21
    • \n

    Huomaa, että attribuutille opiskelijanumero ei ole määritelty asetusmetodia, koska ideana on, että opiskelijanumero ei voi muuttua.

    Parametrien oletusarvojen käyttöön liittyy kuitenkin eräs huomattavan iso \"mutta\" joka ilmenee seuraavasti esimerkistä:

    class Opiskelija:\n    def __init__(self, nimi, tehdyt_kurssit=[]):\n        self.nimi = nimi\n        self.tehdyt_kurssit = tehdyt_kurssit\n\n    def lisaa_suoritus(self, kurssi):\n        self.tehdyt_kurssit.append(kurssi)
    opiskelija1 = Opiskelija(\"Olli Opiskelija\")\nopiskelija2 = Opiskelija(\"Outi Opiskelija\")\n\nopiskelija1.lisaa_suoritus(\"Ohpe\")\nopiskelija1.lisaa_suoritus(\"Tira\")\n\nprint(opiskelija1.tehdyt_kurssit)\nprint(opiskelija2.tehdyt_kurssit)

    ['Ohpe', 'Tira']\n['Ohpe', 'Tira']

    Huomataan siis, että kurssisuorituksen lisääminen Ollille muuttaa myös Outin kurssisuorituksia. Ilmiö johtuu siitä, että Python uudelleenkäyttää oletusarvoa. Yllä oleva tapa luoda opiskelijat vastaa siis seuraavaa koodia:

    kurssit = []\nopiskelija1 = Opiskelija(\"Olli Opiskelija\", kurssit)\nopiskelija2 = Opiskelija(\"Outi Opiskelija\", kurssit)

    Tästä johtuen parametrin oletusarvona ei koskaan tulisi käyttää monimutkaisempia tietorakenteita kuten listoja. Korjattu versio luokan Opiskelija konstruktorista on seuraava:

    class Opiskelija:\n    def __init__(self, nimi, tehdyt_kurssit=None):\n        self.nimi = nimi\n        if tehdyt_kurssit is None:\n            self.tehdyt_kurssit = []\n        else:\n            self.tehdyt_kurssit = tehdyt_kurssit\n\n    def lisaa_suoritus(self, kurssi):\n        self.tehdyt_kurssit.append(kurssi)
    opiskelija1 = Opiskelija(\"Olli Opiskelija\")\nopiskelija2 = Opiskelija(\"Outi Opiskelija\")\n\nopiskelija1.lisaa_suoritus(\"Ohpe\")\nopiskelija1.lisaa_suoritus(\"Tira\")\n\nprint(opiskelija1.tehdyt_kurssit)\nprint(opiskelija2.tehdyt_kurssit)

    ['Ohpe', 'Tira']\n[]

    Loppuhuipennus

    Vaikka seuraava tehtävä on tässä luvussa, et tarvitse tehtävän ratkaisemiseen mitään muuta kun luvussa Oliot attribuuttina esiteltyjä tekniikoita. Tehtävä on käytännössä hyvin samanlainen kuin tuon luvun tehtävät lahjapakkaus ja huoneen lyhin.

    Tässä tehtäväsarjassa tehdään luokat Tavara, Matkalaukku ja Lastiruuma, joiden avulla harjoitellaan lisää olioita, jotka sisältävät toisia olioita.

    Tavara-luokka

    Tee luokka Tavara, josta muodostetut oliot vastaavat erilaisia tavaroita. Tallennettavat tiedot ovat tavaran nimi ja paino (kg).

    Luokan tulee toimia seuraavasti

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\n\nprint(\"Kirjan nimi:\", kirja.nimi())\nprint(\"Kirjan paino:\", kirja.paino())\n\nprint(\"Kirja:\", kirja)\nprint(\"Puhelin:\", puhelin)

    Ohjelman tulostuksen tulisi olla seuraava:

    Kirjan nimi: Aapiskukko\nKirjan paino: 2\nKirja: Aapiskukko (2 kg)\nPuhelin: Nokia 3210 (1 kg)

    Tavaralla on siis metodit paino ja nimi jotka palauttavat tavaran tiedot.

    Luokan tulee tallentaa tieto nimestä ja painosta kapseloituna, eli seuraava ei saa onnistua:

    kirja = Tavara(\"Aapiskukko\", 2)\nkirja.paino = 10

    Matkalaukku-luokka

    Tee luokka Matkalaukku. Matkalaukkuun liittyy tavaroita ja maksimipaino, joka määrittelee tavaroiden suurimman mahdollisen yhteispainon.

    Lisää luokkaan seuraavat:

      \n
    • konstruktori, jolle annetaan maksimipaino
    • \n
    • metodi lisaa_tavara, joka lisää parametrina annettavan tavaran matkalaukkuun. Metodi ei palauta mitään arvoa.
    • \n
    • metodi __str__, joka palauttaa merkkijonon muotoa \"x tavaraa (y kg)\"
    • \n

    Luokan tulee valvoa, että sen sisältämien tavaroiden yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi lisättävän tavaran vuoksi, metodi lisaa_tavara ei saa lisätä uutta tavaraa laukkuun.

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nmatkalaukku = Matkalaukku(5)\nprint(matkalaukku)\n\nmatkalaukku.lisaa_tavara(kirja)\nprint(matkalaukku)\n\nmatkalaukku.lisaa_tavara(puhelin)\nprint(matkalaukku)\n\nmatkalaukku.lisaa_tavara(tiiliskivi)\nprint(matkalaukku)

    Ohjelman tulostuksen tulisi olla seuraava:

    0 tavaraa (0 kg)\n1 tavaraa (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)

    Kielenhuoltoa

    Ilmoitus \"1 tavaraa\" ei ole kovin hyvää suomea, vaan olisi parempi sanoa \"1 tavara\". Tee tämä muutos luokassa sijaitsevaan __str__-metodiin.

    Nyt edellisen ohjelman tulostuksen tulisi olla seuraava:

    0 tavaraa (0 kg)\n1 tavara (2 kg)\n2 tavaraa (3 kg)\n2 tavaraa (3 kg)

    Kaikki tavarat

    Lisää luokkaan seuraavat metodit:

      \n
    • tulosta_tavarat, joka tulostaa kaikki matkalaukussa olevat tavarat
    • \n
    • paino, joka palauttaa matkalaukun yhteispainoa kuvaavan kokonaisluvun, joka on sen sisältävien tavaroiden painojen summa
    • \n

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nmatkalaukku = Matkalaukku(10)\nmatkalaukku.lisaa_tavara(kirja)\nmatkalaukku.lisaa_tavara(puhelin)\nmatkalaukku.lisaa_tavara(tiiliskivi)\n\nprint(\"Matkalaukussa on seuraavat tavarat:\")\nmatkalaukku.tulosta_tavarat()\npaino_yht = matkalaukku.paino()\nprint(f\"Yhteispaino: {paino_yht} kg\")

    Ohjelman tulostuksen tulisi olla seuraava:

    Matkalaukussa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)\nYhteispaino: 7 kg

    Muokkaa myös luokkaasi siten, että käytät vain kahta oliomuuttujaa. Toinen sisältää maksimipainon, toinen on lista laukussa olevista tavaroista.

    Raskain tavara

    Lisää vielä luokkaan metodi raskain_tavara, joka palauttaa painoltaan suurimman tavaran. Jos yhtä raskaita tavaroita on useita, metodi voi palauttaa minkä tahansa niistä. Metodin tulee palauttaa olioviite. Jos laukku on tyhjä, palauta arvo None.

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nmatkalaukku = Matkalaukku(10)\nmatkalaukku.lisaa_tavara(kirja)\nmatkalaukku.lisaa_tavara(puhelin)\nmatkalaukku.lisaa_tavara(tiiliskivi)\n\nraskain = matkalaukku.raskain_tavara()\nprint(f\"Raskain tavara: {raskain}\")

    Ohjelman tulostuksen tulisi olla seuraava:

    Raskain tavara: Tiiliskivi (4 kg)

    Lastiruuma-luokka

    Tee luokka Lastiruuma, johon liittyvät seuraavat metodit:

      \n
    • konstruktori, jolle annetaan maksimipaino
    • \n
    • metodi lisaa_matkalaukku, joka lisää parametrina annetun matkalaukun lastiruumaan
    • \n
    • metodi __str__, joka palauttaa merkkijonon muotoa \"x matkalaukkua, tilaa y kg\"
    • \n

    Luokan tulee valvoa, että sen matkalaukkujen yhteispaino ei ylitä maksimipainoa. Jos maksimipaino ylittyisi uuden matkalaukun vuoksi, metodi lisaa_matkalaukku ei saa lisätä uutta matkalaukkua.

    Seuraavassa on luokan käyttöesimerkki:

    lastiruuma = Lastiruuma(1000)\nprint(lastiruuma)\n\nkirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nadan_laukku = Matkalaukku(10)\nadan_laukku.lisaa_tavara(kirja)\nadan_laukku.lisaa_tavara(puhelin)\n\npekan_laukku = Matkalaukku(10)\npekan_laukku.lisaa_tavara(tiiliskivi)\n\nlastiruuma.lisaa_matkalaukku(adan_laukku)\nprint(lastiruuma)\n\nlastiruuma.lisaa_matkalaukku(pekan_laukku)\nprint(lastiruuma)

    0 matkalaukkua, tilaa 1000 kg\n1 matkalaukku, tilaa 997 kg\n2 matkalaukkua, tilaa 993 kg

    Lastiruuman sisältö

    Lisää luokkaan metodi tulosta_tavarat, joka tulostaa kaikki lastiruuman matkalaukuissa olevat tavarat.

    Seuraavassa on luokan käyttöesimerkki:

    kirja = Tavara(\"Aapiskukko\", 2)\npuhelin = Tavara(\"Nokia 3210\", 1)\ntiiliskivi = Tavara(\"Tiiliskivi\", 4)\n\nadan_laukku = Matkalaukku(10)\nadan_laukku.lisaa_tavara(kirja)\nadan_laukku.lisaa_tavara(puhelin)\n\npekan_laukku = Matkalaukku(10)\npekan_laukku.lisaa_tavara(tiiliskivi)\n\nlastiruuma = Lastiruuma(1000)\nlastiruuma.lisaa_matkalaukku(adan_laukku)\nlastiruuma.lisaa_matkalaukku(pekan_laukku)\n\nprint(\"Ruuman matkalaukuissa on seuraavat tavarat:\")\nlastiruuma.tulosta_tavarat()

    Ohjelman tulostuksen tulisi olla seuraava:

    Ruuman matkalaukuissa on seuraavat tavarat:\nAapiskukko (2 kg)\nNokia 3210 (1 kg)\nTiiliskivi (4 kg)

    Vastaa lopuksi osion loppukyselyyn:

    ","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/6-lisaa-esimerkkeja.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"}}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"}}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"}}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"}}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"}}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"}}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."}}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."}}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."}}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"}}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"}}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"}}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"}}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"}}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"}}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"}}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"}}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"}}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"}}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"}}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"}}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"}}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"}}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"}}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"}}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"}}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"}}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"}}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"}}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"}}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"}}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"}}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"}}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"}}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"}}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"}}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"}}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"}}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"}}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"}}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"}}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"}}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"}}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"}}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"}}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"}}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"}}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"}}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"}}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"}}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"}}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"}}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"}}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"}}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"}}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"}}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"}}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"}}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"}}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"}}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"}}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"}}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"}}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"}}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"}}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"}}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"}}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"}}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"}}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"}}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"}}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"}}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"}}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"}}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"}}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"}}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"}}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"}}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"}}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"}}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"}}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"}}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"}}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"}}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"}}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"}}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"}}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/page-data/osa-9/page-data.json b/page-data/osa-9/page-data.json index ddc3a63d9..65e7b8b16 100644 --- a/page-data/osa-9/page-data.json +++ b/page-data/osa-9/page-data.json @@ -1,5 +1,5 @@ { "componentChunkName": "component---src-templates-course-part-overview-template-js", "path": "/osa-9", - "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-9","title":"Osa 9"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/index.md"},"allPages":{"edges":[{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}}]}},"pageContext":{}}, + "result": {"data":{"page":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"pages-in-this-section","properties":{},"children":[]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"exercises-in-this-section","properties":{},"children":[]}]}],"data":{"quirksMode":false}},"html":"
    \n
    ","frontmatter":{"path":"/osa-9","title":"Osa 9"},"fileAbsolutePath":"/home/runner/work/ohjelmointi-23/ohjelmointi-23/data/osa-9/index.md"},"allPages":{"edges":[{"node":{"id":"781443ac-62cd-5efc-891a-09d1ba6b20f0","frontmatter":{"path":"/frontmatter-guide","title":"Frontmatter-guide"},"moocfiExercises":[]}},{"node":{"id":"3fa41162-c2ef-558a-b7e7-9f8165abf53b","frontmatter":{"path":"/arvostelu-ja-kokeet","title":"Arvostelu ja kokeet"},"moocfiExercises":[]}},{"node":{"id":"7eca7bbe-fb6b-59e5-a674-c0eaf5c89761","frontmatter":{"path":"/kaikki-tehtavat","title":"Kaikki tehtävät"},"moocfiExercises":[]}},{"node":{"id":"d45502ca-e338-5afa-9839-8ab617ad6ddf","frontmatter":{"path":"/","title":"Tietoa kurssista"},"moocfiExercises":[]}},{"node":{"id":"1efc8cfc-157a-5088-914b-c9901a0d1f5f","frontmatter":{"path":"/tuki","title":"Tukea tehtäviin"},"moocfiExercises":[]}},{"node":{"id":"d7412ce2-d77b-51de-bcba-4313eddec4f5","frontmatter":{"path":"/usein-kysytyt-kysymykset","title":"Usein kysytyt kysymykset"},"moocfiExercises":[]}},{"node":{"id":"0818c444-38eb-58ab-b129-9abb78c99e32","frontmatter":{"path":"/verkkotentti","title":"Verkkotentti 4.6."},"moocfiExercises":[]}},{"node":{"id":"c2658c25-bd6c-5b1f-ad41-22924eb16b0f","frontmatter":{"path":"/verkkotentti-ohpe","title":"Ohjelmoinnin perusteiden verkkotentti 05.08."},"moocfiExercises":[]}},{"node":{"id":"9c49fdd5-713f-532e-a16b-8041b239b696","frontmatter":{"path":"/verkkotentti-ohja","title":"Ohjelmoinnin jatkokurssin verkkotentti 12.08."},"moocfiExercises":[]}},{"node":{"id":"682404c6-0aa3-5968-98ec-2a1fc780513b","frontmatter":{"path":"/virheilmoitukset","title":"Yleiset virheilmoitukset"},"moocfiExercises":[]}},{"node":{"id":"43608516-b36a-504e-916a-ae320b95133c","frontmatter":{"path":"/sanasto","title":"Sanasto"},"moocfiExercises":[]}},{"node":{"id":"9af06cbb-4843-5f1e-a5af-eb0a2244a123","frontmatter":{"path":"/osa-1/1-ohjelmoinnin-aloittaminen","title":"Ohjelmoinnin aloittaminen"},"moocfiExercises":[{"id":"Hymiö","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Korjaa ohjelma: seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ukko Nooa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Minuutit vuodessa","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"Ohjelma tulostaa koodia","type":"programming-exercise","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"},{"id":"4d085eeb-fee6-5087-a9b4-6749f4ea4111","type":"quiz","parentPagePath":"/osa-1/1-ohjelmoinnin-aloittaminen"}]}},{"node":{"id":"c95594d0-17e1-5910-9a58-222279545385","frontmatter":{"path":"/osa-1/2-tietoa-kayttajalta","title":"Tietoa käyttäjältä"},"moocfiExercises":[{"id":"Nimi kahdesti","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimet huutomerkillä","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Nimi ja osoite","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":" Korjaa ohjelma: Lausahdukset","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-1/2-tietoa-kayttajalta"},{"id":"260a58a9-a12e-5a55-835b-26cfac247f57","type":"quiz","parentPagePath":"/osa-1/2-tietoa-kayttajalta"}]}},{"node":{"id":"d6271ead-1356-530b-b7a2-7fde11626262","frontmatter":{"path":"/osa-1/3-lisaa-muuttujista","title":"Lisää muuttujista"},"moocfiExercises":[{"id":"6a4ceb56-be87-5007-add2-1f28fad7bdfc","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Välilyönnillä vai ilman","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Laskutoimitukset","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"Korjaa ohjelma: Tulostukset samalle riville","type":"programming-exercise","parentPagePath":"/osa-1/3-lisaa-muuttujista"},{"id":"7322e73e-d6c5-5490-af97-ec69c45e720b","type":"quiz","parentPagePath":"/osa-1/3-lisaa-muuttujista"}]}},{"node":{"id":"57d29be3-18d6-5bd0-90af-4ac4811f94c4","frontmatter":{"path":"/osa-1/4-laskentaa-luvuilla","title":"Laskentaa luvuilla"},"moocfiExercises":[{"id":"Luku kertaa viisi","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Nimi ja ikä","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Vuorokaudet sekunteina","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Korjaa ohjelma: Lukujen tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja tulo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Lukujen summa ja keskiarvo","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Ruokailukustannukset","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"Opiskelijat ryhmiin","type":"programming-exercise","parentPagePath":"/osa-1/4-laskentaa-luvuilla"},{"id":"a9b97b42-4bfe-55aa-a1d4-8f8db058b50a","type":"quiz","parentPagePath":"/osa-1/4-laskentaa-luvuilla"}]}},{"node":{"id":"823d3610-17bf-5f85-89b5-43e57eca30a4","frontmatter":{"path":"/osa-1","title":"Osa 1"},"moocfiExercises":[]}},{"node":{"id":"1540f76b-3101-5b05-8095-6a07cfecbbcf","frontmatter":{"path":"/osa-1/5-ehtorakenne","title":"Ehtorakenne"},"moocfiExercises":[{"id":"Orwell","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Itseisarvo","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Keittoa vai ei","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Luvun suuruusluokka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Laskin","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Lämpötilat","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Palkka","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Korjaa ohjelma: Korkoa kortille","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Huomiset vaatteet","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"Toisen asteen yhtälön ratkaiseminen","type":"programming-exercise","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"db5009e5-a4b7-5e82-a297-e2cc36b5b3d3","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"},{"id":"6316a9cd-a952-581f-b1c7-93e0cb694faa","type":"quiz","parentPagePath":"/osa-1/5-ehtorakenne"}]}},{"node":{"id":"6e251a7e-0806-5da7-b733-412c15549f51","frontmatter":{"path":"/osa-10/1-luokkahierarkiat","title":"Luokkahierarkiat"},"moocfiExercises":[{"id":"Kannettava tietokone","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pelimuseo","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Pinta-alat","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"},{"id":"Sanapeli","type":"programming-exercise","parentPagePath":"/osa-10/1-luokkahierarkiat"}]}},{"node":{"id":"3ec62a05-6764-5cde-8038-746a88db6a37","frontmatter":{"path":"/osa-10/2-nakyvyysmaareet","title":"Näkyvyysmääreet"},"moocfiExercises":[{"id":"Superryhmä","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"},{"id":"Salainen taikajuoma","type":"programming-exercise","parentPagePath":"/osa-10/2-nakyvyysmaareet"}]}},{"node":{"id":"125f6bea-e97f-5d9d-b47a-db94dc87c4a5","frontmatter":{"path":"/osa-10","title":"Osa 10"},"moocfiExercises":[]}},{"node":{"id":"004a0d76-9a6d-5eb9-a48b-a190cffb324b","frontmatter":{"path":"/osa-10/3-olio-ohjelmoinnin-tekniikoita","title":"Olio-ohjelmoinnin tekniikoita"},"moocfiExercises":[{"id":"Raha","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Päiväys","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"},{"id":"Iteroitava kauppalista","type":"programming-exercise","parentPagePath":"/osa-10/3-olio-ohjelmoinnin-tekniikoita"}]}},{"node":{"id":"987e3ed9-1843-54bf-9527-7068ab9cd537","frontmatter":{"path":"/osa-10/4-lisaa-esimerkkeja","title":"Laajemman sovelluksen kehittäminen"},"moocfiExercises":[{"id":"Puhelinluettelon laajennus, osa 1","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Puhelinluettelon laajennus, osa 2","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"Opintorekisteri","type":"programming-exercise","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"},{"id":"adf5276f-057a-5ac0-85b1-024443782145","type":"quiz","parentPagePath":"/osa-10/4-lisaa-esimerkkeja"}]}},{"node":{"id":"b0f941d1-935a-5b8e-b0b6-cdca5bcf3193","frontmatter":{"path":"/osa-11/1-koosteet","title":"Koosteet"},"moocfiExercises":[{"id":"Neliojuuret","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Tähtirivit","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Paras koetulos","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Pituudet","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Poista pienemmät","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Vokaalilla alkavat","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"},{"id":"Lottorivi","type":"programming-exercise","parentPagePath":"/osa-11/1-koosteet"}]}},{"node":{"id":"55d0885e-35f5-5b91-9d70-5c56104e21c3","frontmatter":{"path":"/osa-11/3-rekursio","title":"Rekursio"},"moocfiExercises":[{"id":"Suurempia lukuja","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Rekursiivinen summa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"},{"id":"Sulut tasapainossa","type":"programming-exercise","parentPagePath":"/osa-11/3-rekursio"}]}},{"node":{"id":"bb59b8b2-39dc-55c5-bb11-de8715c89959","frontmatter":{"path":"/osa-11/2-lisaa-koosteesta","title":"Lisää koosteesta"},"moocfiExercises":[{"id":"Suodata kielletyt","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Kauppalistan tuotteet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Halvempien hintaero","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Merkkijonojen pituudet","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"},{"id":"Yleisimmät sanat","type":"programming-exercise","parentPagePath":"/osa-11/2-lisaa-koosteesta"}]}},{"node":{"id":"09be19c7-c865-52dd-b481-57c840fdc8cc","frontmatter":{"path":"/osa-11","title":"Osa 11"},"moocfiExercises":[]}},{"node":{"id":"ab1d50f8-af25-52d6-b392-0fa7d333fdb1","frontmatter":{"path":"/osa-11/4-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Suurin alkio","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Pomot ja alaiset","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirja","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"Tilauskirjasovellus","type":"programming-exercise","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"},{"id":"d9bb47f3-47c2-5e56-9845-628d9977c542","type":"quiz","parentPagePath":"/osa-11/4-lisaa-esimerkkeja"}]}},{"node":{"id":"277cb442-b803-5462-a834-936d3be9de8a","frontmatter":{"path":"/osa-12/2-generaattorit","title":"Generaattorit"},"moocfiExercises":[{"id":"Parilliset luvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Alkuluvut","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-12/2-generaattorit"}]}},{"node":{"id":"19e9173c-b471-5c92-a896-10ce7377ef41","frontmatter":{"path":"/osa-12/1-funktio-parametrina","title":"Funktio parametrina"},"moocfiExercises":[{"id":"Järjestys varastosaldon mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys tuotantokausien mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Järjestys pisteiden mukaan","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilyreitti","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Kiipeilykalliot","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Palloilijat","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"},{"id":"Tuotteiden haku","type":"programming-exercise","parentPagePath":"/osa-12/1-funktio-parametrina"}]}},{"node":{"id":"9bdbe0ad-904f-5a81-9797-7e12826192d0","frontmatter":{"path":"/osa-12/3-funktionaalista-ohjelmointia","title":"Funktionaalista ohjelmointia"},"moocfiExercises":[{"id":"Suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Rajatut suoritukset","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"},{"id":"Opintopisteet","type":"programming-exercise","parentPagePath":"/osa-12/3-funktionaalista-ohjelmointia"}]}},{"node":{"id":"71d31f73-e033-50f6-9808-c87debf29d45","frontmatter":{"path":"/osa-12/4-saannolliset-lausekkeet","title":"Säännölliset lausekkeet"},"moocfiExercises":[{"id":"Säännölliset lausekkeet","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"Tilastot ojennukseen","type":"programming-exercise","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"},{"id":"9d660c41-3094-5bf4-b084-30407dea276d","type":"quiz","parentPagePath":"/osa-12/4-saannolliset-lausekkeet"}]}},{"node":{"id":"326a2899-ee13-524c-bd28-cab01148354f","frontmatter":{"path":"/osa-12","title":"Osa 12"},"moocfiExercises":[]}},{"node":{"id":"d858e4c1-9eb9-5e68-94e9-45506696dd62","frontmatter":{"path":"/osa-13/1-pygame-kayttoon","title":"Pygame käyttöön"},"moocfiExercises":[{"id":"Neljä robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Robotit rivissä","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Sata robottia","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"},{"id":"Satunnaiset robotit","type":"programming-exercise","parentPagePath":"/osa-13/1-pygame-kayttoon"}]}},{"node":{"id":"36b56417-e276-533e-b120-1135924837e6","frontmatter":{"path":"/osa-13/4-lisaa-tekniikoita","title":"Lisää tekniikoita"},"moocfiExercises":[{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"Asteroidit","type":"programming-exercise","parentPagePath":"/osa-13/4-lisaa-tekniikoita"},{"id":"a294aaeb-6a75-512e-9560-22e538e4cb87","type":"quiz","parentPagePath":"/osa-13/4-lisaa-tekniikoita"}]}},{"node":{"id":"c609cb13-bb56-58ef-837f-b1201a5dec06","frontmatter":{"path":"/osa-13/2-animaatio","title":"Animaatio"},"moocfiExercises":[{"id":"Pystyliike","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Reunan kierto","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Kaksi robottia","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Piirileikki","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Pomppiva pallo","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"},{"id":"Robotti-invaasio","type":"programming-exercise","parentPagePath":"/osa-13/2-animaatio"}]}},{"node":{"id":"fb932393-5883-559a-811c-be8788078d29","frontmatter":{"path":"/osa-13/3-tapahtumat","title":"Tapahtumat"},"moocfiExercises":[{"id":"Neljä suuntaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Neljä seinää","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Kaksi pelaajaa","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotti ja hiiri","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"},{"id":"Robotin paikka","type":"programming-exercise","parentPagePath":"/osa-13/3-tapahtumat"}]}},{"node":{"id":"5d8ee8d6-3e80-571c-8b67-872b2f29c84d","frontmatter":{"path":"/osa-13","title":"Osa 13"},"moocfiExercises":[]}},{"node":{"id":"9dd02728-0265-5c86-ae22-47ce783974c3","frontmatter":{"path":"/osa-14/1-peliprojekti","title":"Peliprojekti"},"moocfiExercises":[]}},{"node":{"id":"c40c9ed7-8f66-5079-979f-38b8c7cf39c0","frontmatter":{"path":"/osa-14/2-robo-ja-laatikot","title":"Robotti ja laatikot"},"moocfiExercises":[]}},{"node":{"id":"ea358708-379d-550f-a0e7-cf4948487bb7","frontmatter":{"path":"/osa-14","title":"Osa 14"},"moocfiExercises":[]}},{"node":{"id":"51a33014-c5e5-5b4b-a074-7104d480b07d","frontmatter":{"path":"/osa-14/3-pelin-viimeistely","title":"Pelin viimeistely"},"moocfiExercises":[]}},{"node":{"id":"24cb39a4-39d3-5b53-a5c5-d0ae1e2aedb5","frontmatter":{"path":"/osa-14/4-oma-peli","title":"Oma peli"},"moocfiExercises":[{"id":"a4f0c714-747c-5da9-b2c4-9f101f49be12","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"072e5e5a-8a6c-5e2c-9701-7c6f9d323d91","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"},{"id":"ec5d26c4-c6d0-56a5-ae8f-2cf58cbe7f96","type":"quiz","parentPagePath":"/osa-14/4-oma-peli"}]}},{"node":{"id":"c31a7d12-88b6-52b3-afe8-446248d5a823","frontmatter":{"path":"/osa-2/1-ohjelmoinnin-termeja","title":"Ohjelmoinnin termejä"},"moocfiExercises":[{"id":"Korjaa virheet","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Merkkien määrä","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"Tyyppimuunnos","type":"programming-exercise","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"},{"id":"d267e7eb-f4cb-51db-9089-d1a49994f1f1","type":"quiz","parentPagePath":"/osa-2/1-ohjelmoinnin-termeja"}]}},{"node":{"id":"5a5866bd-32cf-5955-90f8-754ceb8ba054","frontmatter":{"path":"/osa-2/2-else-elif","title":"Lisää ehtolauseita"},"moocfiExercises":[{"id":"Täysi-ikäisyys","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":" Suurempi tai yhtäsuuri","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Vanhempi","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"Aakkosjärjestyksessä viimeinen","type":"programming-exercise","parentPagePath":"/osa-2/2-else-elif"},{"id":"518a3af0-3773-5fbd-bbf2-5a82bdf3212d","type":"quiz","parentPagePath":"/osa-2/2-else-elif"}]}},{"node":{"id":"ad386bca-acee-52ab-b523-663e2313300f","frontmatter":{"path":"/osa-2/3-ehtojen-yhdistäminen","title":"Ehtojen yhdistäminen"},"moocfiExercises":[{"id":"Iän tarkistus","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Veljenpojat","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Arvosana ja pisteet","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"FizzBuzz","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Aakkosjärjestyksessä keskimmäinen","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"Lahjaverolaskuri","type":"programming-exercise","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"},{"id":"cd32ec18-caf4-56fb-aeb1-e5fb767fbd7a","type":"quiz","parentPagePath":"/osa-2/3-ehtojen-yhdistäminen"}]}},{"node":{"id":"4ee54339-f0d6-5e76-a1b4-5ea478a3c81d","frontmatter":{"path":"/osa-2","title":"Osa 2"},"moocfiExercises":[]}},{"node":{"id":"2f5c67d6-0aba-5643-8236-28a3b4304aa5","frontmatter":{"path":"/osa-2/4-yksinkertainen-silmukka","title":"Yksinkertainen silmukka"},"moocfiExercises":[{"id":"Jatketaanko","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Syötteen rajaus","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Salasana uudelleen","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"PIN ja yritysten määrä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Seuraava karkausvuosi","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Tarina","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"Lukujen käsittelyä","type":"programming-exercise","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"71abac8c-0fc5-51fe-81cc-c605495db56e","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"},{"id":"e658a273-0d9e-5fe0-92d2-9a4833073796","type":"quiz","parentPagePath":"/osa-2/4-yksinkertainen-silmukka"}]}},{"node":{"id":"93b44a9e-ff78-5d3a-bcc7-0c5824a2eb49","frontmatter":{"path":"/osa-3/1-ehdot-silmukoissa","title":"Ehdot silmukoissa"},"moocfiExercises":[{"id":"Tulosta luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Lähtölaskenta","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvut","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Kahden potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Luvun n potenssit","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 1","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"Peräkkäisten summa, versio 2","type":"programming-exercise","parentPagePath":"/osa-3/1-ehdot-silmukoissa"},{"id":"2b66a88b-973a-5cec-b9ef-0926e5ecc2c5","type":"quiz","parentPagePath":"/osa-3/1-ehdot-silmukoissa"}]}},{"node":{"id":"8ff22700-3c56-5718-8e6b-885de05714db","frontmatter":{"path":"/osa-3/2-merkkijonojen-kasittely","title":"Merkkijonojen käsittely"},"moocfiExercises":[{"id":"Monta jonoa","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Pidempi jono","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Lopusta alkuun","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen ja toiseksi viimeinen","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitaviiva","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Risuaitasuorakulmio","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Alleviivaus","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Tasaus oikeaan","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Sanalaatikko","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 1","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Osajonot 2","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Löytyvätkö vokaalit","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Ensimmäisen osajonon haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Kaikkien osajonojen haku","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"Toinen esiintymä","type":"programming-exercise","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"},{"id":"c5153430-cc5e-5fc8-9f9e-af4a06167a0f","type":"quiz","parentPagePath":"/osa-3/2-merkkijonojen-kasittely"}]}},{"node":{"id":"ba4e3fc0-57a9-587a-91b4-3197934f8582","frontmatter":{"path":"/osa-3/3-lisaa-silmukoista","title":"Lisää silmukoista"},"moocfiExercises":[{"id":"Kertotaulut","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Sanojen ensimmäiset kirjaimet","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Parit ympäri","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"Vuorotellen","type":"programming-exercise","parentPagePath":"/osa-3/3-lisaa-silmukoista"},{"id":"e2f853d1-544b-55c5-b257-7bc531034d9a","type":"quiz","parentPagePath":"/osa-3/3-lisaa-silmukoista"}]}},{"node":{"id":"06f3746a-dff0-5e03-9fc3-fc95dd04215b","frontmatter":{"path":"/osa-3/4-omat-funktiot","title":"Omat funktiot"},"moocfiExercises":[{"id":"Seitsemän veljestä","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Ensimmäinen merkki","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Monta tulostusta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Shakkilauta","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"Sananeliö","type":"programming-exercise","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"36e8c4c5-bb71-51ac-85cf-d79b955b41d3","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"},{"id":"c0df9677-2cb5-5ae1-b4b7-275ba5e534aa","type":"quiz","parentPagePath":"/osa-3/4-omat-funktiot"}]}},{"node":{"id":"d438dfa8-61e3-5fd1-9afc-489cb8ee1966","frontmatter":{"path":"/osa-3","title":"Osa 3"},"moocfiExercises":[]}},{"node":{"id":"3cf4b410-cedb-5462-a52f-ede19111f94f","frontmatter":{"path":"/osa-4/1-vscode","title":"Visual Studio Code -editori, Python-tulkki ja debuggeri"},"moocfiExercises":[{"id":"Hello Visual Studio Code","type":"programming-exercise","parentPagePath":"/osa-4/1-vscode"}]}},{"node":{"id":"cee91c61-42c3-5c2b-aaee-28b0059128b0","frontmatter":{"path":"/osa-4/2-lisaa-funktioista","title":"Lisää funktioista"},"moocfiExercises":[{"id":"Viiva","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risulaatikko","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Risuneliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Neliö","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kolmio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Kuvio","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Joulukuusi","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Luvuista suurin","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Merkit samat","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"Eka, toka ja vika sana","type":"programming-exercise","parentPagePath":"/osa-4/2-lisaa-funktioista"},{"id":"497c46b6-3edd-597e-a50f-a4b6aa013948","type":"quiz","parentPagePath":"/osa-4/2-lisaa-funktioista"}]}},{"node":{"id":"2f77b300-dd28-5ac7-82ef-b144463ca04a","frontmatter":{"path":"/osa-4/4-silmukat-ja-iterointi","title":"Silmukat ja iterointi"},"moocfiExercises":[{"id":"Tulostus tähdillä","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Negatiivisesta positiiviseen","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Tähdet","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Anagrammi","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Palindromit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Positiivisten summa","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Parilliset","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Summalista","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Uniikit","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmän pituus","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan lyhin","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"Listan pisimmät","type":"programming-exercise","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"},{"id":"35160dc1-19b5-51e4-b779-5299765ff2f2","type":"quiz","parentPagePath":"/osa-4/4-silmukat-ja-iterointi"}]}},{"node":{"id":"3603fbd0-3026-571c-bb4d-2a438cca1271","frontmatter":{"path":"/osa-4/3-listat","title":"Listat"},"moocfiExercises":[{"id":"Alkioiden arvojen muutokset","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Alkioiden lisäys listaan","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lisäys ja poisto","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Sama sana kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Lista kahdesti","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Listan pituus","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Keskiarvo","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"Vaihteluväli","type":"programming-exercise","parentPagePath":"/osa-4/3-listat"},{"id":"7e6bcb22-cfcc-5908-a370-b69d792e4fe1","type":"quiz","parentPagePath":"/osa-4/3-listat"}]}},{"node":{"id":"58976917-6c96-59d5-91ba-5d1642b342a8","frontmatter":{"path":"/osa-4/5-tulostuksen-muotoilu","title":"Tulostuksen muotoilu"},"moocfiExercises":[{"id":"Lukulistasta merkkijonolistaksi","type":"programming-exercise","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"},{"id":"aae62107-cdf7-5af8-9256-b057a53d522b","type":"quiz","parentPagePath":"/osa-4/5-tulostuksen-muotoilu"}]}},{"node":{"id":"172c5d43-30de-5870-ab9a-602864d2b373","frontmatter":{"path":"/osa-4","title":"Osa 4"},"moocfiExercises":[]}},{"node":{"id":"3b791b2d-e698-57ac-84c3-b8ec8b807461","frontmatter":{"path":"/osa-5/1-lisaa-listoja","title":"Lisää listoista"},"moocfiExercises":[{"id":"Pisin merkkijono","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Alkioiden määrä","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Go","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: rivit oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: sarakkeet oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: neliöt oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"Sudoku: ruudukko oikein","type":"programming-exercise","parentPagePath":"/osa-5/1-lisaa-listoja"},{"id":"ee5b8fc7-11bd-532a-8462-2f19587db240","type":"quiz","parentPagePath":"/osa-5/1-lisaa-listoja"}]}},{"node":{"id":"b7c39ee6-dfc6-5a16-a559-838278ee6096","frontmatter":{"path":"/osa-4/6-lisaa-rakenteista","title":"Lisää merkkijonoista ja listoista"},"moocfiExercises":[{"id":"Kaikki väärinpäin","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Eniten kirjaimia","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Vokaalit pois","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Poista isot","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Naapureita listassa","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"Arvosanatilasto","type":"programming-exercise","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"1dbc837b-d925-5f7f-b248-5bf90a09540c","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"},{"id":"9b354cf1-f413-5ec3-befd-992039b09100","type":"quiz","parentPagePath":"/osa-4/6-lisaa-rakenteista"}]}},{"node":{"id":"404f261f-9765-595d-806e-cab3000a97bb","frontmatter":{"path":"/osa-5/2-viittaukset","title":"Viittaukset"},"moocfiExercises":[{"id":"Alkiot tuplana","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Poista pienin","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: ruudukon tulostus ja luvun lisäys","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Sudoku: luvun lisäys ruudukon kopioon","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Ristinolla","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"Matriisin kääntö","type":"programming-exercise","parentPagePath":"/osa-5/2-viittaukset"},{"id":"7384687a-fe87-53d4-be99-05a98f5e467e","type":"quiz","parentPagePath":"/osa-5/2-viittaukset"}]}},{"node":{"id":"91522fd2-d6c1-5c1e-9f0e-adf8cd16ac86","frontmatter":{"path":"/osa-5/3-dictionary","title":"Sanakirja"},"moocfiExercises":[{"id":"Kertaa kymmenen","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Kertomat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Histogrammi","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 1","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Puhelinluettelo, versio 2","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Sanakirjan kääntö","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Luvut sanoina","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Elokuvarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"Etsi elokuvat","type":"programming-exercise","parentPagePath":"/osa-5/3-dictionary"},{"id":"61bfc0f9-fcbf-56ec-a157-afed3fe96128","type":"quiz","parentPagePath":"/osa-5/3-dictionary"}]}},{"node":{"id":"dd3178a1-ed24-5654-87c6-4277edd21bea","frontmatter":{"path":"/osa-5/4-tuple","title":"Tuple"},"moocfiExercises":[{"id":"Muodosta tuple","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhin henkilöistä","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Vanhemmat henkilöt","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Opiskelijarekisteri","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"Kirjainruudukko","type":"programming-exercise","parentPagePath":"/osa-5/4-tuple"},{"id":"80966e29-402a-55c4-a555-49ec9f14d65c","type":"quiz","parentPagePath":"/osa-5/4-tuple"},{"id":"115efd0a-e1c3-52ea-a81a-b020d1863707","type":"quiz","parentPagePath":"/osa-5/4-tuple"}]}},{"node":{"id":"e7644b24-fbdd-5507-b031-163d95965b0d","frontmatter":{"path":"/osa-5","title":"Osa 5"},"moocfiExercises":[]}},{"node":{"id":"36208a39-360c-5c51-8b7b-cccbbc40c535","frontmatter":{"path":"/osa-6/2-tiedostojen-kirjoittaminen","title":"Tiedostojen kirjoittaminen"},"moocfiExercises":[{"id":"Omistuskirjoitus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Päiväkirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Aineiston suodatus","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Henkilöt talteen","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Kurssin tulokset, osa 4","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Sanahaku","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"Muistava sanakirja","type":"programming-exercise","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"},{"id":"a4414b90-5cf5-520c-8c9e-2f18fed17fd5","type":"quiz","parentPagePath":"/osa-6/2-tiedostojen-kirjoittaminen"}]}},{"node":{"id":"dd1465d5-33db-54ca-a186-1554136fd05a","frontmatter":{"path":"/osa-6/1-tiedostojen-lukeminen","title":"Tiedostojen lukeminen"},"moocfiExercises":[{"id":"Suurin luku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Hedelmäkauppa","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Matriisi","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 1","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 2","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kurssin tulokset, osa 3","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Spell checker","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Reseptihaku","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"Kaupunkipyörät","type":"programming-exercise","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"},{"id":"d8fd5f8f-1185-50d0-9d08-9cd248a5989e","type":"quiz","parentPagePath":"/osa-6/1-tiedostojen-lukeminen"}]}},{"node":{"id":"11516666-f983-5dd9-8985-1f49d26bd448","frontmatter":{"path":"/osa-6/3-virheet","title":"Virhetilanteisiin varautuminen"},"moocfiExercises":[{"id":"Syötteen luku","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Parametrien validointi ","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"Virheelliset lottonumerot","type":"programming-exercise","parentPagePath":"/osa-6/3-virheet"},{"id":"bbc6d86e-5d2e-5614-b71f-f92532ae48e7","type":"quiz","parentPagePath":"/osa-6/3-virheet"}]}},{"node":{"id":"f275970a-6996-51cc-900d-8e7ce4a99388","frontmatter":{"path":"/osa-6/4-paikalliset-muuttujat","title":"Paikalliset ja globaalit muuttujat"},"moocfiExercises":[{"id":"1a4f83c9-bf41-50b5-97cc-3c360c104918","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"},{"id":"38bfba91-2ce2-5c43-9f6c-74788096ed6d","type":"quiz","parentPagePath":"/osa-6/4-paikalliset-muuttujat"}]}},{"node":{"id":"c50386b9-aeae-5ee5-bcd1-759d6fd231f3","frontmatter":{"path":"/osa-6","title":"Osa 6"},"moocfiExercises":[]}},{"node":{"id":"a2d3c383-bfce-5fae-9056-84021a8acf24","frontmatter":{"path":"/osa-7/1-moduulit","title":"Moduulit"},"moocfiExercises":[{"id":"Hypotenuusa","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Erikoismerkit","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"Murtoluvuilla laskeminen","type":"programming-exercise","parentPagePath":"/osa-7/1-moduulit"},{"id":"2ae7a041-d84f-5a17-9d1a-d1f8cf68f5d0","type":"quiz","parentPagePath":"/osa-7/1-moduulit"}]}},{"node":{"id":"b334c705-f8a7-5722-9895-425a9f6ea3b9","frontmatter":{"path":"/osa-7/3-aikojen-kasittely","title":"Aikojen käsittely"},"moocfiExercises":[{"id":"Kuinka vanha","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Henkilötunnus oikein?","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"Ruutuaika","type":"programming-exercise","parentPagePath":"/osa-7/3-aikojen-kasittely"},{"id":"5602ad2e-213e-5d65-a2ae-56283d90b57d","type":"quiz","parentPagePath":"/osa-7/3-aikojen-kasittely"}]}},{"node":{"id":"8dd0097c-71f3-5cc3-b92d-e39e36b4674d","frontmatter":{"path":"/osa-7/2-satunnaisuus","title":"Satunnaisuus"},"moocfiExercises":[{"id":"Lottonumerot","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 1","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Salasanan arpoja, osa 2","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Noppasimulaatio","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"Satunnaiset sanat","type":"programming-exercise","parentPagePath":"/osa-7/2-satunnaisuus"},{"id":"30ffe369-3fca-5938-b75e-6151ca6ee717","type":"quiz","parentPagePath":"/osa-7/2-satunnaisuus"}]}},{"node":{"id":"a170899b-51c4-500a-95a8-fbf1a45b4fa5","frontmatter":{"path":"/osa-7/4-datan-kasittely","title":"Datan käsittely"},"moocfiExercises":[{"id":"JSON-tiedoston käsittely","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kurssien tilastot","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Kuka huijasi, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"Spellchecker, versio 2","type":"programming-exercise","parentPagePath":"/osa-7/4-datan-kasittely"},{"id":"d4423633-73ba-5c8a-9cf8-1bad619354dd","type":"quiz","parentPagePath":"/osa-7/4-datan-kasittely"}]}},{"node":{"id":"89493aab-a194-58a9-9ae0-cfccfb12dd8f","frontmatter":{"path":"/osa-7/5-omat-moduulit","title":"Oman moduulin tekeminen"},"moocfiExercises":[{"id":"Merkkiapuri","type":"programming-exercise","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"17a3c8a1-ea6d-5225-9d7f-3fc699067be2","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"},{"id":"3d4fe376-f6d3-5628-92ca-4d5096764f4f","type":"quiz","parentPagePath":"/osa-7/5-omat-moduulit"}]}},{"node":{"id":"a52f3741-78aa-55e7-9749-683a9362d9ea","frontmatter":{"path":"/osa-7","title":"Osa 7"},"moocfiExercises":[]}},{"node":{"id":"cca5c192-47a3-570b-a2e7-63f981e8ba44","frontmatter":{"path":"/osa-7/6-lisaa-pythonista","title":"Lisää Pythonista"},"moocfiExercises":[{"id":"Oma ohjelmointikieli","type":"programming-exercise","parentPagePath":"/osa-7/6-lisaa-pythonista"},{"id":"edb3d4c4-6ceb-5ef6-8f03-370aa11fa4bb","type":"quiz","parentPagePath":"/osa-7/6-lisaa-pythonista"}]}},{"node":{"id":"23de8fa7-b885-5b11-a063-3fc42741e096","frontmatter":{"path":"/osa-8/1-oliot-ja-metodit","title":"Oliot ja metodit"},"moocfiExercises":[{"id":"Pienin keskiarvo","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"},{"id":"Rivien summat","type":"programming-exercise","parentPagePath":"/osa-8/1-oliot-ja-metodit"}]}},{"node":{"id":"0fcf5b47-a320-5fc3-8eb5-c77c93995f1e","frontmatter":{"path":"/osa-8/2-luokat-ja-oliot","title":"Luokat ja oliot"},"moocfiExercises":[{"id":"Vuodet listaan","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"},{"id":"Kauppalista","type":"programming-exercise","parentPagePath":"/osa-8/2-luokat-ja-oliot"}]}},{"node":{"id":"e04cf959-b755-5df1-ae81-cb5b094ed338","frontmatter":{"path":"/osa-8/3-omat-luokat","title":"Omat luokat"},"moocfiExercises":[{"id":"Kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Kirjoita luokat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Muodosta lemmikki","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Vanhempi kirja","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"},{"id":"Genren kirjat","type":"programming-exercise","parentPagePath":"/osa-8/3-omat-luokat"}]}},{"node":{"id":"672765b4-e1b6-5d59-add2-33fc62920402","frontmatter":{"path":"/osa-8/4-metodit-omissa-luokissa","title":"Metodit omissa luokissa"},"moocfiExercises":[{"id":"Vähenevä laskuri","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Etu- ja sukunimi","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"},{"id":"Lukutilasto","type":"programming-exercise","parentPagePath":"/osa-8/4-metodit-omissa-luokissa"}]}},{"node":{"id":"494f05d3-5d32-510e-b79f-8742818c82a8","frontmatter":{"path":"/osa-8","title":"Osa 8"},"moocfiExercises":[]}},{"node":{"id":"19313a53-7d8c-57f2-aea2-e64538898f54","frontmatter":{"path":"/osa-9/1-oliot-ja-viittaukset","title":"Oliot ja viittaukset"},"moocfiExercises":[{"id":"Nopein auto","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Hyväksytyt suoritukset","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Kasvatuslaitos","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Maksukortti ja kassapääte","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"},{"id":"Asuntovertailu","type":"programming-exercise","parentPagePath":"/osa-9/1-oliot-ja-viittaukset"}]}},{"node":{"id":"57223003-a5b2-5e23-9fa4-98ea25599eab","frontmatter":{"path":"/osa-9/2-oliot-attribuuttina","title":"Oliot attribuuttina"},"moocfiExercises":[{"id":"Lemmikit","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Lahjapakkaus","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"},{"id":"Huoneen lyhin","type":"programming-exercise","parentPagePath":"/osa-9/2-oliot-attribuuttina"}]}},{"node":{"id":"24d21a8a-566d-52bc-8c02-f78aece7b37e","frontmatter":{"path":"/osa-9/3-kapselointi","title":"Kapselointi"},"moocfiExercises":[{"id":"Auto","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Äänite","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"},{"id":"Säähavaintoasema","type":"programming-exercise","parentPagePath":"/osa-9/3-kapselointi"}]}},{"node":{"id":"a74ac15c-8a52-56a1-b736-e718bc2a46d7","frontmatter":{"path":"/osa-9/4-metodien-nakyvyys","title":"Metodien näkyvyys"},"moocfiExercises":[{"id":"Palvelumaksu","type":"programming-exercise","parentPagePath":"/osa-9/4-metodien-nakyvyys"}]}},{"node":{"id":"178b6864-07cf-5596-b9ad-fdf532e52fe3","frontmatter":{"path":"/osa-9/5-staattiset-piirteet","title":"Staattiset piirteet"},"moocfiExercises":[{"id":"Postinumerot","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"},{"id":"Lista-apuri","type":"programming-exercise","parentPagePath":"/osa-9/5-staattiset-piirteet"}]}},{"node":{"id":"9234bad5-9622-54fe-bea5-1120b0d1c54c","frontmatter":{"path":"/osa-9/6-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Tavara, Matkalaukku ja Lastiruuma","type":"programming-exercise","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"},{"id":"e966cdfa-7abe-55d5-905a-f0a7448ddd11","type":"quiz","parentPagePath":"/osa-9/6-lisaa-esimerkkeja"}]}},{"node":{"id":"90753078-b47d-515c-9f4a-a27f5d6d1071","frontmatter":{"path":"/osa-9","title":"Osa 9"},"moocfiExercises":[]}},{"node":{"id":"af4e225d-efdd-5278-a286-2c889d345dff","frontmatter":{"path":"/osa-8/5-lisaa-esimerkkeja","title":"Lisää esimerkkejä"},"moocfiExercises":[{"id":"Sekuntikello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Kello","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Maksukortti","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"Sarja","type":"programming-exercise","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"},{"id":"82ce577b-1caa-580f-baa7-bb2f14dd63af","type":"quiz","parentPagePath":"/osa-8/5-lisaa-esimerkkeja"}]}}]}},"pageContext":{}}, "staticQueryHashes": ["1357757885","994120085"]} \ No newline at end of file diff --git a/report-issue/index.html b/report-issue/index.html index e7d71e53f..056b43be3 100644 --- a/report-issue/index.html +++ b/report-issue/index.html @@ -134,4 +134,4 @@ } } }) -

    Näin ilmoitat virheen materiaalissa


    Voit ilmoittaa huomaamasi virheen kurssin Github-projekin virheilmoitustaululle. Github on yleinen palvelu, jossa voi hallinnoida ja jakaa muille projekteja, ohjelmistoja ja lähdekoodia.

    Virheiden ilmoittaminen vaatii käyttäjätunnukset Githubiin. Jos sinulla ei ole vielä Github-tunnusta, voit luoda sen täältä

    Ennen kuin avaat uuden virheilmoituksen löytämästäsi virheestä, katsothan täältä ettei siitä ole jo avointa ilmoitusta.


    Luo virheilmoitus näin

    1. Paina yllä olevaa nappia.
    2. Laita ilmoituksen otsikoksi lyhyt ja ytimekäs kuvaus ongelmasta, esimerkiksi "Osan 1 tehtävässä 30 kirjoitusvirhe".
    3. Kirjoita kommenttiosioon tarkempi kuvaus ongelmasta, esimerkiksi "Osan 1 tehtävän 30 esimerkkitulosteessa on kirjoitusvirhe. Esimerkkitulosteen ylläoleva koodi sisältää rivin System.out.println("Syötä liukuluku");, mutta esimerkkitulosteessa lukee "Juota liukuluku"".
    4. Paina lopuksi vihreää nappia "Submit new issue".

    Saatamme kysyä ilmoituksestasi tarkentavia kysymyksiä, jos emme osaa korjata ongelmaa ilman apuasi. Näistä kysymyksistä pitäisi tulla sähköposti-ilmoitus siihen osoitteeseen, jonka liitit Github-tunnukseesi.

    Kiitos kun autat meitä parantamaan materiaaleja!

    \ No newline at end of file +

    Näin ilmoitat virheen materiaalissa


    Voit ilmoittaa huomaamasi virheen kurssin Github-projekin virheilmoitustaululle. Github on yleinen palvelu, jossa voi hallinnoida ja jakaa muille projekteja, ohjelmistoja ja lähdekoodia.

    Virheiden ilmoittaminen vaatii käyttäjätunnukset Githubiin. Jos sinulla ei ole vielä Github-tunnusta, voit luoda sen täältä

    Ennen kuin avaat uuden virheilmoituksen löytämästäsi virheestä, katsothan täältä ettei siitä ole jo avointa ilmoitusta.


    Luo virheilmoitus näin

    1. Paina yllä olevaa nappia.
    2. Laita ilmoituksen otsikoksi lyhyt ja ytimekäs kuvaus ongelmasta, esimerkiksi "Osan 1 tehtävässä 30 kirjoitusvirhe".
    3. Kirjoita kommenttiosioon tarkempi kuvaus ongelmasta, esimerkiksi "Osan 1 tehtävän 30 esimerkkitulosteessa on kirjoitusvirhe. Esimerkkitulosteen ylläoleva koodi sisältää rivin System.out.println("Syötä liukuluku");, mutta esimerkkitulosteessa lukee "Juota liukuluku"".
    4. Paina lopuksi vihreää nappia "Submit new issue".

    Saatamme kysyä ilmoituksestasi tarkentavia kysymyksiä, jos emme osaa korjata ongelmaa ilman apuasi. Näistä kysymyksistä pitäisi tulla sähköposti-ilmoitus siihen osoitteeseen, jonka liitit Github-tunnukseesi.

    Kiitos kun autat meitä parantamaan materiaaleja!

    \ No newline at end of file diff --git a/sanasto/index.html b/sanasto/index.html index aa8d0bf61..694075161 100644 --- a/sanasto/index.html +++ b/sanasto/index.html @@ -137,4 +137,4 @@ } } }) -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/sign-in/index.html b/sign-in/index.html index 951e2c436..7faaffb45 100644 --- a/sign-in/index.html +++ b/sign-in/index.html @@ -140,4 +140,4 @@ } } }) -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/sign-up/index.html b/sign-up/index.html index def00bfd6..2c2285b83 100644 --- a/sign-up/index.html +++ b/sign-up/index.html @@ -140,4 +140,4 @@ } } }) -

    Luo käyttäjätunnus

    Tämä kurssi käyttää mooc.fi käyttäjätunnuksia. Jos olet aikaisemmin tehnyt mooc.fi -kursseja, voit käyttää sisäänkirjautumissivulla olemassaolevia tunnuksiasi. Tällä sivulla voit luoda uuden tunnuksen, joka toimii suurimmassa osassa mooc.fi:n kursseissa ja palveluissa.
    \ No newline at end of file +

    Luo käyttäjätunnus

    Tämä kurssi käyttää mooc.fi käyttäjätunnuksia. Jos olet aikaisemmin tehnyt mooc.fi -kursseja, voit käyttää sisäänkirjautumissivulla olemassaolevia tunnuksiasi. Tällä sivulla voit luoda uuden tunnuksen, joka toimii suurimmassa osassa mooc.fi:n kursseissa ja palveluissa.
    \ No newline at end of file diff --git a/tuki/index.html b/tuki/index.html index 70ee16a59..24dfb8967 100644 --- a/tuki/index.html +++ b/tuki/index.html @@ -225,4 +225,4 @@

    Discord

    Discord on viestintäsovellus, josta saat lisätietoa täältä.

    Löydät kurssin kanavat täältä.

    -

    Ohjausaikana ohjaaja päivystää kurssikanavilla ja vastaa myös yksityisviesteihin. Discordissa käydään keskustelua kurssista myös ohjausaikojen ulkopuolella, joten sinne kannattaa liittyä!

    \ No newline at end of file +

    Ohjausaikana ohjaaja päivystää kurssikanavilla ja vastaa myös yksityisviesteihin. Discordissa käydään keskustelua kurssista myös ohjausaikojen ulkopuolella, joten sinne kannattaa liittyä!

    \ No newline at end of file diff --git a/usein-kysytyt-kysymykset/index.html b/usein-kysytyt-kysymykset/index.html index c8ac45393..0b817e5d0 100644 --- a/usein-kysytyt-kysymykset/index.html +++ b/usein-kysytyt-kysymykset/index.html @@ -165,4 +165,4 @@

    Kela haluaa minulta todistuksen opiskelustani

    Ohjaa Kela tälle sivulle:

    Ohjelmoinnin perusteet on kaikille avoin ja ilmainen verkkokurssi. Kurssin käymistä voi verrata kirjan lainaamiseen kirjastosta. Kirjastosta lainattava kirja saattaa liittyä johonkin yliopisto-opintoihin liittyvään kurssiin. Aivan samalla tavalla kuin kirjastosta lainattava kirja, verkkokurssimme on luettavissa huvin ja itsensä sivistämisen vuoksi tai yliopisto-opintojen edistämiseksi.

    -

    Ohjelmoinnin perusteet vastaa Helsingin yliopiston 5 opintopisteen kurssia. Kurssin suorittajat eivät kuitenkaan automaattisesti ole Helsingin yliopiston opiskelijoita, emmekä pakota ketään suorittamaan kurssia opintopisteisiin johtavassa muodossa. Kurssin suorittamisesta voi kuitenkin halutessaan saada opintopisteitä. Kurssille osallistuminen ei oikeuta opintotukeen.

    \ No newline at end of file +

    Ohjelmoinnin perusteet vastaa Helsingin yliopiston 5 opintopisteen kurssia. Kurssin suorittajat eivät kuitenkaan automaattisesti ole Helsingin yliopiston opiskelijoita, emmekä pakota ketään suorittamaan kurssia opintopisteisiin johtavassa muodossa. Kurssin suorittamisesta voi kuitenkin halutessaan saada opintopisteitä. Kurssille osallistuminen ei oikeuta opintotukeen.

    \ No newline at end of file diff --git a/verkkotentti-ohja/index.html b/verkkotentti-ohja/index.html index 6ea79f414..3cf3777bd 100644 --- a/verkkotentti-ohja/index.html +++ b/verkkotentti-ohja/index.html @@ -192,4 +192,4 @@
  • Tenttivastaukset tarkistetaan plagoinnintunnistusohjelmalla. Huijaus johtaa aina vähintään tenttisuorituksen hylkäämiseen, mahdollisesti myös kurssilta poistamiseen.
  • Tenttikysymykset muistuttavat kurssimateriaalin tehtäviä - tenttiin valmistautumiseksi kannattaa siis kertailla materiaalia.
  • Kurssin tulokset tulevat kokeen jälkeen sähköpostitse opintopisteohjeiden kera.
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/verkkotentti-ohpe/index.html b/verkkotentti-ohpe/index.html index e319ec169..6cb36301e 100644 --- a/verkkotentti-ohpe/index.html +++ b/verkkotentti-ohpe/index.html @@ -192,4 +192,4 @@
  • Tenttivastaukset tarkistetaan plagoinnintunnistusohjelmalla. Huijaus johtaa aina vähintään tenttisuorituksen hylkäämiseen, mahdollisesti myös kurssilta poistamiseen.
  • Tenttikysymykset muistuttavat kurssimateriaalin tehtäviä - tenttiin valmistautumiseksi kannattaa siis kertailla materiaalia.
  • Kurssin tulokset tulevat kokeen jälkeen sähköpostitse opintopisteohjeiden kera.
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/verkkotentti/index.html b/verkkotentti/index.html index baae06315..593e41708 100644 --- a/verkkotentti/index.html +++ b/verkkotentti/index.html @@ -192,4 +192,4 @@
  • Tenttivastaukset tarkistetaan plagoinnintunnistusohjelmalla. Huijaus johtaa aina vähintään tenttisuorituksen hylkäämiseen, mahdollisesti myös kurssilta poistamiseen.
  • Tenttikysymykset muistuttavat kurssimateriaalin tehtäviä - tenttiin valmistautumiseksi kannattaa siis kertailla materiaalia.
  • Kurssin tulokset tulevat kokeen jälkeen sähköpostitse opintopisteohjeiden kera.
  • -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/virheilmoitukset/index.html b/virheilmoitukset/index.html index d51cdecc3..678377348 100644 --- a/virheilmoitukset/index.html +++ b/virheilmoitukset/index.html @@ -174,4 +174,4 @@

    print(ika//2) # virhe: muuttujaa ika ei ole muutettu kokonaisluvuksi

    TypeError: cannot concatenate 'str' and 'int' objects on line [rivinumero]

    -

    Katso ylempi kohta.

    \ No newline at end of file +

    Katso ylempi kohta.

    \ No newline at end of file